欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MySQL中外鍵的創(chuàng)建、約束以及刪除

 更新時(shí)間:2021年01月17日 09:14:39   作者:Spike Bo  
這篇文章主要給大家介紹了關(guān)于MySQL中外鍵的創(chuàng)建、約束以及刪除的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

前言

在MySQL 3.23.44版本后,InnoDB引擎類型的表支持了外鍵約束。

外鍵的使用條件:

1.兩個(gè)表必須是InnoDB表,MyISAM表暫時(shí)不支持外鍵(據(jù)說(shuō)以后的版本有可能支持,但至少目前不支持);

2.外鍵列必須建立了索引,MySQL 4.1.2以后的版本在建立外鍵時(shí)會(huì)自動(dòng)創(chuàng)建索引,但如果在較早的版本則需要顯示建立;

3.外鍵關(guān)系的兩個(gè)表的列必須是數(shù)據(jù)類型相似,也就是可以相互轉(zhuǎn)換類型的列,比如int和tinyint可以,而int和char則不可以;

外鍵的好處:可以使得兩張表關(guān)聯(lián),保證數(shù)據(jù)的一致性和實(shí)現(xiàn)一些級(jí)聯(lián)操作;

一、外鍵的創(chuàng)建

語(yǔ)法一:后續(xù)添加方法

alter table 表名 add constraint 約束名 foreign key(當(dāng)前表中約束的字段) references 主表表名(要約束的字段名);
alter table student add constraint fk_class_student foreign key(cls_id) class(cls_id) on update cascade on delete no action;

語(yǔ)法二:創(chuàng)建表的方法

