Mysql入門學習筆記(2) 外來鍵約束

2021-07-26 12:18:38 字數 2234 閱讀 7162

空與非空

create table tb2(

username varchar(20)not null,//不為空

age tinyint usignednull//預設為允許為空,此處的null可以不寫;tinyint是範圍在三位數之內的整數

);mysql自動編號(自增)

auto_increment

字段必須是數值型,小數字數必須為0

自動編號,且必須與主鍵(primary key)結合使用。

預設情況下,起始值為1,每次的增量為1。

primary key

主鍵約束,每張資料表只能存在乙個主鍵,主鍵保證記錄的唯一性,主鍵自動為not null。

當為primary key加上auto_increment自動增長時,可以不為primary key賦值。

primary key允許賦值,但不允許有重複的值。

unique key

唯一約束,唯一約束可以保證記錄的唯一性,字段可以為null(只能有乙個),每張資料表可以存在多個唯一約束。

(primary key是not null,且一張資料表只能有乙個)

default

預設值,當插入記錄時,如果沒有明確為字段賦值,則自動賦予預設值。後接預設的值,default 預設值。

(類似無參構造器)

外來鍵約束

例如資料表provinces的id為主鍵,

那麼資料表users新增外來鍵

pid 與id 的型別(包括有無符號位)相同,就可以新增外來鍵

foreign key (pid) references provinces (id)

provinces為父表,users為子表,

參照列為id,外來鍵列為pid

顯示索引show indexes from provinces

外來鍵約束的引數操作

變化:foreign key (pid) references provinces (id) on delete cascade

cascade:從父表刪除或更新且自動刪除或更新子表中匹配的行

附上建表語句:

父表:省份表

create

table provinces(

id smallint unsigned primary

key auto_increment,

pname varchar(20),

);

子表:

create

table users(

id smallint unsigned primary

key auto_increment,

usename varchar(10) not

null,

pid smallint unsigned,

foreign

key (pid) references provinces (id) on

delete

cascade;//新增外來鍵

);

cascade的作用:

例如我在父表中插入一條記錄(其id自動等於1)

insert provinces (pname) value('a')
在子表也插入一條對應的記錄

insert users (username,pid) value('rose',1)
當刪除父表中id為1的記錄時,外來鍵列種對應id=1的記錄將會全部刪除

其他的關鍵字的作用

實際開發中,我們很少使用物理的外來鍵約束,而是使用邏輯約束;無理的外來鍵約束只有innodb這種儲存引擎才會支援,myisam這種引擎就不支援物理的外來鍵約束。反過來說,當我們使用到的引擎為myisam時,只能使用邏輯外來鍵(即兩個表的設計的邏輯關係)。

MySql學習筆記 索引,外來鍵

索引由資料庫表中一列或多列組合而成,其作用是提高對錶中資料的查詢速度。索引是建立在表上的,是對資料庫表中一列或多列的值進行排序的一種結構。索引可以提高查詢的速度。通過索引,查詢資料時可以不必讀完記錄的所有資訊,而只是查詢索引列。否則,資料庫系統將讀取每條記錄的所有資訊進行匹配。例如,索引相當於新華字...

MySQL學習筆記(11) 外來鍵

foreign key,外面的鍵 鍵不在自己表中 如果a表中有乙個字段 非主鍵 指向b表的主鍵,那麼將該子段稱之為外來鍵。a表被稱為從表,b表被稱為主表。1.建立表的時候增加外來鍵 constraint 外鍵名 foreign key 外來鍵字段 references 主表 主鍵 例項 create...

mysql級聯刪除外來鍵約束 主外來鍵和外來鍵約束

主鍵 primary key 一列 或一組列 其值能夠唯一區分表中每個行 外來鍵 foreign key 外來鍵為某個表中的一列,它包含另乙個表的主鍵值,定義了兩個表之間的關係 右邊的departmentid是外來鍵。外來鍵約束是指用於在兩個表之間建立關係,需要指定引用主表的哪一列。on delet...