mysql怎么查詢外鍵約束

mysql中,可以利用show語(yǔ)句查詢外鍵約束,show語(yǔ)句可以顯示mysql中的數(shù)據(jù)庫(kù)、表和列的信息,語(yǔ)法為“SHOW CREATE table 表名”;該語(yǔ)句可以顯示表中所有的主鍵約束、外鍵約束、非空約束等所有約束的信息。

mysql怎么查詢外鍵約束

本教程操作環(huán)境:windows10系統(tǒng)、mysql8.0.22版本、Dell G3電腦。

mysql怎么查詢外鍵約束

mysqlshow 命令用于顯示 MySQL 服務(wù)器中的數(shù)據(jù)庫(kù)、表和列信息。

在 MySQL 中可以使用 SHOW CREATE TABLE 語(yǔ)句來(lái)查看表中的約束,進(jìn)而查詢外鍵約束情況。

查看數(shù)據(jù)表中的約束語(yǔ)法格式如下:

SHOW?CREATE?TABLE?;

示例如下:

mysql>?CREATE?TABLE?tb_emp8 ????->?( ????->?id?INT(11)?PRIMARY?KEY, ????->?name?VARCHAR(22)?UNIQUE, ????->?deptId?INT(11)?NOT?NULL, ????->?salary?FLOAT?DEFAULT?0, ????->?CHECK(salary>0), ????->?FOREIGN?KEY(deptId)?REFERENCES?tb_dept1(id) ????->?); Query?OK,?0?rows?affected?(0.37?sec) mysql>?SHOW?CREATE?TABLE?tb_emp8?G ***************************?1.?row?*************************** ???????Table:?tb_emp8 Create?Table:?CREATE?TABLE?`tb_emp8`?( ??`id`?int(11)?NOT?NULL, ??`name`?varchar(22)?DEFAULT?NULL, ??`deptId`?int(11)?NOT?NULL, ??`salary`?float?DEFAULT?'0', ??PRIMARY?KEY?(`id`), ??UNIQUE?KEY?`name`?(`name`), ??KEY?`deptId`?(`deptId`), ??CONSTRAINT?`tb_emp8_ibfk_1`?FOREIGN?KEY?(`deptId`)?REFERENCES?`tb_dept1`?(`id`) )?ENGINE=InnoDB?DEFAULT?CHARSET=gb2312 1?row?in?set?(0.19?sec)

擴(kuò)展知識(shí):

外鍵約束的定義

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

假設(shè)我們有2個(gè)表,分別是表A和表B,它們通過(guò)一個(gè)公共字段“id”發(fā)生關(guān)聯(lián)關(guān)系,我們把這個(gè)關(guān)聯(lián)關(guān)系叫做R。如果“id”在表A中是主鍵,那么,表A就是這個(gè)關(guān)系R中的主表。相應(yīng)的,表B就是這個(gè)關(guān)系中的從表,表B中的“id”,就是表B用來(lái)引用表A中數(shù)據(jù)的,叫外鍵。所以,外鍵就是從表中用來(lái)引用主表中數(shù)據(jù)的那個(gè)公共字段

外鍵約束的作用

外鍵約束,可以幫我們確定從表中外鍵字段與主表中的主鍵字段之間的引用關(guān)系,還可以確保從表中數(shù)據(jù)所引用的主表數(shù)據(jù)不會(huì)被刪除,確保兩個(gè)表中數(shù)據(jù)的一致性

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

但是,外鍵約束是有成本的,需要消耗系統(tǒng)資源,可能不適合大并發(fā)的SQL操作。因此mysql允許你不使用系統(tǒng)自帶的外鍵約束,在應(yīng)用層面完成檢查數(shù)據(jù)一致性的邏輯。這也是為什么我們即使沒(méi)有設(shè)置外鍵,也能進(jìn)行關(guān)聯(lián)查詢的原因

推薦學(xué)習(xí):mysql視頻教程

以上就是

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點(diǎn)贊12 分享