CREATE TABLE student(
sid int PRIMARY KEY,
cls_id int not null,
sname varchar(10) not null,
constraint fk_class_student foreign key(cls_id) references class(cls_id) on update cascade on delete no action
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

一個(gè)額外點(diǎn):

SHOW CREATE TABLE class

可以查詢表的建表信息

在這里插入圖片描述

CREATE TABLE `class` (
 `cls_id` int NOT NULL,
 `cls_name` varchar(15) NOT NULL,
 PRIMARY KEY (`cls_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

下面的演示我們就使用剛剛創(chuàng)建的這個(gè)學(xué)生表和班級(jí)表

內(nèi)容如下

在這里插入圖片描述

在這里插入圖片描述

二,關(guān)于四種約束方式

在父表上進(jìn)行update/delete操作時(shí),子表的操作類型

  1. CASCADE 子表會(huì)刪除包含與已刪除鍵值有參照關(guān)系的所有數(shù)據(jù)
  2. SET NULL 父表delete、update的時(shí)候,子表會(huì)將關(guān)聯(lián)記錄的外鍵字段所在列設(shè)為null
  3. RESTRICT 拒絕有關(guān)聯(lián)關(guān)系的字段的刪除要求(這是默認(rèn)設(shè)置,也是最安全的設(shè)置)
  4. NO ACTION 和RESTRICT 類似

以我們剛剛設(shè)置的外鍵為例(on update cascade on delete no action)

當(dāng)我們嘗試進(jìn)行刪除操作時(shí)

delete from class WHERE cls_id=1

結(jié)果如下

在這里插入圖片描述

可以看到由于外鍵約束中on delete no action的存在,不允許對(duì)主表進(jìn)行刪除操作。但是子表可以

delete from student WHERE cls_id=1

在這里插入圖片描述

當(dāng)我們對(duì)父表的關(guān)聯(lián)鍵進(jìn)行更新操作時(shí),由于on update cascade的存在,可以正常更新

UPDATE class set cls_id=4 where cls_id=1

在這里插入圖片描述

并且隨著主表的更新,子表中的外鍵字段也進(jìn)行了更新

在這里插入圖片描述

三,刪除外鍵的方法

alter table 子表名 drop foreign key 外鍵約束名
alter table student drop foreign key fk_class_student

當(dāng)我們將外鍵刪除之后,父表的操作就變得可以正常進(jìn)行了

在這里插入圖片描述

總結(jié)

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

相關(guān)文章

  • SQL?日期處理視圖創(chuàng)建(常見(jiàn)數(shù)據(jù)類型查詢防范?SQL注入)

    SQL?日期處理視圖創(chuàng)建(常見(jiàn)數(shù)據(jù)類型查詢防范?SQL注入)

    這篇文章主要為大家介紹了SQL日期處理和視圖創(chuàng)建:常見(jiàn)數(shù)據(jù)類型、示例查詢和防范?SQL?注入方法示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-12-12
  • MySql 索引、鎖、事務(wù)知識(shí)點(diǎn)小結(jié)

    MySql 索引、鎖、事務(wù)知識(shí)點(diǎn)小結(jié)

    這篇文章主要介紹了MySql 索引、鎖、事務(wù)知識(shí)點(diǎn),總結(jié)分析了mysql數(shù)據(jù)庫(kù)中關(guān)于索引、鎖和事務(wù)的概念、原理、知識(shí)點(diǎn)及相關(guān)注意事項(xiàng),需要的朋友可以參考下
    2019-10-10
  • MySQL的主鍵命名策略相關(guān)

    MySQL的主鍵命名策略相關(guān)

    這篇文章主要介紹了MySQL的主鍵命名策略的的相關(guān)資料,幫助大家更好的理解和使用MySQL數(shù)據(jù)庫(kù),感興趣的朋友可以了解下
    2021-01-01
  • 基于sqlalchemy對(duì)mysql實(shí)現(xiàn)增刪改查操作

    基于sqlalchemy對(duì)mysql實(shí)現(xiàn)增刪改查操作

    這篇文章主要介紹了基于sqlalchemy對(duì)mysql實(shí)現(xiàn)增刪改查操作,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-06-06
  • 解析mysql不重復(fù)字段值求和

    解析mysql不重復(fù)字段值求和

    本篇文章是對(duì)關(guān)于mysql不重復(fù)字段值求和進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-06-06
  • MySQL統(tǒng)計(jì)今日生成create_time的數(shù)據(jù)量的方法小結(jié)

    MySQL統(tǒng)計(jì)今日生成create_time的數(shù)據(jù)量的方法小結(jié)

    create_time通常是一個(gè)用于表示某個(gè)實(shí)體或事件創(chuàng)建時(shí)間的字段,在數(shù)據(jù)庫(kù)設(shè)計(jì)、日志記錄或許多軟件系統(tǒng)中常見(jiàn),它存儲(chǔ)的是一個(gè)日期或時(shí)間戳,記錄了數(shù)據(jù)首次被創(chuàng)建的具體時(shí)刻,本文介紹了MySQL統(tǒng)計(jì)今日生成create_time的數(shù)據(jù)量的方法,需要的朋友可以參考下
    2024-08-08
  • MySQL如何生成自增的流水號(hào)

    MySQL如何生成自增的流水號(hào)

    這篇文章主要介紹了MySQL如何生成自增的流水號(hào)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • mysql數(shù)據(jù)遷移到Oracle的正確方法

    mysql數(shù)據(jù)遷移到Oracle的正確方法

    這篇文章主要為大家詳細(xì)介紹了mysql數(shù)據(jù)遷移到Oracle的正確方法,文中步驟介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-02-02
  • MySQL 5.6.51 解壓版(zip版)安裝配置圖文方法

    MySQL 5.6.51 解壓版(zip版)安裝配置圖文方法

    這兩天剛試用了一下MySQL5.6.51,感覺(jué)還不錯(cuò),有兄弟戲稱是一個(gè)高富帥版本?,F(xiàn)將MySQL5.6.51 zip解壓版本的安裝配置過(guò)程記錄如下,希望能給需要安裝該版本的朋友一點(diǎn)參考作用
    2015-08-08
  • CentOS 安裝redis和MySQL

    CentOS 安裝redis和MySQL

    這篇文章主要介紹了CentOS 安裝redis和MySQL的相關(guān)資料,需要的朋友可以參考下
    2019-08-08

最新評(píng)論