最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2021年04月08日 09:10:56   作者:Wayne  
這篇文章主要介紹了MySQL外鍵設(shè)置的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

一、外鍵設(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種類型的連接,分別是內(nèi)連接(INNER JOIN)和外連接(OUTER JOIN)

  • 內(nèi)連接表示查詢結(jié)果只返回符合連接條件的記錄,這種連接方式比較常用;
  • 外連接則不同,表示查詢結(jié)果返回某一個(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ù)類型必須和主表主鍵中對(duì)應(yīng)列的數(shù)據(jù)類型相同。

總結(jié)

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

相關(guān)文章

  • Mysql使用insert插入多條記錄 批量新增數(shù)據(jù)

    Mysql使用insert插入多條記錄 批量新增數(shù)據(jù)

    這篇文章主要介紹了Mysql使用insert插入多條記錄批量新增數(shù)據(jù),需要的朋友可以參考下
    2017-08-08
  • 詳解mysql觸發(fā)器trigger實(shí)例

    詳解mysql觸發(fā)器trigger實(shí)例

    這篇文章主要為大家介紹了mysql觸發(fā)器trigger實(shí)例?,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2021-12-12
  • insert...on?duplicate?key?update語(yǔ)法詳解

    insert...on?duplicate?key?update語(yǔ)法詳解

    本文主要介紹了insert...on?duplicate?key?update語(yǔ)法詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01
  • 總結(jié)MySQL修改最大連接數(shù)的兩個(gè)方式

    總結(jié)MySQL修改最大連接數(shù)的兩個(gè)方式

    最大連接數(shù)是可以通過(guò)mysql進(jìn)行修改的,mysql數(shù)據(jù)庫(kù)修改最大連接數(shù)常用有兩種方法,今天我們分析一下這兩種方法之間的特點(diǎn)和區(qū)別,以便我們能更好的去維護(hù)mysql。下面我們來(lái)看一下mysql修改最大連接數(shù)的方法,希望文章能夠幫助到各位朋友。
    2016-08-08
  • MySQL DATE_ADD和ADDDATE函數(shù)實(shí)現(xiàn)向日期添加指定時(shí)間間隔

    MySQL DATE_ADD和ADDDATE函數(shù)實(shí)現(xiàn)向日期添加指定時(shí)間間隔

    這篇文章主要介紹了MySQL DATE_ADD和ADDDATE函數(shù)實(shí)現(xiàn)向日期添加指定時(shí)間間隔,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • mysql實(shí)現(xiàn)定時(shí)備份的詳細(xì)圖文教程

    mysql實(shí)現(xiàn)定時(shí)備份的詳細(xì)圖文教程

    這篇文章主要給大家介紹了關(guān)于mysql實(shí)現(xiàn)定時(shí)備份的詳細(xì)圖文教程,我們都知道數(shù)據(jù)是無(wú)價(jià),如果不對(duì)數(shù)據(jù)進(jìn)行備份,相當(dāng)是讓數(shù)據(jù)在裸跑,一旦服務(wù)器出問(wèn)題,只有哭的份了,需要的朋友可以參考下
    2023-07-07
  • MySQL5.7中 performance和sys schema中的監(jiān)控參數(shù)解釋(推薦)

    MySQL5.7中 performance和sys schema中的監(jiān)控參數(shù)解釋(推薦)

    在MySQL5.7中,performance schema有很大改進(jìn),包括引入大量新加入的監(jiān)控項(xiàng)、降低占用空間和負(fù)載,以及通過(guò)新的sys schema機(jī)制顯著提升易用性。下面通過(guò)本文給大家介紹 MySQL5.7中 performance和sys schema中的監(jiān)控參數(shù)解釋,需要的朋友可以參考下
    2017-08-08
  • MySQL時(shí)間差8小時(shí)的解決方案

    MySQL時(shí)間差8小時(shí)的解決方案

    本文介紹了在開(kāi)發(fā)中遇到的時(shí)間問(wèn)題,包括MySQL時(shí)間與系統(tǒng)時(shí)間不符、JDBC連接時(shí)區(qū)設(shè)置以及使用Jackson時(shí)可能出現(xiàn)的JSON時(shí)區(qū)問(wèn)題,重點(diǎn)講解了如何修改MySQL時(shí)區(qū)、設(shè)置JDBC連接參數(shù)和調(diào)整JSON日期格式的時(shí)區(qū),需要的朋友可以參考下
    2024-07-07
  • MySQL提示表不存在的解決error:1146:Table doesn‘t exist的原因和解決方法

    MySQL提示表不存在的解決error:1146:Table doesn‘t exist的原因和解決

    在使用MySQL的過(guò)程中,有時(shí)會(huì)遇到“Table doesn't exist”(表不存在)的錯(cuò)誤,錯(cuò)誤代碼通常為1146,這個(gè)問(wèn)題可能由多種原因引起,本文將幫助你診斷和解決這個(gè)問(wèn)題,如果遇到同樣問(wèn)題的小伙伴跟著小編一起來(lái)看看吧
    2024-12-12
  • 關(guān)于clickhouse幾種create table的情況

    關(guān)于clickhouse幾種create table的情況

    這篇文章主要介紹了關(guān)于clickhouse幾種create table的情況,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12

最新評(píng)論

东至县| 共和县| 闵行区| 双牌县| 聊城市| 兴安县| 宜良县| 桂东县| 昌邑市| 健康| 望谟县| 苏尼特左旗| 台南市| 含山县| 库尔勒市| 红原县| 北安市| 章丘市| 黄石市| 泸溪县| 增城市| 新晃| 桃园县| 灵璧县| 山丹县| 永靖县| 禹城市| 东丰县| 盐源县| 亳州市| 驻马店市| 墨脱县| 南靖县| 上虞市| 威海市| 威宁| 西丰县| 茶陵县| 行唐县| 化州市| 五原县|