Mysql中的SQL約束Constraint有哪幾種
常用約束
- 非空約束(not null):約束的字段不能為NULL;只有列級(jí)約束,沒有表級(jí)約束(也就是說,只能約束某個(gè)字段值不為空);
- 唯一約束(unique):約束的字段不能重復(fù);既有列級(jí)約束,也有表級(jí)約束;
- 主鍵約束(primary key):約束的字段既不能為NULL,也不能重復(fù)(簡稱PK);既有列級(jí)約束,也有表級(jí)約束;
- 外鍵約束(foreign key):...(簡稱FK);
- 檢查約束(check):注意Oracle數(shù)據(jù)庫有check約束,但是mysql沒有,目前mysql不支持該約束;
not null
只有列級(jí)約束,沒有表級(jí)約束(也就是說,只能約束某個(gè)字段值不為空);
create table t_student( student_name varchar(25) not null, )
unique
既有列級(jí)約束,也有表級(jí)約束; unique約束修飾的字段具有唯一性,不能重復(fù)。 但可以是NULL,NULL不是值,所以多個(gè)NULL不是重復(fù)
列級(jí)約束
create table t_user( id int, username varchar(255) unique );
多個(gè)字段聯(lián)合起來添加1個(gè)約束unique 【表級(jí)約束】
create table t_user( id int, usercode varchar(255), username varchar(255), unique(usercode,username) );
主鍵約束
primary key:既有列級(jí)約束,也有表級(jí)約束; 主鍵相關(guān)的術(shù)語?
主鍵約束 : primary key
主鍵字段 : id字段添加primary key之后,id叫做主鍵字段
主鍵值 : id字段中的每一個(gè)值都是主鍵值。
主鍵特點(diǎn):不能為NULL,也不能重復(fù) 一張表的主鍵約束只能有一個(gè); 有表級(jí)約束也有列級(jí)約束
表級(jí)約束
create table t_user( id int, username varchar(255), primary key(id) );
列級(jí)約束
create table t_student() student_id int(10) primary key, student_name varchar(20) not null, sex char(2) default 'm', birthday date, email varchar(30) , classes_id int(3) )
主鍵值自增
drop table if exists t_user; create table t_user( id int primary key auto_increment, username varchar(255) );
外鍵約束
關(guān)于外鍵約束的相關(guān)術(shù)語:
- 外鍵約束: foreign key
- 外鍵字段:添加有外鍵約束的字段
- 外鍵值:外鍵字段中的每一個(gè)值。
外鍵可以為NULL;
如果表中某個(gè)字段為外鍵字段,則該字段的值必須來源參照表的主鍵;
外鍵主要是維護(hù)表之間的關(guān)系的,主要是為了保證參照完整性,如果表中的某個(gè)字段為外鍵字段,那么該字段的值必須來源于參照的表的主鍵。
順序要求:
- 刪除數(shù)據(jù)的時(shí)候,先刪除子表,再刪除父表。
- 添加數(shù)據(jù)的時(shí)候,先添加父表,在添加子表。
- 創(chuàng)建表的時(shí)候,先創(chuàng)建父表,再創(chuàng)建子表。
- 刪除表的時(shí)候,先刪除子表,在刪除父表。
create table t_class( cno int, cname varchar(255), primary key(cno) ); create table t_student( sno int, sname varchar(255), classno int, primary key(sno), foreign key(classno) references t_class(cno) );
- 級(jí)聯(lián)更新與級(jí)聯(lián)刪除 父表中的數(shù)據(jù)更改,子表中的數(shù)據(jù)也會(huì)跟著變動(dòng)。
- 父表中的數(shù)據(jù)刪除,子表中的數(shù)據(jù)也會(huì)刪除。
到此這篇關(guān)于Mysql中的SQL約束Constraint有哪幾種的文章就介紹到這了,更多相關(guān)Mysql的Constraint約束內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Mysql插入帶有引號(hào)的字符串?dāng)?shù)據(jù)最佳實(shí)踐
在MySQL中可以使用單引號(hào)或雙引號(hào)來包裹字符串,下面這篇文章主要給大家介紹了關(guān)于Mysql插入帶有引號(hào)的字符串?dāng)?shù)據(jù)的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-01-01Mysql數(shù)據(jù)庫清理binlog日志命令詳解
這篇文章主要給大家介紹了Mysql數(shù)據(jù)庫清理binlog日志命令的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Mysql具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09Ubuntu與windows雙系統(tǒng)下共用MySQL數(shù)據(jù)庫的方法
ubuntu系統(tǒng)和windows系統(tǒng)雙系統(tǒng)共用是用戶喜歡使用的方式之一,而MySQL是一個(gè)小型關(guān)系型數(shù)據(jù)庫管理系統(tǒng),在Windows平臺(tái)中常以WAMP方式搭配使用,在Linux平臺(tái)中常以LAMP組合形式出現(xiàn),下面的方法可以使得Ubuntu平臺(tái)共用Windows平臺(tái)中的MySQL數(shù)據(jù)庫2012-01-01mysql添加索引方法詳解(Navicat可視化加索引與sql語句加索引)
索引用來快速地尋找那些具有特定值的記錄,如果沒有索引,執(zhí)行查詢時(shí)MySQL必須從第一個(gè)記錄開始掃描整個(gè)表的所有記錄,直至找到符合要求的記錄,表里面的記錄數(shù)量越多,代價(jià)就越高,下面這篇文章主要給大家介紹了關(guān)于mysql添加索引的相關(guān)資料,需要的朋友可以參考下2022-11-11linux系統(tǒng)ubuntu18.04安裝mysql 5.7
這篇文章主要為大家詳細(xì)介紹了linux系統(tǒng)ubuntu18.04安裝mysql 5.7,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-09-09