MySQL資料庫操作(4)資料表條件約束

來源:互聯網
上載者:User

標籤:拒絕   rem   建立   uniq   建表   mys   nbsp   報錯   完整   

MySQL資料庫操作(4)資料表條件約束

在建立表或者插入列時,可以對列的值進行約束,當插入條目時如果不符合約束,將會報錯,拒絕插入。

非空約束
`NOT NULL` 欄位值不可為空
例:

#建立表時添加非空約束CREATE TABLE tb1( id INT, name VARCHAR(20) NOT NULL );INSERT INTO tb1(id) VALUE(1); # 報錯,沒有傳入name#注意:在mysql 裡面,‘‘ 不等於null#修改表添加非空約束ALTER TABLE tb1 MODIFY id INT NOT NULL;#取消非空約束ALTER TABLE tb1 MODIFY id INT;

 

唯一約束
`UNIQUE KEY` 確保欄位中的值的唯一
例:

#建立表時添加唯一約束CREATE TABLE tb2(id INT NOT NULL UNIQUE KEY, name VARCHAR(20) NOT NULL);INSERT INTO tb2 VALUE(1,‘張三‘);INSERT INTO tb2 VALUE(1,‘李四‘); # 報錯,id欄位的值有重複#修改表添加唯一約束ALTER TABLE `tb2` ADD UNIQUE KEY(`name`);#刪除唯一約束ALTER TABLE tb2 DROP KEY name;#聯合唯一約束ALTER TABLE tb2 ADD aa INT, add bb INT;ALTER TABLE tb2 ADD UNIQUE KEY (aa,bb);INSERT INTO tb2 VALUE(4,‘佳能‘,1,2);INSERT INTO tb2 VALUE(5,‘哈哈‘,1,2); # 報錯,(aa,bb)聯合欄位有重複#刪除聯合唯一SHOW CREATE TABLE tb2; #查看約束名ALTER TABLE tb2 DROP KEY aa; #通過約束名刪除約束,聯合約束預設名為聯合列中的第一列

 

主鍵約束
`PRIMARY KEY ` == `NOT NULL + UNIQUE KEY`
主鍵保證記錄的唯一性, 唯一標識每一條資料
主鍵自動為`NOT NULL`
每張資料表只能存在一個主鍵
當一張表裡沒有一個主鍵的時候,第一個出現的非空且為唯一的列被視為有主鍵。
例:

#建立表時添加主鍵約束CREATE TABLE tb3( id INT PRIMARY KEY,name VARCHAR(20) NOT NULL);#刪除主鍵約束ALTER TABLE tb3 DROP PRIMARY KEY;#添加主鍵約束ALTER TABLE tb3 ADD PRIMARY KEY(id);#聯合主鍵CREATE TABLE tb4(id_a INT , id_b INT, content VARCHAR(20), PRIMARY KEY(id_a,id_b) );#添加聯合主鍵ALTER TABLE tb4 ADD PRIMARY KEY(id_a,id_b);

 

自增長
`AUTO_INCREMENT `自動編號,一般與主鍵組合使用。一個表裡面只有一個自增
預設情況下,起始值為1,每次的增量為1。
當插入記錄時,如果為`AUTO_INCREMENT`資料列明確指定了一個數值,則會出現兩種情況,
情況一,如果插入的值與已有的編號重複,則會出現出錯資訊,因為AUTO_INCREMENT資料列的值必須是唯一的;
情況二,如果插入的值大於已編號的值,則會把該插入到資料列中,並使在下一個編號將從這個新值開始遞增。也就是說,可以跳過一些編號。如果自增序列的最大值被刪除了,則在插入新記錄時,該值被重用。(可以調大,不可以縮小)
例:

#建立表時添加自增長CREATE TABLE tb5( id INT PRIMARY KEY AUTO_INCREMENT,name VARCHAR(20))AUTO_INCREMENT =100; # 如果不寫,預設從1開始#刪除自動成長ALTER TABLE tb5 MODIFY id INT;#修改表添加自動成長ALTER TABLE tb5 MODIFY id INT AUTO_INCREMENT;

 

預設約束
`DEFAULT `初始值設定,插入記錄時,如果沒有明確為欄位賦值,則自動賦予預設值。
例:

#建立表時添加預設約束CREATE TABLE tb6(id INT PRIMARY KEY AUTO_INCREMENT,name VARCHAR(20) NOT NULL,age INT NOT NULL DEFAULT 18);#刪除預設約束ALTER TABLE tb6 MODIFY age INT NOT NULL;ALTER TABLE tb6 ALTER age DROP DEFAULT;#添加預設約束ALTER TABLE tb6 MODIFY age INT DEFAULT 20;ALTER TABLE tb6 ALTER age SET DEFAULT 21;

 

外鍵約束
外鍵約束`FOREIGN KEY`,保持資料一致性,完整性實現一對一或一對多關聯性。
外鍵約束的要求:
資料表的儲存引擎只能為InnoDB
外鍵列和參照列資料類型一致
外鍵必須關聯到鍵上面去,一般情況是關聯到,另一張表的主鍵
例:

#建立表時添加外鍵約束CREATE TABLE `a`( a_id INT PRIMARY KEY,a_name VARCHAR(20) NOT NULL);CREATE TABLE `b`(b_id INT PRIMARY KEY,b_name VARCHAR(20) NOT NULL,fy_id INT NOT NULL,CONSTRAINT AB_id FOREIGN KEY(fy_id) REFERENCES `a`(a_id)); #AB_id是外鍵的別名,如果沒有別名則無法刪除該外鍵,fy_id是本表中要關聯的列,`a`(a_id)是關聯到a表的a_id列,fy_id的取值必須在a表中的a_id列中出現過才能用。#刪除外鍵ALTER TABLE `b` DROP FOREIGN KEY AB_id;#增加外鍵ALTER TABLE `b` add CONSTRAINT AB_id FOREIGN KEY(fy_id) REFERENCES `a`(a_id);

 

MySQL資料庫操作(4)資料表條件約束

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.