今日學習總結3.2
一、約束條件
1.unsigned(非負)
create table t1 (id int unsigned);
2.zerofill(零填充)
create table t2 (id int zerofill);
insert into t2 values(1);
insert into t2 values (1111);
create table t3 (id int);
3.default(預設)
create table t4(id,int,gender enum(‘male’,‘female’)default ‘male’);
4.unique(唯一)
create table t1(id int,ip varchar(16));
單唯一:
create table t2 (id,int,ip varchar(16)unique);
多唯一:
create table t3 (id,int,ip varchar(16),port int,unique(ip,port));
5.not null
create table t1 (id int,name varchar(16)not null);
6.主鍵(primary key)
1.在資料控制上面,主鍵相當於非空且唯一
id int primary key ==== id not null unique
2.InnoDB儲存引擎要求每一張表必須有一個主鍵,之前的InnoDB儲存引擎也沒有指定主鍵,但是表也
成功建立了,為什麼?
因為ImmoDB引擎有一個預設的主鍵,而這個預設主鍵只是幫助我們把表建立成功,並且是隱藏的
主鍵,不能用。
主鍵的另外一個只要作用是:可以幫助我們提高查詢速度
3.以後我們自己建立表的時候,主動指定主鍵
結論:id int primary key
7.auto_ increment
自增,可以理解為配合主鍵使用
id int primary key auto_increment unsigend 最終版本
create table t1(id int primary key auto_increment ,name varchar(16));
二、外來鍵
1.三種情況
一對多,多對多,一對一
2.如何判斷表關係?
一對多的判斷
以圖書表和出版社表為例
1.站在兩張表的角度,分別問一個問題,一本圖書能不能有多個出版社?不能
2.一個出版社能不能出多個圖書?能
結論:如果一個能,一個不能,那麼表關係就是一對多
針對一對多的關係,外來鍵欄位建立在多的一方
多對多的判斷
以圖書表和作者表為例
1.站在圖書表角度:一個圖書能否由多個作者寫?能
2.站在作者表角度:一個作者能否寫多本書?能
結論:如果兩邊都可以,那麼,表關係就是多對多
針對多對多關係,外來鍵欄位不建在任何一方,而是建立在第三張表裡
一對一的判斷
以作者表和作者詳情表為例
1.站在作者表角度:一個作者能否有多個作者詳細?不能
2.站在作者詳情表角度:一個作者詳情表能否有多個作者?不能
結論:兩邊都不能,那就是一對一,或者沒有關係,針對一對一關係,外來鍵欄位建立在任何一方都可
以,推薦建立在使用頻率比較高的一張表
3.SQL語句實現
一對多關係
1.在建立表關係的時候,先建立基礎欄位
2.再建立外來鍵關係
3.先建立沒有外來鍵的一張表
4.錄入資料的時候先錄入沒有外來鍵的一張表
多對多關係
一對一的關係
三、級聯更新級聯刪除