mysql数据库入门教程(9):数据的常见约束
在創(chuàng)建表的時候,我們可以給數(shù)據(jù)指定約束。
常見約束
含義:一種限制,用于限制表中的數(shù)據(jù),為了保證表中的數(shù)據(jù)的準(zhǔn)確和可靠性
添加約束的時機(jī):
1.創(chuàng)建表時
2.修改表時
約束的添加分類:
列級約束:
六大約束語法上都支持,但外鍵約束沒有效果
表級約束:
除了非空、默認(rèn),其他的都支持
CREATE TABLE 表名(
字段名 字段類型 列級約束,
字段名 字段類型,
表級約束
)
一.創(chuàng)建表時添加約束
1.添加列級約束
/*
語法:
直接在字段名和類型后面追加 約束類型即可。
只支持:默認(rèn)、非空、主鍵、唯一
*/
找到表,點擊改變表
得到
2.添加表級約束
/*
語法:在各個字段的最下面
【constraint 約束名】 約束類型(字段名)
*/
pk,uq ck 是約束名 自己隨便取, CONSTRAINT 和名字可以不要
PRIMARY KEY(id),#主鍵UNIQUE(seat),#唯一鍵CHECK(gender ='男' OR gender = '女'),#檢查FOREIGN KEY(majorid) REFERENCES查看結(jié)果:
SHOW INDEX FROM stuinfo;
3.什么時候用列級 什么時候用表級
通用寫法
列級約束和表級約束一起寫,除外鍵用表級約束外,其他全寫在列級約束上
CREATE TABLE IF NOT EXISTS stuinfo(id INT PRIMARY KEY,stuname VARCHAR(20),sex CHAR(1),age INT DEFAULT 18,seat INT UNIQUE,majorid INT,CONSTRAINT fk_stuinfo_major FOREIGN KEY(majorid) REFERENCES major(id)#外鍵);二.主鍵和唯一的區(qū)別
三.外鍵的特點
外鍵:
1、要求在從表設(shè)置外鍵關(guān)系
2、從表的外鍵列的類型和主表的關(guān)聯(lián)列的類型要求一致或兼容,名稱無要求
3、主表的關(guān)聯(lián)列必須是一個key(一般是主鍵或唯一)
4、插入數(shù)據(jù)時,先插入主表,再插入從表
刪除數(shù)據(jù)時,先刪除從表,再刪除主表
四.修改表時添加約束
1、添加列級約束
alter table 表名 modify column 字段名 字段類型 新約束;
modify:修改
2、添加表級約束
alter table 表名 add 【constraint 約束名】 約束類型(字段名) 【外鍵的引用】;
例子
#1.添加非空約束 ALTER TABLE stuinfo MODIFY COLUMN stuname VARCHAR(20) NOT NULL; #2.添加默認(rèn)約束 ALTER TABLE stuinfo MODIFY COLUMN age INT DEFAULT 18; #3.添加主鍵 #①列級約束 ALTER TABLE stuinfo MODIFY COLUMN id INT PRIMARY KEY; #②表級約束 ALTER TABLE stuinfo ADD PRIMARY KEY(id);#4.添加唯一#①列級約束 ALTER TABLE stuinfo MODIFY COLUMN seat INT UNIQUE; #②表級約束 ALTER TABLE stuinfo ADD UNIQUE(seat);#5.添加外鍵 ALTER TABLE stuinfo ADD CONSTRAINT fk_stuinfo_major FOREIGN KEY(majorid) REFERENCES major(id);五.修改表時刪除約束
#1.刪除非空約束
ALTER TABLE stuinfo MODIFY COLUMN stuname VARCHAR(20) NULL;#2.刪除默認(rèn)約束
ALTER TABLE stuinfo MODIFY COLUMN age INT ;#3.刪除主鍵
ALTER TABLE stuinfo MODIFY COLUMN id INT; 或者 ALTER TABLE stuinfo DROP PRIMARY KEY;#4.刪除唯一
ALTER TABLE stuinfo MODIFY COLUMN seat INT;或者 ALTER TABLE stuinfo DROP INDEX seat;#5.刪除外鍵
ALTER TABLE stuinfo DROP FOREIGN KEY fk_stuinfo_major;
電氣專業(yè)的計算機(jī)萌新,寫博文不容易。如果你覺得本文對你有用,請點個贊支持下,謝謝。
總結(jié)
以上是生活随笔為你收集整理的mysql数据库入门教程(9):数据的常见约束的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 青椒肉丝面怎么做?
- 下一篇: 开一家肥兔公社鲜兔火锅都需要做哪些准备呀