mysql學習之路 外來鍵

2021-10-07 02:16:59 字數 3921 閱讀 4699

連線多張表到一起,不管記錄數如何,字段數一定會增加。

分類:內連線,外連線。自然連線,交叉連線,

交叉連線:cross join (笛卡爾積)

內連線:inner join,左右兩張表有連線條件匹配(不匹配自動忽略)

外連線:left/right join 主表的一條記錄一定會存在匹配保留副表資料,否則置空

自然連線:natural join 自動匹配(相同欄位名)

php操作:mysql

php充當客戶端,開啟mysql擴充套件

連線認證:mysql_connect;執行sql

獲取結果:mysql_query;

解析結果:mysql_fetch系列

釋放資源:mysql_free_result和mysql_close

錯誤處理:mysql_ermo和mysql_error

foreign key 外面的鍵

如果一張表中有乙個字段(非欄位)指向另一張表的主鍵,那麼將該字段稱之為外來鍵

外來鍵可以在建立表的時候或者在建立表之後增加(但是要考慮資料問題)一張表有多個外來鍵

1) 建立表的時候增加外來鍵:在所有的表字段之後使用:

foreign key (外來鍵字段) references 外部表(主鍵字段)

例:crate table my_c (

c_id int

foreign key (c_id) references

my_class

) character utf8;

在新增之後增加外來鍵;修改表結構

alter table表名 add foreignkey(外來鍵字段)

references 父表(主鍵字段);

例alter table my_foreign add

constraint student_class_1

foreign key (c_id)

reference my_class(id);

外來鍵不可修改;只能先刪除後新增

刪除外來鍵

alter table 表名 drop foreignerkey 外鍵名;--一張表有個外來鍵但是外來鍵名稱不能一樣。

例:alter table my_foreigner drop foreigner key

my_foreigner_id;

注意:外來鍵刪除是不能通過檢視表結構體現出來,檢視建立語句檢視;

外來鍵預設作用:乙個對父表,乙個對子表(外來鍵所在表)

對字表的約束:字表資料進行操作的時候如果對應的外來鍵字段在父表找不到對應的匹配操作時便(約束字表資料)

對父表約束:父表資料進行寫操作(刪與改:主鍵)如果對應主鍵在字表中已經被資料引用,那麼不允許操作。

1,外表要存在:首先要保證表的儲存引擎是innodb(預設儲存引擎)如果不是innodb,外來鍵建立成功,但是沒有約束效果。

2,外來鍵字段的字段型別(列屬性)必須與父表的主鍵型別完全一致。

3,一張表中外鍵名稱不能重複

4,增加外來鍵的字段(資料已經存在),必須保證資料與父表主鍵要求一致。

所謂外表約束就是指外來鍵的作用

之前將外來鍵作用:是預設作用,其實可以通過對外鍵的需求愛,進行定製操作。

外來鍵約束有三種模式:針對父表。

district :嚴格模式(預設的)父表不能刪除或者更新乙個已經被子表資料引用的資料。

cascade:級聯模式,父表的操作,對應子表關聯的資料也跟著操作。

set null:  置空模式,父表的操作之後,子表的資料被置空。

刪除的時候子表置空,更新的時候子表級聯操作。

指定模式的語法:foreign 可以(外表字段)references 父表(主鍵字段)on delete 模式 update 模式;

刪除操作:置空

刪除置空前提條件:外來鍵字段允許為空(如果不滿足條件),外來鍵無法建立。

外來鍵很強大,能夠進行各種約束;但對php來講,外來鍵約束降低了php對資料的可控性,但是實際開發中,很少用外來鍵來處理。

連線多張表到一起,不管記錄數如何,字段數一定會增加。

分類:內連線,外連線。自然連線,交叉連線,

交叉連線:cross join (笛卡爾積)

內連線:inner join,左右兩張表有連線條件匹配(不匹配自動忽略)

外連線:left/right join 主表的一條記錄一定會存在匹配保留副表資料,否則置空

自然連線:natural join 自動匹配(相同欄位名)

php操作:mysql

php充當客戶端,開啟mysql擴充套件

連線認證:mysql_connect;執行sql

