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

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

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

前言

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

  • 需要建立主外鍵關(guān)系的兩個表的存儲引擎必須是InnoDB。
  • 外鍵列和參照列必須具有相似的數(shù)據(jù)類型,即可以隱式轉(zhuǎn)換的數(shù)據(jù)類型。
  • 外鍵列和參照列必須創(chuàng)建索引,如果外鍵列不存在索引,mysql將自動創(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ù)庫自動生成
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)存在時,就要使用下面的方法建立主外鍵關(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ù)庫自動生成外鍵名
alter table demo.ChinesePinyinInfo add foreign key (CharID) references ChineseCharInfo(ID);

三、刪除主外鍵約束

-- 通過修改列的屬性來刪除自增長,第一個(ID)為原列名,第二個(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)建一個在主表中不存在的外鍵值,數(shù)據(jù)庫會拒絕任何insert或update操作。

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

on delete和on update都有下面四種動作。

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

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

相關(guān)文章

  • MySQL binlog 遠程備份方法詳解

    MySQL binlog 遠程備份方法詳解

    以前備份binlog時,都是先在本地進行備份壓縮,然后發(fā)送到遠程服務(wù)器中,但是這種備份方式非常的不安全,下面通過本文給大家介紹MySQL binlog 遠程備份的方法,需要的朋友一起學(xué)習(xí)吧
    2016-05-05
  • MySQL中給自定義的字段查詢結(jié)果添加排名的方法

    MySQL中給自定義的字段查詢結(jié)果添加排名的方法

    這篇文章主要介紹了MySQL中給自定義的字段查詢結(jié)果添加排名的方法,只需要對counter寫一個小算式,非常簡單,需要的朋友可以參考下
    2015-06-06
  • MySQL 加鎖控制并發(fā)的方法

    MySQL 加鎖控制并發(fā)的方法

    這篇文章主要介紹了MySQL 加鎖控制并發(fā)的方法,幫助大家更好的理解和使用MySQL,感興趣的朋友可以了解下
    2021-01-01
  • mysql中g(shù)eneral_log日志的實現(xiàn)

    mysql中g(shù)eneral_log日志的實現(xiàn)

    MySQL的general_log是一個非常有用的工具,它可以記錄所有的SQL語句,包括查詢、DML、DDL、DCL語句,以及連接和斷開數(shù)據(jù)庫的語句,下面就來具體介紹一下,感興趣的可以了解一下
    2024-11-11
  • MySQL limit使用方法以及超大分頁問題解決

    MySQL limit使用方法以及超大分頁問題解決

    這篇文章主要給大家介紹了關(guān)于MySQL limit使用方法以及超大分頁問題解決的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者使用MySQL具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • 分頁技術(shù)原理與實現(xiàn)之分頁的意義及方法(一)

    分頁技術(shù)原理與實現(xiàn)之分頁的意義及方法(一)

    這篇文章主要介紹了分頁技術(shù)原理與實現(xiàn)第一篇:為什么要進行分頁及怎么分頁,感興趣的小伙伴們可以參考一下
    2016-06-06
  • 什么是blob,mysql blob大小配置介紹

    什么是blob,mysql blob大小配置介紹

    BLOB (binary large object),二進制大對象,是一個可以存儲二進制文件的容器。在計算機中,BLOB常常是數(shù)據(jù)庫中用來存儲二進制文件的字段類型
    2012-02-02
  • 關(guān)于useSSL=false和true的區(qū)別及說明

    關(guān)于useSSL=false和true的區(qū)別及說明

    這篇文章主要介紹了關(guān)于useSSL=false和true的區(qū)別及說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • Linux下Centos7安裝Mysql5.7.19的詳細教程

    Linux下Centos7安裝Mysql5.7.19的詳細教程

    這篇文章主要介紹了Linux下Centos7安裝Mysql5.7.19的教程詳解,需要的朋友可以參考下
    2017-08-08
  • Navicat For MySQL的簡單使用教程

    Navicat For MySQL的簡單使用教程

    這篇文章主要介紹了Navicat For MySQL的簡單使用教程,本文給大家介紹的非常詳細,具有一定的參考借鑒價,需要的朋友可以參考下
    2019-06-06

最新評論