最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

基于MySQL數(shù)據(jù)庫的數(shù)據(jù)約束實(shí)例及五種完整性約束介紹

 更新時(shí)間:2019年01月04日 09:33:37   作者:李西召  
今天小編就為大家分享一篇關(guān)于基于MySQL數(shù)據(jù)庫的數(shù)據(jù)約束實(shí)例及五種完整性約束介紹,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧

為了防止不符合規(guī)范的數(shù)據(jù)進(jìn)入數(shù)據(jù)庫,在用戶對(duì)數(shù)據(jù)進(jìn)行插入、修改、刪除等操作時(shí),DBMS自動(dòng)按照一定的約束條件對(duì)數(shù)據(jù)進(jìn)行監(jiān)測,使不符合規(guī)范的數(shù)據(jù)不能進(jìn)入數(shù)據(jù)庫,以確保數(shù)據(jù)庫中存儲(chǔ)的數(shù)據(jù)正確、有效、相容。

#數(shù)據(jù)約束

#五種完整性約束:
#NOT NULL :非空約束,指定某列不能為空;
#UNIQUE : 唯一約束,指定某列或者幾列組合不能重復(fù)
#PRIMARY KEY :主鍵,指定該列的值可以唯一地標(biāo)識(shí)該列記錄
#FOREIGN KEY :外鍵,指定該行記錄從屬于主表中的一條記錄,主要用于參照完整性
#CHECK :檢查,指定一個(gè)布爾表達(dá)式,用于指定對(duì)應(yīng)的值必須滿足該表達(dá)式(mysql不支持check約束)
#--------------------------------NOT NULL 非空約束 ---------------------------
create table test4
(
  #建立非空約束
id int not null,
name varchar(55) default 'ABCD' not null,
#默認(rèn)值就是null
age int null
);
#取消非空約束
 alter table test4
 modify name varchar(55) default 'ABCD' not null,
#增加非空約束
 alter table test4
 modify age int not null;
#--------------------------------UNIQUE : 唯一約束--------------------------------
#列級(jí)約束語法建立約束
 create table test_unique
 (
 #建立行級(jí)唯一約束
 id int not null unique,
 age int
 );
 #表級(jí)約束語法格式
 create table unique_test3
 (
test6_id int not null,
test6_name varchar(255),
test6_pass varchar(255),
#使用表級(jí)約束語法建立唯一約束,指定test6_id和test6_name兩列組合不能重復(fù)
constraint test6_unique unique(test6_id,test6_name),
#使用表級(jí)約束語法建立唯一約束,約束名為test6_unique_2,test6_pass不能重復(fù)
constraint test6_unique_2 unique(test6_pass)
 );
 #add關(guān)鍵字增加唯一約束
 alter table test4
 add unique(id,name,age);
 #modify關(guān)鍵字刪除或者增加唯一約束
 alter table test4
 modify age varchar(255) not null;
 alter table test4
 modify age varchar(255) not null unique;
 #對(duì)大部分?jǐn)?shù)據(jù)庫而言,刪除約束使用: alter table 表名 drop constraint 約束名
 #但是Mysql不采取此方式,而是: alter table 表名 drop index 約束名
 #--------------------------------PRIMARY KEY : 主鍵約束--------------------------------
 #主鍵約束相當(dāng)于非空約束和唯一約束。
 #每個(gè)表只允許擁有一個(gè)主鍵,但是這個(gè)主鍵可以由多個(gè)數(shù)據(jù)列組成,這些列組合不能重復(fù)
 #標(biāo)準(zhǔn)SQL允許給主鍵自行命名,但是對(duì)于Mysql來說自己的名字沒有任何作用,總是默認(rèn)名為PRIMARY
 create table primary_test
 (
#使用列級(jí)語法建立主鍵約束
test_id int primary key,
test_name varchar(255)
 );
 #使用表級(jí)語法建立主鍵約束
 create table primary_test2
 (
test_id int not null,
test_name varchar(255),
test_pass varchar(255),
#指定主鍵約束名為test2_pk,對(duì)大部分?jǐn)?shù)據(jù)庫有效,但是對(duì)mysql無效,此主鍵約束名仍為PRIMARY
constraint test2_pk primary key (test_id)
 );
 #以多列組合創(chuàng)立主鍵
 create table primary_test3
 (
test_id int,
test_name varchar(255),
primary key(test_id,test_name)
 );
 #使用列級(jí)約束語法
 alter table primary_test3
 modify test_id int primary key();
 #使用表級(jí)約束語法
 alter table primary_test3
 add primary key(test_id,test_name);
 #刪除主鍵約束:alter table 表名 drop primary key;
 #主鍵列自增長特性:如果某個(gè)數(shù)據(jù)列的類型是整型,而且該列作為主鍵列,則可指定該列具有自增長功能
 #mysql使用auto_increment來設(shè)置自增長,向該表插入記錄時(shí)可不為該列指定值,由系統(tǒng)生成
  create table primary_test3
 (
//建立主鍵約束、設(shè)置自增長
test_id int auto_increment primary key,
test_name varchar(255)
 );
 #外鍵約束 FOREIGN KEY
 #Mysql中只有表級(jí)語法建立的外鍵約束才可以生效
 #為保證參照主表的存在,先建立主表
 create table teacher_tb
 (
t_id int auto_increment,
t_name varchar(255),
primary key(t_id)
 );
 create table student_tb
 (
s_id int auto_increment primary key,
s_name varchar(255) not null,
t_java int,
foreign key(t_java) references teacher_tb(t_id)
 );