獲取結果:mysql_query;

解析結果:mysql_fetch系列

釋放資源:mysql_free_result和mysql_close

錯誤處理:mysql_ermo和mysql_error

foreign key 外面的鍵

如果一張表中有乙個字段(非欄位)指向另一張表的主鍵,那麼將該字段稱之為外來鍵

外來鍵可以在建立表的時候或者在建立表之後增加(但是要考慮資料問題)一張表有多個外來鍵

1) 建立表的時候增加外來鍵:在所有的表字段之後使用:

foreign key (外來鍵字段) references 外部表(主鍵字段)

例:crate table my_c (

c_id int

foreign key (c_id) references

my_class

) character utf8;

在新增之後增加外來鍵;修改表結構

alter table表名 add foreignkey(外來鍵字段)

references 父表(主鍵字段);

例alter table my_foreign add

constraint student_class_1

foreign key (c_id)

reference my_class(id);

外來鍵不可修改;只能先刪除後新增

刪除外來鍵

alter table 表名 drop foreignerkey 外鍵名;--一張表有個外來鍵但是外來鍵名稱不能一樣。

例:alter table my_foreigner drop foreigner key

my_foreigner_id;

注意:外來鍵刪除是不能通過檢視表結構體現出來,檢視建立語句檢視;

外來鍵預設作用:乙個對父表,乙個對子表(外來鍵所在表)

對字表的約束:字表資料進行操作的時候如果對應的外來鍵字段在父表找不到對應的匹配操作時便(約束字表資料)

對父表約束:父表資料進行寫操作(刪與改:主鍵)如果對應主鍵在字表中已經被資料引用,那麼不允許操作。

1,外表要存在:首先要保證表的儲存引擎是innodb(預設儲存引擎)如果不是innodb,外來鍵建立成功,但是沒有約束效果。

2,外來鍵字段的字段型別(列屬性)必須與父表的主鍵型別完全一致。

3,一張表中外鍵名稱不能重複

4,增加外來鍵的字段(資料已經存在),必須保證資料與父表主鍵要求一致。

所謂外表約束就是指外來鍵的作用

之前將外來鍵作用:是預設作用,其實可以通過對外鍵的需求愛,進行定製操作。

外來鍵約束有三種模式:針對父表。

district :嚴格模式(預設的)父表不能刪除或者更新乙個已經被子表資料引用的資料。

cascade:級聯模式,父表的操作,對應子表關聯的資料也跟著操作。

set null:  置空模式,父表的操作之後,子表的資料被置空。

刪除的時候子表置空,更新的時候子表級聯操作。

指定模式的語法:foreign 可以(外表字段)references 父表(主鍵字段)on delete 模式 update 模式;

刪除操作:置空

刪除置空前提條件:外來鍵字段允許為空(如果不滿足條件),外來鍵無法建立。

外來鍵很強大,能夠進行各種約束;但對php來講,外來鍵約束降低了php對資料的可控性,但是實際開發中,很少用外來鍵來處理。

mysql書外來鍵 MySQL學習5 外來鍵續

一對多補充 級聯刪除 當一張表刪除記錄時,若繫結給了另一張表中的外來鍵,則一同刪除另一張表中關聯的記錄 更新於刪除都需要考慮到關聯與被關聯的關係 同步更新與同步刪除 被關聯表 create table dep id int primary key auto increment,dep name ch...

MySQL學習4 外來鍵

把所有資料都存放於一張表的弊端 1.組織結構不清晰 2.浪費硬碟空間 3.擴充套件性極差 一對多 foreign key 注意 mysql中表與表的關係,只有 一對多 沒有多對一 foreign key的用法 1 在建立表時,先建被關聯的表dep,才能建關聯表emp 先建立被關聯表 相當於先建立被關...

mysql 外來鍵 del 記錄 MySQL 外來鍵

在mysql中 1 mysql 資料表主要支援六種型別 分別是 bdb heap isam merge myisam innobdb。這六種又分為兩類,一類是 事務安全型 transaction safe 包括bdb和innodb 其餘都屬於第二類,稱為 非事務安全型 non transaction...