1. 程式人生 > >( 10 )MySQL中的外鍵

( 10 )MySQL中的外鍵

mar 數據操作 一個 所在 新增 說明 center alt enter

MySQL中的外鍵
外鍵 外鍵: foreign key ,外面的鍵(鍵不在自己表中) , 如果一張表中有一字段(非主鍵)指向另外一張表的主鍵 , 那麽該字段稱之為外鍵. 一張表可以有多個外鍵. 新增外鍵 創建外鍵的兩種方式: 1 創建表的時候創建外鍵 2 創建表之後增加創建外鍵 外鍵要求字段本身必須先是一個索引(普通索引),如果字段本身沒有索引,外鍵先創建一個索引然後才會創建外鍵本身 在新增表之後增加外鍵: 修改表結構 基本語法: alter table 表名 add [constraint 外鍵名字] foreign key (外鍵字段) references 父表(主鍵字段); 修改外鍵
外鍵不可修改 : 只能先刪除後新增 刪除外鍵 刪除外鍵基本語法: alter table 表名 drop foreign key 外鍵名; --說明表中有多個字段但名字不能相同 外鍵刪除不能通過查看表結構查看是否被刪除 ,可以通過表創建語句查詢 外鍵作用 外鍵默認的作用有兩點,一個對父表,一個對子表(外鍵字段所在的表) 對子表約束: 子表數據進行寫操作(增和改)的時候,如果對應的外鍵字段在父表中找不到對應的匹配,那麽會操作失敗(約束子表數據操作) 例: 把子表中的一個同學 放到 父表中的班級中 , 但是父表中不含有這個班級 -- 失敗 對父表約束: 父表數據進行寫操作(刪和改:都必須涉及到主鍵本身)
例 : 人走茶涼 如果對應的主鍵在子表中已經被數據所引用 那麽就不允許操作. 外鍵條件 1.外鍵要存在必須保證搜索引擎是innodb(默認的),否則外鍵可以創建成功,但是沒有效果 2.外鍵字段的字段類型必須與父表的主鍵類型完全一致. 3.一張表中外鍵名字不能重復 4. 增加外鍵的字段(數據已經存在),必須保證數據與父表主鍵對應 數據已存在,不能建立外鍵,因為不能改變對應關系. 外鍵約束 所謂的外鍵約束就是指外鍵的作用,通過對外鍵的需求進行定制操作. 約束模式有三種: 都是對父表的操作 Distinct : 嚴格模式(默認的) 父表不能刪除或更新一個已經被子表數據引用的記錄 Cascade : 級聯模式 父表的操作,對應子表關聯的數據也跟著操作
Set Null : 置空模式 父表操作之後,子表對應的數據(外鍵字段)被置空 通常的一個合理的做法(約束模式):刪除的時候子表被置空,更新的時候子表級聯操作 基本語法: foreign key (外鍵字段) references 父表(主鍵字段) on delete 約束模式 on update 約束模式 foreign key (外鍵字段) references 父表(主鍵字段) on delete set null on update cascade 外鍵使用的時候降低了程序的控制力 , 外鍵好用 ,但是不敢用.

( 10 )MySQL中的外鍵