#如果使用表級(jí)約束語法,則需要使用foreign key指定本表的外鍵列,如果創(chuàng)建外鍵約束時(shí)沒有指定約束名,
#則mysql會(huì)為該外鍵約束命名為table_name_ibfk_n,其中table_name是從表的表名,n是從1開始的整數(shù)
 create table teacher_tb2
 (
t_id int auto_increment,
t_name varchar(255),
primary key(t_id)
 );
 create table student_tb2
 (
s_id int auto_increment primary key,
s_name varchar(255) not null,
t_java int,
constraint student_teacher_fk foreign key(t_java) references teacher_tb2(t_id)
 );
 #建立多列組合外鍵約束
 create table teacher_tb5
 (
t_name varchar(255),
t_pass varchar(255),
primary key(t_name,t_pass)
 );
 create table student_tb5
 (
s_id int auto_increment primary key,
s_name varchar(255) not null,
t_java_pass varchar(255),
t_java_name varchar(255),
foreign key(t_java_name,t_java_pass) 
  references teacher_tb5(t_name,t_pass)
 );
 #刪除外鍵約束
 alter table student_tb2
 drop foreign key student_teacher_fk;
 #增加外鍵約束
 alter table student_tb2
 add foreign key(t_java) references teacher_tb2(t_id);
 #外鍵約束參照自身,自約束
 create table foreign_test9
 (
foreign_id int auto_increment primary key,
foreign_name varchar(255),
refer_id int,
foreign key(refer_id) references foreign_test9(foreign_id)
 );
 #定義當(dāng)刪除主表記錄時(shí),從表記錄也隨之刪除
 #on delete cascade 把參照該主表記錄的從表記錄全部級(jí)聯(lián)刪除
 #on delete set null 把參照該主表記錄的從表記錄從表設(shè)為null        e
 create table teacher_tb8
 (
t_id int auto_increment,
t_name varchar(255),
primary key(t_id)
 );
 create table student_tb8
 (
s_id int auto_increment primary key,
s_name varchar(255) not null,
t_java int,
constraint student_teacher_fk foreign key(t_java) references teacher_tb8(t_id) on delete cascade
 );

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請查看下面相關(guān)鏈接

