外鍵:foreign key,(外邊的鍵,鍵不在本表中):若是一張表中有一個字段(非主鍵)指向另外一張表的主鍵,則該字段稱爲外鍵。
java
外鍵能夠在表建立時或建立完表以後增長(要kao慮數據的問題)。一個表能夠有多個外鍵。
spa
建立表的時候增長外鍵,在全部表字段以後使用foregn key(外鍵字段) references 外部表(主鍵字段)
code
create table my_foreign1( id int primary key AUTO_INCREMENT, name varchar(20) comment'學生姓名', c_id int comment'學號', foreign key(c_id) REFERENCES my_class(id) )charset utf_8 ;
外鍵,要求字段自己就是一個索引(普通索引),若是字段自己沒有索引,則外鍵會先建立一個索引,而後纔會建立外鍵自己。
索引
在新增表以後增長外鍵,修改表結構:table
alter table 表名 add contraint 外鍵名 foreign key(外鍵字段) references 父表(主鍵字段)
外鍵不能修改,只能先刪除後新增
class
刪除外鍵:引用
alter table 表名 drop foreign key 外鍵名 ;//一張表能夠有多個外鍵,可是外鍵名不能相同
外鍵默認做用有兩點:一個對父表,一個對子表,外鍵字段在子表中。
im
對子表約束:若是在子表數據進行寫操做的時候,若是對應的外鍵字段在父表中沒有匹配,則操做失敗。(約束子表數據寫操做)。
數據
對父表約束:父表數據的寫操做(刪和改,都涉及到主鍵自己),若是對應的主鍵在子表中已經被數據引用,則不容許操做。
tab