創建表的時候可以給欄位添加相應的約束,約束的目的:保證表中資料的合法性,唯一性,有效性,
非空約束(not null):約束欄位不能為NULL
唯一約束(unique):約束欄位不能重復
主鍵約束(primary key):約束欄位既不能為NULL也不能重復
外鍵約束(foreign key):阿里巴巴手冊,已經禁止使用外鍵了
檢查f約束(check):Oracle資料庫有check約束,但是Mysql沒有,
注意:我們主要還是記住英文,平時使用的都是英文!
1.非空約束 not null
CREATE TABLE mytable( id INT(10), username VARCHAR(30) NOT NULL, #添加非空約束 PASSWORD VARCHAR(30) );
測驗
insert into mytable(id,password) values(1,'123') ; #由于我們的的用戶欄位要求非空,所以會執行失敗 ERROR 1364(HY000) : Filed 'username' doesn't have a default value
2.唯一約束(unique)
測驗

列級約束
測驗

表級約束
測驗

3.主鍵約束(primary key) *
必須記住:一張表的主鍵約束只有一個 ;最好與別的欄位不相關,僅僅代表唯一標識 !
CREATE TABLE mytable( id INT(10) PRIMARY KEY, #添加主鍵約束【屬于列級約束】 username VARCHAR(30), email VARCHAR(30) );
測驗

【表級約束】
主鍵值自增:在primary key后面添加auto_increment(從1開始,遞增);
了解:Oracle也提供一個自增序列叫做序列(sequence);
4.外鍵約束(foreign key)
關于外鍵約束的相關術語
- 外鍵約束:foreign key
- 外鍵欄位:添加有外鍵約束的欄位
- 外鍵值:外鍵欄位中的每一個值,
t_student中的classno欄位參考t_class表中的cno欄位,此時t_student表叫做子表,t_class表叫做父表,
順序要求:
- 洗掉資料的時候,先洗掉子表,再洗掉父表,
- 添加資料的時候,先添加父表,在添加子表,
- 創建表的時候,先創建父表,再創建子表,
- 洗掉表的時候,先洗掉子表,在洗掉父表,
使用外鍵【Alibaba規范不推薦使用】
create table t_class( cno int ,
cname varchar(255) , #被參考:父表 primary key(cno) ); create table t_student( sno int , sname varchar(255) , #子表 classno int , foreign key(classno) reference t_class(cno) ); #t_student中的classno欄位參考t_class表中的cno欄位,此時t_student表叫做子表,t_class表叫做父表
- reference是參考;
- 外鍵可以為NULL;
- 此時classno中的資料來自cno;
- 外鍵參考的欄位不一定是主鍵,但是起碼是被unique約束;
本文來自博客園,作者:腹白,轉載請注明原文鏈接:https://www.cnblogs.com/wyh518/
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/520728.html
標籤:其他
下一篇:事務(Transaction)
