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

MySQL創(chuàng)建數(shù)據(jù)表并建立主外鍵關(guān)系詳解

 更新時(shí)間:2019年06月26日 10:42:30   作者:Brambling  
這篇文章主要介紹了MySQL創(chuàng)建數(shù)據(jù)表并建立主外鍵關(guān)系詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

前言

為mysql數(shù)據(jù)表建立主外鍵需要注意以下幾點(diǎn):

  • 需要建立主外鍵關(guān)系的兩個(gè)表的存儲(chǔ)引擎必須是InnoDB。
  • 外鍵列和參照列必須具有相似的數(shù)據(jù)類型,即可以隱式轉(zhuǎn)換的數(shù)據(jù)類型。
  • 外鍵列和參照列必須創(chuàng)建索引,如果外鍵列不存在索引,mysql將自動(dòng)創(chuàng)建索引。

一、SQL語句創(chuàng)建數(shù)據(jù)表并設(shè)置主外鍵關(guān)系

create table demo.ChineseCharInfo
(
ID int not null auto_increment,
Hanzi varchar(10) not null,
primary key (ID)
)
engine=innodb auto_increment=1 default charset=utf8 collate=utf8_general_ci;
create table demo.ChinesePinyinInfo
(
ID int not null auto_increment,
CharID int null,
Pinyin varchar(10) null,
Tone tinyint unsigned null,
primary key (ID),
-- 方式一:不指定外鍵名稱,數(shù)據(jù)庫自動(dòng)生成
foreign key (CharID) references ChineseCharInfo(ID) on delete cascade on update cascade 
-- 方式二:指定外鍵名稱為(FK_Name)
-- constraint FK_Name foreign key (CharID) references ChineseCharInfo(ID) on delete cascade on update cascade 
)
engine=innodb auto_increment=1 default charset=utf8 collate=utf8_general_ci;

二、當(dāng)數(shù)據(jù)表已經(jīng)存在時(shí),就要使用下面的方法建立主外鍵關(guān)系

-- 為表(demo.ChinesePinyinInfo)中字段(CharID)添加外鍵,并指定外鍵名為(FK_Name)
alter table demo.ChinesePinyinInfo add constraint FK_Name foreign key (CharID) references ChineseCharInfo(ID);
-- 為表(demo.ChinesePinyinInfo)中字段(CharID)添加外鍵,不指定外鍵名,由數(shù)據(jù)庫自動(dòng)生成外鍵名
alter table demo.ChinesePinyinInfo add foreign key (CharID) references ChineseCharInfo(ID);

三、刪除主外鍵約束

-- 通過修改列的屬性來刪除自增長,第一個(gè)(ID)為原列名,第二個(gè)(ID)為新列名
alter table demo.ChinesePinyinInfo change ID ID int not null;
-- 刪除表(demo.ChinesePinyinInfo)中的主鍵約束,如果主鍵列為自增列,則需要先刪除該列的自增長
alter table demo.ChinesePinyinInfo drop primary key;
-- 刪除表(demo.ChinesePinyinInfo)中的名稱為(FK_Name)的外鍵
alter table demo.ChinesePinyinInfo drop foreign key FK_Name;

四、主外鍵關(guān)系的約束

如果子表試圖創(chuàng)建一個(gè)在主表中不存在的外鍵值,數(shù)據(jù)庫會(huì)拒絕任何insert或update操作。

如果主表試圖update或者delete任何子表中存在或匹配的外鍵值,最終動(dòng)作取決于外鍵約束定義中的on delete和on update選項(xiàng)。

