佳木斯湛栽影视文化发展公司

主頁(yè) > 知識(shí)庫(kù) > MySQL外鍵設(shè)置的方法實(shí)例

MySQL外鍵設(shè)置的方法實(shí)例

熱門(mén)標(biāo)簽:AI電銷(xiāo) 網(wǎng)站排名優(yōu)化 Linux服務(wù)器 百度競(jìng)價(jià)排名 服務(wù)外包 地方門(mén)戶網(wǎng)站 呼叫中心市場(chǎng)需求 鐵路電話系統(tǒng)

一、外鍵設(shè)置方法

1、在MySQL中,為了把2個(gè)表關(guān)聯(lián)起來(lái),會(huì)用到2個(gè)重要的功能:外鍵(FOREIGN KEY)和連接(JOIN)。外鍵需要在創(chuàng)建表的階段定義,連接可以通過(guò)相同意義的字段把2個(gè)表連接起來(lái),用在查詢階段。

2、假設(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è)公共字段。

創(chuàng)建主表

CREATE TABLE demo.importhead ( 
listnumber INT PRIMARY KEY, 
supplierid INT, 
stocknumber INT, 
importtype INT, 
importquantity DECIMAL(10 , 3 ), 
importvalue DECIMAL(10 , 2 ), 
recorder INT, 
recordingdate DATETIME);

創(chuàng)建從表

CREATE TABLE demo.importdetails( 
listnumber INT, 
itemnumber INT, 
quantity DECIMAL(10,3), 
importprice DECIMAL(10,2), 
importvalue DECIMAL(10,2), -- 定義外鍵約束,指出外鍵字段和參照的主表字段 
CONSTRAINT fk_importdetails_importhead 
FOREIGN KEY (listnumber) REFERENCES importhead (listnumber)
);

運(yùn)行這個(gè)SQL語(yǔ)句,我們就在創(chuàng)建表的同時(shí)定義了一個(gè)名字叫fk_importdetails_importhead的外鍵約束,同時(shí),我們聲明,這個(gè)外鍵約束的字段listnumber引用的是表importhead里面的字段listnumber。

創(chuàng)建完成后,我們可以通過(guò)SQL語(yǔ)句來(lái)查看,這里我們要用到MySQL自帶的、用于存儲(chǔ)系統(tǒng)信息的數(shù)據(jù)庫(kù):

information_schema。我們可以查看外鍵約束的相關(guān)信息:

外鍵約束所在的表是importdetails,外鍵字段是listnumber

參照的主表是importhead,參照主表字段是listnumber,

這樣通過(guò)定義外鍵約束,我們已經(jīng)建立起了2個(gè)表之間的關(guān)聯(lián)關(guān)系。

3、連接

在MySQL中有2種類(lèi)型的連接,分別是內(nèi)連接(INNER JOIN)和外連接(OUTER JOIN)

  • 內(nèi)連接表示查詢結(jié)果只返回符合連接條件的記錄,這種連接方式比較常用;
  • 外連接則不同,表示查詢結(jié)果返回某一個(gè)表中的所有記錄,以及另一個(gè)表中滿足連接條件的記錄。

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

  • 主表必須已經(jīng)存在于數(shù)據(jù)庫(kù)中,或者是當(dāng)前正在創(chuàng)建的表。如果是后一種情況,則主表與從表是同一個(gè)表,這樣的表稱(chēng)為自參照表,這種結(jié)構(gòu)稱(chēng)為自參照完整性。
  • 必須為主表定義主鍵。
  • 主鍵不能包含空值,但允許在外鍵中出現(xiàn)空值。也就是說(shuō),只要外鍵的每個(gè)非空值出現(xiàn)在指定的主鍵中,這個(gè)外鍵的內(nèi)容就是正確的。
  • 在主表的表名后面指定列名或列名的組合。這個(gè)列或列的組合必須是主表的主鍵或候選鍵。
  • 外鍵中列的數(shù)目必須和主表的主鍵中列的數(shù)目相同。
  • 外鍵中列的數(shù)據(jù)類(lèi)型必須和主表主鍵中對(duì)應(yīng)列的數(shù)據(jù)類(lèi)型相同。

總結(jié)

到此這篇關(guān)于MySQL外鍵設(shè)置的文章就介紹到這了,更多相關(guān)MySQL外鍵設(shè)置內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • MySQL 創(chuàng)建主鍵,外鍵和復(fù)合主鍵的語(yǔ)句
  • MySQL外鍵使用詳解
  • mysql外鍵(Foreign Key)介紹和創(chuàng)建外鍵的方法
  • MySQL使用外鍵實(shí)現(xiàn)級(jí)聯(lián)刪除與更新的方法
  • MySQL外鍵創(chuàng)建失敗1005原因匯總
  • MYSQL建立外鍵失敗幾種情況記錄Can''t create table不能創(chuàng)建表
  • MySQL外鍵使用及說(shuō)明詳解
  • mysql建立外鍵
  • 快速理解MySQL中主鍵與外鍵的實(shí)例教程
  • MySQL外鍵約束常見(jiàn)操作方法示例【查看、添加、修改、刪除】

標(biāo)簽:湖南 黃山 崇左 湘潭 蘭州 仙桃 衡水 銅川

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《MySQL外鍵設(shè)置的方法實(shí)例》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    小金县| 浏阳市| 谢通门县| 柯坪县| 孟州市| 福州市| 上林县| 宜宾市| 吴川市| 新余市| 延寿县| 元氏县| 鸡泽县| 报价| 大理市| 马关县| 兴海县| 沾化县| 义乌市| 石狮市| 行唐县| 陆川县| 永仁县| 安仁县| 广西| 武安市| 海淀区| 临邑县| 江口县| 南丹县| 安阳县| 三江| 桐城市| 新营市| 湖南省| 九台市| 酒泉市| 虹口区| 太原市| 通许县| 巩留县|