日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql表定义外键语法_mysql设置外键的语法怎么写?

發(fā)布時間:2023/12/19 数据库 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql表定义外键语法_mysql设置外键的语法怎么写? 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

2012-08-31 回答

mysql外鍵設(shè)置詳解

(1) 外鍵的使用:

外鍵的作用,主要有兩個:

一個是讓數(shù)據(jù)庫自己通過外鍵來保證數(shù)據(jù)的完整性和一致性

一個就是能夠增加er圖的可讀性

有些人認為外鍵的建立會給開發(fā)時操作數(shù)據(jù)庫帶來很大的麻煩.因為數(shù)據(jù)庫有時候會由于沒有通過外鍵的檢測而使得開發(fā)人員刪除,插入操作失敗.他們覺得這樣很麻煩

其實這正式外鍵在強制你保證數(shù)據(jù)的完整性和一致性.這是好事兒.

例如:

有一個基礎(chǔ)數(shù)據(jù)表,用來記錄商品的所有信息。其他表都保存商品id。查詢時需要連表來查詢商品的名稱。單據(jù)1的商品表中有商品id字段,單據(jù)2的商品表中也有商品id字段。如果不使用外鍵的話,當單據(jù)1,2都使用了商品id=3的商品時,如果刪除商品表中id=3的對應記錄后,再查看單據(jù)1,2的時候就會查不到商品的名稱。

當表很少的時候,有人認為可以在程序?qū)崿F(xiàn)的時候來通過寫腳本來保證數(shù)據(jù)的完整性和一致性。也就是在刪除商品的操作的時候去檢測單據(jù)1,2中是否已經(jīng)使用了商品id為3的商品。但是當你寫完腳本之后系統(tǒng)有增加了一個單據(jù)3 ,他也保存商品id找個字段。如果不用外鍵,你還是會出現(xiàn)查不到商品名稱的情況。你總不能每增加一個使用商品id的字段的單據(jù)時就回去修改你檢測商品是否被使用的腳本吧,同時,引入外鍵會使速度和性能下降。

(2) 添加外鍵的格式:

alter table yourtablename

add [constraint 外鍵名] foreign key [id] (index_col_name, ...)

references tbl_name (index_col_name, ...)

[on delete {cascade | set null | no action | restrict}]

[on update {cascade | set null | no action | restrict}]

說明:

on delete/on update,用于定義delete,update操作.以下是update,delete操作的各種約束類型:

cascade:

外鍵表中外鍵字段值會被更新,或所在的列會被刪除.

restrict:

restrict也相當于no action,即不進行任何操作.即,拒絕父表update外鍵關(guān)聯(lián)列,delete記錄.

set null:

被父面的外鍵關(guān)聯(lián)字段被update ,delete時,子表的外鍵列被設(shè)置為null.

而對于insert,子表的外鍵列輸入的值,只能是父表外鍵關(guān)聯(lián)列已有的值.否則出錯.

外鍵定義服從下列情況:(前提條件)

1)

所有tables必須是innodb型,它們不能是臨時表.因為在mysql中只有innodb類型的表才支持外鍵.

2)

所有要建立外鍵的字段必須建立索引.

3)

對于非innodb表,foreign key子句會被忽略掉。

注意:

創(chuàng)建外鍵時,定義外鍵名時,不能加引號.

如: constraint 'fk_1' 或 constraint "fk_1"是錯誤的

(3) 查看外鍵:

show create table ***;可以查看到新建的表的代碼以及其存儲引擎.也就可以看到外鍵的設(shè)置.

刪除外鍵:

alter table drop foreign key '外鍵名'.

注意:

只有在定義外鍵時,用constraint 外鍵名 foreign key .... 方便進行外鍵的刪除.

若不定義,則可以:

先輸入:alter table drop foreign key -->會提示出錯.此時出錯信息中,會顯示foreign key的系統(tǒng)默認外鍵名.--->

用它去刪除外鍵.

總結(jié)

以上是生活随笔為你收集整理的mysql表定义外键语法_mysql设置外键的语法怎么写?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。