mysql里的外鍵怎么,mysql中的外鍵的作用

mysql怎么設定外鍵

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

為凌云等地區(qū)用戶提供了全套網(wǎng)頁設計制作服務,及凌云網(wǎng)站建設行業(yè)解決方案。主營業(yè)務為成都網(wǎng)站制作、網(wǎng)站設計、外貿(mào)網(wǎng)站建設、凌云網(wǎng)站設計,以傳統(tǒng)方式定制建設網(wǎng)站,并提供域名空間備案等一條龍服務,秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務。我們深信只要達到每一位用戶的要求,就會得到認可,從而選擇與我們長期合作。這樣,我們也可以走得更遠!

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

例: 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

*/

刪除外鍵

語法: ALTER TABLE table-name DROP FOREIGN KEY key-id;

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

自動鍵更新和刪除:

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

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

mysql中外鍵如何使用?

1、只有InnoDB類型的表才可以使用外鍵。mysql默認是MyISAM,這種類型不支持外鍵約束

2、外鍵的好處:可以使得兩張表關聯(lián),保證數(shù)據(jù)的一致性和實現(xiàn)一些級聯(lián)操作。

3、外鍵的作用:

保持數(shù)據(jù)一致性,完整性,主要目的是控制存儲在外鍵表中的數(shù)據(jù)。 使兩張表形成關聯(lián),外鍵只能引用外表中的列的值。

4、建立外鍵的前提:

兩個表必須是InnoDB表類型。

使用在外鍵關系的域必須為索引型(Index)。

使用在外鍵關系的域必須與數(shù)據(jù)類型相似。

5、創(chuàng)建的步驟

指定主鍵關鍵字: foreign key(列名)。

引用外鍵關鍵字: references 外鍵表名(外鍵列名)。

6、事件觸發(fā)限制:on delete和on update , 可設參數(shù)cascade(跟隨外鍵改動)。

restrict(限制外表中的外鍵改動),set

Null(設空值),set Default(設默認值)。

[默認]no action

7、舉例

outTable表 主鍵 id 類型 int

創(chuàng)建含有外鍵的表:

代碼如下:

create table temp(

id int,

name

char(20),

foreign key(id) references outTable(id) on delete cascade on update

cascade);

說明:把id列 設為外鍵 參照外表outTable的id列 當外鍵的值刪除 本表中對應的列篩除 當外鍵的值改變 本表中對應的列值改變。

代碼如下:

create table temp( id int, name char(20),

foreign key(id) references outTable(id) on delete cascade on update

cascade);

mysql 如何建立外鍵

詳細說明可以百度搜我的博客: mysql foreign外鍵詳細使用方法和使用事項_2018_lcf

---------下面是使用方法

使用外鍵的前提:

1. 表儲存引擎必須是innodb,否則創(chuàng)建的外鍵無約束效果。

2. 外鍵的列類型必須與父表的主鍵類型完全一致。

3. 外鍵的名字不能重復(一般使用。

建外鍵表兩種方式(創(chuàng)建表時關聯(lián)/添加外鍵)

1) 第一種方式創(chuàng)建表時加外鍵使用實例:

mysql create table A( name char(12), id int(8) ,index(id))engine=innodb; //先建立A表,

mysql create table B( //建立B表,同時做外鍵

- id int(9),

- money int(9),

- index(id),

- foreign key(id) references A (id) //這個是必加項,foreign key(B表要關聯(lián)的字段),references A表名 (對應字段)

- on delete cascade on update cascade //這里是可選項的,只加一項或都不加都可以的,看需求.

- )engine=innodb; //這個必須是innodb類型,并且和A表的一致

第二方式在已有的表上做和A表關聯(lián)的外鍵(最好是新建好沒有記錄的,不然會因為記錄對不上而創(chuàng)建不成功)

mysql create table C( //這里先創(chuàng)建一個空表C

- id int(7),

- money int(5),

- index(id)

- )engine=innodb;

mysql alter table Cadd constraint abc //在C表上添加和表A關聯(lián)的外鍵,constraint 外鍵名(自己任意取)

- foreign key(id) references A(id) //和創(chuàng)建時一樣的輸入

- on delete cascade on update cascade; //一樣是可選項,這行不寫也可以通過.

注: @以上的cascade是上面介強的四種模式之一,是可以替換成其它模式的,如寫成on update set null

@還可以同時做兩個外鍵,如寫成foreign key(id,money) references A(id,money) 即可

@兩張表關聯(lián)字段名可以取不一樣名字,但類型必須一致

在MySQL中如何設置主鍵和外鍵

工具/原料

電腦? ?MySQL