相關(guān)文章

  • MySQL  Lock wait timeout exceeded錯(cuò)誤解決

    MySQL  Lock wait timeout exceeded錯(cuò)誤

    “Lock wait timeout exceeded” 是一個(gè)常見的MySQL錯(cuò)誤,指示了潛在的性能問題或死鎖,本文就來介紹一下如何解決,感興趣的可以了解一下
    2024-05-05
  • 運(yùn)維角度淺談MySQL數(shù)據(jù)庫優(yōu)化(李振良)

    運(yùn)維角度淺談MySQL數(shù)據(jù)庫優(yōu)化(李振良)

    一個(gè)成熟的數(shù)據(jù)庫架構(gòu)并不是一開始設(shè)計(jì)就具備高可用、高伸縮等特性的,它是隨著用戶量的增加,基礎(chǔ)架構(gòu)才逐漸完善。這篇博文主要談MySQL數(shù)據(jù)庫發(fā)展周期中所面臨的問題及優(yōu)化方案
    2015-07-07
  • MySQL定期分析檢查與優(yōu)化表的方法小結(jié)

    MySQL定期分析檢查與優(yōu)化表的方法小結(jié)

    聽DBA的人說,相比oracle,MySQL就是一個(gè)玩具級(jí)別的數(shù)據(jù)庫,在網(wǎng)易門戶中,DBA基本很少去管理到MySQL的東西,所以我們產(chǎn)品使用到的MySQL的一些配置和優(yōu)化還是需要我們開發(fā)人員自己動(dòng)手,下面就簡單介紹一下實(shí)用的定期優(yōu)化方法
    2014-06-06
  • mysql如何設(shè)置表中字段為當(dāng)前時(shí)間

    mysql如何設(shè)置表中字段為當(dāng)前時(shí)間

    這篇文章主要介紹了mysql如何設(shè)置表中字段為當(dāng)前時(shí)間問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • 常用的SQL例句 數(shù)據(jù)庫開發(fā)所需知識(shí)

    常用的SQL例句 數(shù)據(jù)庫開發(fā)所需知識(shí)

    常用的SQL例句全部懂了,你的數(shù)據(jù)庫開發(fā)所需知識(shí)就夠用了
    2011-11-11
  • MySQL模糊查詢用法大全(正則、通配符、內(nèi)置函數(shù))

    MySQL模糊查詢用法大全(正則、通配符、內(nèi)置函數(shù))

    這篇文章主要介紹了MySQL模糊查詢用法大全(正則、通配符、內(nèi)置函數(shù)),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • 巧用mysql提示符prompt清晰管理數(shù)據(jù)庫的方法

    巧用mysql提示符prompt清晰管理數(shù)據(jù)庫的方法

    隨著管理mysql服務(wù)器越來越多,同樣的mysql>的提示符有可能會(huì)讓你輸入錯(cuò)誤的命令到錯(cuò)誤的數(shù)據(jù)庫,這時(shí)候需要巧用mysql的提示符,這是我的提示符root@localhost(mysql) 08:55:21> 用prompt命令實(shí)現(xiàn)(適用于windows和linux環(huán)境)
    2009-08-08
  • 使用python連接mysql數(shù)據(jù)庫之pymysql模塊的使用

    使用python連接mysql數(shù)據(jù)庫之pymysql模塊的使用

    這篇文章主要介紹了使用python連接mysql數(shù)據(jù)庫之pymysql模塊的使用,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-09-09
  • mysql處理添加外鍵時(shí)提示error 150 問題的解決方法

    mysql處理添加外鍵時(shí)提示error 150 問題的解決方法

    當(dāng)你試圖在mysql中創(chuàng)建一個(gè)外鍵的時(shí)候,這個(gè)出錯(cuò)會(huì)經(jīng)常發(fā)生,這是非常令人沮喪的
    2011-11-11
  • MySQL快速插入一億測試數(shù)據(jù)

    MySQL快速插入一億測試數(shù)據(jù)

    本文主要介紹了MySQL快速插入一億測試數(shù)據(jù),有時(shí)候測試需要大量的數(shù)據(jù),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-06-06

最新評(píng)論

宜君县| 息烽县| 宜宾市| 青铜峡市| 淮北市| 修文县| 沽源县| 万安县| 昆明市| 化隆| 花垣县| 文水县| 肃宁县| 成武县| 双辽市| 察隅县| 东阿县| 昌宁县| 胶南市| 青神县| 四子王旗| 南康市| 安远县| 南木林县| 麟游县| 临清市| 吉木乃县| 兴和县| 上栗县| 榆中县| 万州区| 如皋市| 贵南县| 吴桥县| 巍山| 方正县| 东乌珠穆沁旗| 南昌市| 库伦旗| 卢龙县| 隆德县|