溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

mysql如何查詢外鍵約束

發(fā)布時(shí)間:2022-05-17 08:31:03 來源:億速云 閱讀:973 作者:iii 欄目:MySQL數(shù)據(jù)庫

這篇文章主要介紹了mysql如何查詢外鍵約束的相關(guān)知識,內(nèi)容詳細(xì)易懂,操作簡單快捷,具有一定借鑒價(jià)值,相信大家閱讀完這篇mysql如何查詢外鍵約束文章都會有所收獲,下面我們一起來看看吧。

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

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

mysql怎么查詢外鍵約束

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

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

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

SHOW CREATE TABLE <數(shù)據(jù)表名>;

示例如下:

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ò)展知識:

外鍵約束的定義

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

假設(shè)我們有2個(gè)表,分別是表A和表B,它們通過一個(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用來引用表A中數(shù)據(jù)的,叫外鍵。所以,外鍵就是從表中用來引用主表中數(shù)據(jù)的那個(gè)公共字段

外鍵約束的作用

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

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

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

關(guān)于“mysql如何查詢外鍵約束”這篇文章的內(nèi)容就介紹到這里,感謝各位的閱讀!相信大家對“mysql如何查詢外鍵約束”知識都有一定的了解,大家如果還想學(xué)習(xí)更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI