怎么設(shè)置mysql的外鍵 mysql 如何設(shè)置外鍵

mysql怎么設(shè)定外鍵

為已經(jīng)添加好的數(shù)據(jù)表添加外鍵:

成都創(chuàng)新互聯(lián)公司服務(wù)項(xiàng)目包括中方網(wǎng)站建設(shè)、中方網(wǎng)站制作、中方網(wǎng)頁(yè)制作以及中方網(wǎng)絡(luò)營(yíng)銷(xiāo)策劃等。多年來(lái),我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,中方網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到中方省份的部分城市,未來(lái)相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!

語(yǔ)法:alter table 表名 add constraint FK_ID foreign key(你的外鍵字段名) REFERENCES 外表表名(對(duì)應(yīng)的表的主鍵字段名);

例: alter table tb_active add constraint FK_ID foreign key(user_id) REFERENCES tb_user(id)

//FK_ID是外鍵的名稱

/*

CREATE TABLE `tb_active` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`title` varchar(100) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,

`content` text CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,

`user_id` int(11) NOT NULL,

PRIMARY KEY (`id`),

KEY `user_id` (`user_id`),

KEY `user_id_2` (`user_id`),

CONSTRAINT `FK_ID` FOREIGN KEY (`user_id`) REFERENCES `tb_user` (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=latin1

*/

刪除外鍵

語(yǔ)法: ALTER TABLE table-name DROP FOREIGN KEY key-id;

例: ALTER TABLE `tb_active` DROP FOREIGN KEY 'FK_ID'

自動(dòng)鍵更新和刪除:

外鍵可以保證新插入的記錄的完整性,但是,如果在REFERENCES從句中已命名的表刪除記錄會(huì)怎么樣?在使用同樣的值作為外鍵的輔助表中會(huì)發(fā)生什么?

很明顯,那些記錄也應(yīng)該被刪除,否則在數(shù)據(jù)庫(kù)中就會(huì)有很多無(wú)意義的孤立記錄,MYSQL可以通過(guò)向FOREIGN KEY...REFERENCES修飾符添加一個(gè)ON DELETE 或ON UPDATE子句簡(jiǎn)化任務(wù),它告訴了數(shù)據(jù)庫(kù)在這種情況如何處理孤立任務(wù)。

mysql怎么定義外鍵

定義外鍵的方法和詳細(xì)的操作步驟如下:

1、第一步,創(chuàng)建一個(gè)主從表,如下圖所示,然后進(jìn)入下一步。

2、其次,完成上述步驟后,選擇主表,然后單擊設(shè)計(jì)表進(jìn)入表設(shè)計(jì)界面,如下圖所示,然后進(jìn)入下一步。

3、接著,完成上述步驟后,單擊外鍵進(jìn)入外鍵的設(shè)置界面,如下圖所示,然后進(jìn)入下一步。

4、然后,完成上述步驟后,設(shè)置外鍵名稱,然后選擇主表的外鍵字段,如下圖所示,然后進(jìn)入下一步。

5、隨后,完成上述步驟后,設(shè)置與數(shù)據(jù)庫(kù),表名稱和從屬表的單詞相對(duì)應(yīng)的外鍵字段,如下圖所示,然后進(jìn)入下一步。

6、最后,完成上述步驟后,單擊保存即可,如下圖所示。這樣,問(wèn)題就解決了。

mysql添加外鍵的操作要自己輸?

mysql增加外鍵的方法:1、在CREATE TABLE語(yǔ)句中,通過(guò)FOREIGN KEY關(guān)鍵字來(lái)添加外鍵;2、在ALTER TABLE語(yǔ)句中,通過(guò)ADD和FOREIGN KEY關(guān)鍵字來(lái)添加外鍵。

推薦課程:MySQL教程。

MySQL 外鍵約束(FOREIGN KEY)是表的一個(gè)特殊字段,經(jīng)常與主鍵約束一起使用。對(duì)于兩個(gè)具有關(guān)聯(lián)關(guān)系的表而言,相關(guān)聯(lián)字段中主鍵所在的表就是主表(父表),外鍵所在的表就是從表(子表)。

外鍵用來(lái)建立主表與從表的關(guān)聯(lián)關(guān)系,為兩個(gè)表的數(shù)據(jù)建立連接,約束兩個(gè)表中數(shù)據(jù)的一致性和完整性。比如,一個(gè)水果攤,只有蘋(píng)果、桃子、李子、西瓜等 4 種水果,那么,你來(lái)到水果攤要買(mǎi)水果就只能選擇蘋(píng)果、桃子、李子和西瓜,其它的水果都是不能購(gòu)買(mǎi)的。

主表刪除某條記錄時(shí),從表中與之對(duì)應(yīng)的記錄也必須有相應(yīng)的改變。一個(gè)表可以有一個(gè)或多個(gè)外鍵,外鍵可以為空值,若不為空值,則每一個(gè)外鍵的值必須等于主表中主鍵的某個(gè)值。

定義外鍵時(shí),需要遵守下列規(guī)則:

主表必須已經(jīng)存在于數(shù)據(jù)庫(kù)中,或者是當(dāng)前正在創(chuàng)建的表。如果是后一種情況,則主表與從表是同一個(gè)表,這樣的表稱為自參照表,這種結(jié)構(gòu)稱為自參照完整性。

