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

mysql給一張表添加外鍵的4種方法

 更新時間:2023年08月05日 15:54:20   作者:子非魚@Itfuture  
這篇文章主要給大家介紹了關于mysql給一張表添加外鍵的4種方法,MySQL是一種常用的關系型數(shù)據(jù)庫管理系統(tǒng),它支持外鍵約束以保證數(shù)據(jù)庫的數(shù)據(jù)完整性,需要的朋友可以參考下

一、添加外鍵

添加外鍵約束名字一定不能重復
如何添加外鍵

方法一:直接在屬性值后面添加

create table score(
cscore int(11),
st_id int(50) references student(id),
cs_id int(30) references classes(id),
primary key(st_id,cs_id)
);

方法二:

create table score(
cscore int(11),
st_id int(50),
cs_id int(30),
primary key(st_id,cs_id),
FOREIGN KEY (st_id) REFERENCES student(id),
FOREIGN KEY (cs_id) REFERENCES classes(id)
);

方法三:添加約束

create table score(
cscore int(11),
st_id int(50),
cs_id int(30),
primary key(st_id,cs_id),
CONSTRAINT `FK_ID_ST` FOREIGN KEY (st_id) REFERENCES student(id),
CONSTRAINT `FK_ID_CS` FOREIGN KEY (cs_id) REFERENCES classes(id)
);

方法四:在表的定義外進行添加

alter table 表名 add constraint FK_ID foreign key(你的外鍵字段名) REFERENCES 外表表名(對應的表的主鍵字段名);

二、添加主鍵

1.創(chuàng)建表的時候直接在表字段后,跟primary key關鍵字。(一張表有且只能有一個主鍵,主鍵具有唯一性。)

CREATE TABLE tb
(
id INT IDENTITY(1,1) PRIMARY KEY,
name VARCHAR(20)
)

2.在創(chuàng)建表的時候在所有字段后面使用primary key(主鍵字段列表)來創(chuàng)建主鍵(如果有多個字段作為主鍵被稱為復合主鍵)

*CREATE TABLE table_test(
id INT NOT NULL,
name VARCHAR(20) NOT NULL,
address VARCHAR(20),
PRIMARY KEY(id)
);

復合鍵這樣設置:

CREATE TABLE table_test(
user_id INT NOT NULL,
user_name VARCHAR(20) NOT NULL,
user_address VARCHAR(20),
PRIMARY KEY (user_id, user_name)
);*

3.在表創(chuàng)建好之后添加主鍵(表本身沒有主鍵):

alter table 表名 add primary key(字段列表)
ALTER TABLE Employees
ADD CONSTRAINT PK_EmployeesID PRIMARY KEY (EmployeeID)

給表中沒有的字段添加主鍵:

ALTER TABLE (表名) ADD id INT(16) NOT NULL
PRIMARY KEY AUTO_INCREMENT FIRST;

注:主鍵必須非空,自增需要自己設置。如下:

alter table(表名) modify id integer auto_increment

我們光說了添加主鍵,那么刪除主鍵怎么辦?

alter (表名) DROP PRIMARY KEY

外鍵的基本要求

  1. 外鍵字段需要保證與關聯(lián)的主表的主鍵字段類型完全一致
  2. 基本屬性也要相同
  3. 如果是在表后增加外鍵,對數(shù)據(jù)還有一定要求(從表數(shù)據(jù)與主表的關聯(lián)關系)
  4. 外鍵只能使用InnoDB存儲引擎

外鍵約束

外鍵約束:通過建立外鍵關系之后,對主表和從表都會有一定的數(shù)據(jù)約束效率。

約束的基本概念

當一個外鍵產生時:外鍵所在的表(從表)會受制于主表數(shù)據(jù)的存在從而導致數(shù)據(jù)不能進行某些不符合規(guī)范的操作(不能插入主表不存在的數(shù)據(jù));

如果一張表被其他表外鍵引入,那么該表的數(shù)據(jù)操作就不能隨意;必須保證從表數(shù)據(jù)的有效性(不能隨便刪除一個被從表引入的記錄)
外鍵約束的概念

可以在創(chuàng)建外鍵約束的時候,對外鍵進行約束操作。

基本語法:add foreign key(外鍵字段) references 主表(主鍵) on 約束模式

約束模式有三種:

1.district:嚴格模式,默認的,不允許操作

2.cascade:級聯(lián)模式,一起操作,主表變化,從表數(shù)據(jù)跟著變化

3.set null:置空模式,主表變化(刪除),從表對應記錄設置為空:前提是從表中對應外鍵字段允許為空。

外鍵約束主要約束的對象是主表操作:從表就是不能插入主表不存在的數(shù)據(jù)

通常在進行約束的時候,需要指定操作:update 和 delete

常用的約束模式:on update cascade,on delete set null,更新級聯(lián),刪除置空

# 更新模式
alter table my_student add foreign key(class_id)
references my_class(class_id)
-- 約束條件
on update cascade
on delete set null;
-- 更新主表
update my_class set class_id = 4 where class_id = 2;
-- 執(zhí)行更新主表操作后,從表也隨便主表的變化而變化了
#刪除模式
delete from my_class where class_id = 4;
-- 執(zhí)行以上操作后,學生表my_student class_id原來值為4字段現(xiàn)在全部為空