on delete和on update都有下面四種動(dòng)作。

  • cascade:主表刪除或更新相應(yīng)的數(shù)據(jù)行,則子表同時(shí)刪除或更新與主表相匹配的行,即級(jí)聯(lián)刪除、更新。
  • set null:主表刪除或更新相應(yīng)的數(shù)據(jù)和,則子表同時(shí)將與主表相匹配的行的外鍵列置為null。當(dāng)外鍵列被設(shè)置為not null時(shí)無效。
  • no action:數(shù)據(jù)庫拒絕刪除或更新主表。
  • restrict:數(shù)據(jù)庫拒絕刪除或更新主表。如果未指定on delete或on update的動(dòng)作,則on delete或on update的默認(rèn)動(dòng)作就為restrict。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • MYSQL5.6.33數(shù)據(jù)庫主從(Master/Slave)同步安裝與配置詳解(Master-Linux Slave-windows7)

    MYSQL5.6.33數(shù)據(jù)庫主從(Master/Slave)同步安裝與配置詳解(Master-Linux Slave-w

    這篇文章主要為大家詳細(xì)介紹了MYSQL5.6.33數(shù)據(jù)庫主從(Master/Slave)同步安裝與配置,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • MySql之視圖索引的具體使用

    MySql之視圖索引的具體使用

    MySql 視圖索引是一種基于視圖的索引,它允許在視圖上創(chuàng)建索引以提高查詢性能,本文主要介紹了MySql之視圖索引的具體使用,感興趣的可以了解一下
    2023-08-08
  • Linux平臺(tái)mysql開啟遠(yuǎn)程登錄

    Linux平臺(tái)mysql開啟遠(yuǎn)程登錄

    本文給大家分享的是在Linux平臺(tái)為MySQL開啟遠(yuǎn)程登錄連接的方法,有相同需求的小伙伴可以參考下
    2017-02-02
  • MySQL數(shù)據(jù)優(yōu)化-多層索引

    MySQL數(shù)據(jù)優(yōu)化-多層索引

    這篇文章主要介紹了MySQL數(shù)據(jù)優(yōu)化?多層索引,文章圍繞MySQL數(shù)據(jù)優(yōu)化?多層索引的相關(guān)資料展開詳細(xì)的內(nèi)容,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2021-12-12
  • mysql8.0.19忘記密碼的完美解決方法

    mysql8.0.19忘記密碼的完美解決方法

    這篇文章主要介紹了mysql8.0.19忘記密碼的完美解決方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-01-01
  • 使用mysql查詢顯示行號(hào)的示例代碼

    使用mysql查詢顯示行號(hào)的示例代碼

    MySQL變量是一種用于存儲(chǔ)和操縱數(shù)據(jù)的數(shù)據(jù)類型,通過在SQL查詢中使用變量,我們可以創(chuàng)建一個(gè)MySQL查詢,用于獲取每行數(shù)據(jù)的行號(hào),本文給大家介紹了使用mysql查詢顯示行號(hào)的示例代碼,需要的朋友可以參考下
    2024-01-01
  • 數(shù)據(jù)庫查詢哪個(gè)對像里面包含什么字段方法語句

    數(shù)據(jù)庫查詢哪個(gè)對像里面包含什么字段方法語句

    在本篇文章里小編給大家整理的關(guān)于數(shù)據(jù)庫查詢哪個(gè)對像里面包含什么字段方法語句有需要的朋友們可以學(xué)習(xí)下。
    2019-08-08
  • Mysql縱表轉(zhuǎn)換為橫表的方法及優(yōu)化教程

    Mysql縱表轉(zhuǎn)換為橫表的方法及優(yōu)化教程

    在應(yīng)用中為了從不同的視圖去分析數(shù)據(jù),會(huì)使用不同的方案去查詢數(shù)據(jù)庫,橫表和縱表的相互轉(zhuǎn)換就是其中一個(gè)常見的情景,這篇文章主要給大家介紹了關(guān)于Mysql縱表轉(zhuǎn)換為橫表的相關(guān)資料,需要的朋友可以參考下
    2021-08-08
  • MySQL 存儲(chǔ)過程的優(yōu)缺點(diǎn)分析

    MySQL 存儲(chǔ)過程的優(yōu)缺點(diǎn)分析

    存儲(chǔ)過程(Stored Procedure)是一種在數(shù)據(jù)庫中存儲(chǔ)復(fù)雜程序,以便外部程序調(diào)用的一種數(shù)據(jù)庫對象。本文將分析存儲(chǔ)過程的優(yōu)缺點(diǎn)
    2021-05-05
  • 淺談MySQL中的group by

    淺談MySQL中的group by

    這篇文章主要介紹了MySQL中的group by,MySQL的group by用于對查詢的數(shù)據(jù)進(jìn)行分組;此外MySQL提供having子句對分組內(nèi)的數(shù)據(jù)進(jìn)行過濾。下面來看看文章對此的具體介紹,需要的朋友可以參考一下,希望對你有所幫助
    2021-11-11

最新評(píng)論

杭锦后旗| 温州市| 肇东市| 兴海县| 凌海市| 六盘水市| 彰武县| 延寿县| 南汇区| 邮箱| 衢州市| 贵溪市| 永靖县| 建水县| 资源县| 阿鲁科尔沁旗| 洛隆县| 青阳县| 晋中市| 磐安县| 攀枝花市| 阿拉尔市| 新宁县| 远安县| 平南县| 贵南县| 咸阳市| 闸北区| 青田县| 松阳县| 平阳县| 朔州市| 高尔夫| 富宁县| 随州市| 长宁区| 宁蒗| 铜梁县| 镇平县| 汤原县| 玛纳斯县|