必須為主表定義主鍵。

主鍵不能包含空值,但允許在外鍵中出現(xiàn)空值。也就是說(shuō),只要外鍵的每個(gè)非空值出現(xiàn)在指定的主鍵中,這個(gè)外鍵的內(nèi)容就是正確的。

在主表的表名后面指定列名或列名的組合。這個(gè)列或列的組合必須是主表的主鍵或候選鍵。

外鍵中列的數(shù)目必須和主表的主鍵中列的數(shù)目相同。

外鍵中列的數(shù)據(jù)類(lèi)型必須和主表主鍵中對(duì)應(yīng)列的數(shù)據(jù)類(lèi)型相同。

在創(chuàng)建表時(shí)設(shè)置外鍵約束

在 CREATE TABLE 語(yǔ)句中,通過(guò) FOREIGN KEY 關(guān)鍵字來(lái)指定外鍵,具體的語(yǔ)法格式如下:

1

2

[CONSTRAINT 外鍵名] FOREIGN KEY 字段名 [,字段名2,…]

REFERENCES 主表名 主鍵列1 [,主鍵列2,…]

例 1

為了展現(xiàn)表與表之間的外鍵關(guān)系,本例在 test_db 數(shù)據(jù)庫(kù)中創(chuàng)建一個(gè)部門(mén)表 tb_dept1,表結(jié)構(gòu)如下表所示。

創(chuàng)建 tb_dept1 的 SQL 語(yǔ)句和運(yùn)行結(jié)果如下所示。

1

2

3

4

5

6

7

mysql CREATE TABLE tb_dept1

- (

- id INT(11) PRIMARY KEY,

- name VARCHAR(22) NOT NULL,

- location VARCHAR(50)

- );

Query OK, 0 rows affected (0.37 sec)

創(chuàng)建數(shù)據(jù)表 tb_emp6,并在表 tb_emp6 上創(chuàng)建外鍵約束,讓它的鍵 deptId 作為外鍵關(guān)聯(lián)到表 tb_dept1 的主鍵 id,SQL 語(yǔ)句和運(yùn)行結(jié)果如下所示。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

mysql CREATE TABLE tb_emp6

- (

- id INT(11) PRIMARY KEY,

- name VARCHAR(25),

- deptId INT(11),

- salary FLOAT,

- CONSTRAINT fk_emp_dept1

- FOREIGN KEY(deptId) REFERENCES tb_dept1(id)

- );

Query OK, 0 rows affected (0.37 sec)

mysql DESC tb_emp6;

+--------+-------------+------+-----+---------+-------+

| Field? | Type??????? | Null | Key | Default | Extra |

+--------+-------------+------+-----+---------+-------+

| id???? | int(11)???? | NO?? | PRI | NULL??? |?????? |

| name?? | varchar(25) | YES? |???? | NULL??? |?????? |

| deptId | int(11)???? | YES? | MUL | NULL??? |?????? |

| salary | float?????? | YES? |???? | NULL??? |?????? |

+--------+-------------+------+-----+---------+-------+

4 rows in set (1.33 sec)

以上語(yǔ)句執(zhí)行成功之后,在表 tb_emp6 上添加了名稱為 fk_emp_dept1 的外鍵約束,外鍵名稱為 deptId,其依賴于表 tb_dept1 的主鍵 id。

注意:從表的外鍵關(guān)聯(lián)的必須是主表的主鍵,且主鍵和外鍵的數(shù)據(jù)類(lèi)型必須一致。例如,兩者都是 INT 類(lèi)型,或者都是 CHAR 類(lèi)型。如果不滿足這樣的要求,在創(chuàng)建從表時(shí),就會(huì)出現(xiàn)“ERROR 1005(HY000): Can't create table”錯(cuò)誤。

在修改表時(shí)添加外鍵約束

外鍵約束也可以在修改表時(shí)添加,但是添加外鍵約束的前提是:從表中外鍵列中的數(shù)據(jù)必須與主表中主鍵列中的數(shù)據(jù)一致或者是沒(méi)有數(shù)據(jù)。

在修改數(shù)據(jù)表時(shí)添加外鍵約束的語(yǔ)法格式如下:

閱讀剩余部分

相關(guān)閱讀

mysql日期如何轉(zhuǎn)字符串

【mysql數(shù)據(jù)庫(kù)】第三章解讀:服務(wù)器性能剖析(上)

mysql case when的用法是什么

mysql關(guān)閉后自動(dòng)重啟怎么辦

mysql精講之二:dml數(shù)據(jù)操作語(yǔ)句

淺析mysql中concat以及group_concat的使用

mysql如何來(lái)創(chuàng)建表

mysql怎么清空數(shù)據(jù)表數(shù)據(jù)

mysql安裝配置jdbc和基礎(chǔ)學(xué)習(xí)

mysql怎么加入一個(gè)數(shù)據(jù)庫(kù)?

文章名稱:怎么設(shè)置mysql的外鍵 mysql 如何設(shè)置外鍵
網(wǎng)站URL:http://muchs.cn/article22/doesjjc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站收錄、企業(yè)網(wǎng)站制作、虛擬主機(jī)、營(yíng)銷(xiāo)型網(wǎng)站建設(shè)、網(wǎng)站策劃品牌網(wǎng)站設(shè)計(jì)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化