方法/步驟

設置主鍵:

1、通過終端進入到mysql命令行工具。

2、通過use關鍵字進行到目標數(shù)據(jù)庫里。

3、如原表已有主鍵,先把原來的主鍵刪除掉,通過DROP PRIMARY KEY命令:ALTER TABLE `jingyan` DROP PRIMARY KEY;。

4、主鍵已經(jīng)沒有了。

5、通過命令:ADD PRIMARY KEY來添加ALTER TABLE `jingyan` ADD PRIMARY KEY ( `id` ) 。

6、輸入后按下回車鍵即可看到 query ok執(zhí)行成功的字符。

7、回到數(shù)據(jù)庫的可視化工具,即可顯示現(xiàn)在的表在id列上添加了主鍵了。

設置外鍵:

1、創(chuàng)建好主從表。

2、選擇主表,點擊設計表,進入到表設計界面。

3、點擊外鍵,進入到外鍵設置界面。

4、先設置外鍵名稱和選擇主表的外鍵字段。

5、然后在設置外鍵字段對應從表的數(shù)據(jù)庫、表名和字。

6、點擊保存就完成外鍵設置了。

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

mysql增加外鍵的方法:1、在CREATE TABLE語句中,通過FOREIGN KEY關鍵字來添加外鍵;2、在ALTER TABLE語句中,通過ADD和FOREIGN KEY關鍵字來添加外鍵。

推薦課程:MySQL教程。

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

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

主表刪除某條記錄時,從表中與之對應的記錄也必須有相應的改變。一個表可以有一個或多個外鍵,外鍵可以為空值,若不為空值,則每一個外鍵的值必須等于主表中主鍵的某個值。

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

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

必須為主表定義主鍵。

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

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

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

外鍵中列的數(shù)據(jù)類型必須和主表主鍵中對應列的數(shù)據(jù)類型相同。

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

在 CREATE TABLE 語句中,通過 FOREIGN KEY 關鍵字來指定外鍵,具體的語法格式如下:

1

2

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

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

例 1

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

創(chuàng)建 tb_dept1 的 SQL 語句和運行結果如下所示。

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 作為外鍵關聯(lián)到表 tb_dept1 的主鍵 id,SQL 語句和運行結果如下所示。

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)

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

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

在修改表時添加外鍵約束

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

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

閱讀剩余部分

相關閱讀

mysql日期如何轉字符串

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

mysql case when的用法是什么

mysql關閉后自動重啟怎么辦

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

淺析mysql中concat以及group_concat的使用

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

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

mysql安裝配置jdbc和基礎學習

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

mysql如何查看外鍵

查看mysql外鍵方式主要是通過第三方工具或者是sql語句,主要有以下三種方式

1、使用Navicateformysql,打開數(shù)據(jù)庫、查看數(shù)據(jù)庫表、查看設計表、選擇外鍵選項卡,就可以查看外鍵

2、使用sql語句

showcreatetable表名;這個命令可以查看表的所有信息,包括一些字段類型,字段的約束,外鍵,主鍵,索引,字符編碼等等。

3、查看某個表或者某個列的外鍵信息

selectTABLE_NAME,COLUMN_NAME,CONSTRAINT_NAME,

REFERENCED_TABLE_NAME,REFERENCED_COLUMN_NAME from KEY_COLUMN_USAGE where REFERENCED_TABLE_NAME = 'table';

如果需要查看某一列上的外鍵關系,需要添加列的條件REFERENCED_COLUMN_NAME.xx=xx

方法一比較直觀,方法三比較準確!

擴展資料:

MySQL是一種開放源代碼的關系型數(shù)據(jù)庫管理系統(tǒng)(RDBMS),MySQL數(shù)據(jù)庫系統(tǒng)使用最常用的數(shù)據(jù)庫管理語言--結構化查詢語言(SQL)進行數(shù)據(jù)庫管理。

由于MySQL是開放源代碼的,因此任何人都可以在GeneralPublicLicense的許可下下載并根據(jù)個性化的需要對其進行修改。MySQL因為其速度、可靠性和適應性而備受關注。大多數(shù)人都認為在不需要事務化處理的情況下,MySQL是管理內(nèi)容最好的選擇。

參考資料來源:百度百科——mySQL

新聞名稱:mysql里的外鍵怎么,mysql中的外鍵的作用
當前網(wǎng)址:http://muchs.cn/article2/hciioc.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供Google定制開發(fā)、品牌網(wǎng)站建設、企業(yè)建站、全網(wǎng)營銷推廣網(wǎng)站維護

廣告

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

商城網(wǎng)站建設