約束的作用

保證數(shù)據(jù)的完整性:主表與從表的數(shù)據(jù)要一致

正因為外鍵有非常強大的數(shù)據(jù)約束作用,而且可能導致數(shù)據(jù)在后臺變化的不可控。導致程序在進行設計開發(fā)邏輯的時候,
沒有辦法去很好的把握數(shù)據(jù)(業(yè)務),所以外鍵比較少用

總結 

到此這篇關于mysql給一張表添加外鍵的4種方法的文章就介紹到這了,更多相關mysql給表添加外鍵內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Windows下MySQL安裝教程圖文詳解

    Windows下MySQL安裝教程圖文詳解

    本文通過圖文并茂的形式給大家介紹了windows下mysql 安裝教程,非常不錯,具有一定的參考借鑒價值,需要的朋友參考下吧
    2018-10-10
  • 全面解讀MySQL主從復制,從原理到安裝配置

    全面解讀MySQL主從復制,從原理到安裝配置

    這篇文章主要介紹了MySQL主從復制的相關資料,幫助大家更好的理解和使用MySQL,感興趣的朋友可以了解下
    2020-08-08
  • mysql全連接和oracle全連接查詢、區(qū)別及說明

    mysql全連接和oracle全連接查詢、區(qū)別及說明

    這篇文章主要介紹了mysql全連接和oracle全連接查詢、區(qū)別及說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • mysql字段為null為何不能使用!=

    mysql字段為null為何不能使用!=

    這篇文章主要介紹了mysql字段為null為何不能使用!=問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • MySQL中JSON_CONTAINS函數(shù)詳細用法示例?及場景

    MySQL中JSON_CONTAINS函數(shù)詳細用法示例?及場景

    這篇文章主要介紹了MySQL中JSON_CONTAINS函數(shù)詳細用法示例?及場景的相關資料,MySQL JSON_CONTAINS檢查目標JSON是否包含搜索值,文中將用法介紹的非常詳細,需要的朋友可以參考下
    2025-06-06
  • MySQL與Oracle對比及區(qū)別說明

    MySQL與Oracle對比及區(qū)別說明

    這篇文章主要介紹了MySQL與Oracle對比及區(qū)別說明,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-05-05
  • MySQL數(shù)據(jù)庫添加外鍵的四種方式

    MySQL數(shù)據(jù)庫添加外鍵的四種方式

    這篇文章主要介紹了ysql數(shù)據(jù)庫添加外鍵的四種方式, 建表時直接使用FOREIGN KEY,建表時使用CONSTRAINT,在建表以后使用ALTER語句以及 使用第三方工具這四種方式,需要的朋友可以參考下
    2024-03-03
  • 在MySQL中奏響數(shù)據(jù)庫操作的樂章(推薦)

    在MySQL中奏響數(shù)據(jù)庫操作的樂章(推薦)

    本文詳細介紹了如何在MySQL中進行數(shù)據(jù)庫操作,包括創(chuàng)建、刪除、修改數(shù)據(jù)庫等,以及如何使用字符集和校驗規(guī)則,以及備份和恢復數(shù)據(jù)庫的方法,同時,還討論了如何查看和修改數(shù)據(jù)庫的結構和數(shù)據(jù),總的來說,本文為讀者提供了一份全面的MySQL數(shù)據(jù)庫操作指南
    2024-10-10
  • MySQL中按月統(tǒng)計并逐月累加統(tǒng)計值的幾種實現(xiàn)寫法

    MySQL中按月統(tǒng)計并逐月累加統(tǒng)計值的幾種實現(xiàn)寫法

    有時候,我們可能有這樣的場景,需要將銷量按月統(tǒng)計,并且按月逐月累加,本文就來介紹一下MySQL中按月統(tǒng)計并逐月累加統(tǒng)計值的幾種實現(xiàn)寫法,感興趣的可以了解一下
    2023-10-10
  • MySQL性能優(yōu)化之路---修改配置文件my.cnf

    MySQL性能優(yōu)化之路---修改配置文件my.cnf

    mysql數(shù)據(jù)庫的優(yōu)化,算是一個老生常談的問題了,網(wǎng)上也有很多關于各方面性能優(yōu)化的例子,今天我們要談的是MySQL 系統(tǒng)參數(shù)的優(yōu)化即優(yōu)化my.cnf文件
    2014-06-06

最新評論

津南区| 内乡县| 贡觉县| 康保县| 连平县| 连城县| 罗源县| 呼玛县| 镇安县| 札达县| 南丰县| 格尔木市| 和龙市| 延庆县| 扎兰屯市| 陕西省| 天津市| 阳曲县| 巢湖市| 汕头市| 鹤峰县| 东方市| 淄博市| 尤溪县| 宁城县| 泰安市| 凤阳县| 洱源县| 曲靖市| 青田县| 扶沟县| 象山县| 乌拉特中旗| 安义县| 宾川县| 海宁市| 宜宾县| 确山县| 台南市| 阳新县| 武隆县|