真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

mysql怎么加外鍵約束 mysql數(shù)據(jù)庫外鍵約束怎么寫

mysql外鍵約束怎么寫

你好朋友

為來鳳等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計制作服務(wù),及來鳳網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為網(wǎng)站建設(shè)、做網(wǎng)站、來鳳網(wǎng)站設(shè)計,以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!

1.簡介

外鍵表示一個表中的一個字段被另外一個表中的字段應(yīng)用.外鍵對相關(guān)表中的數(shù)據(jù)造成了限制,使MySQL 能夠保證參照完整性.

在MySQL 中,InnoDB 存儲引擎支持外鍵.在一張表中,可以存在多個外鍵.

外鍵的創(chuàng)建可以在創(chuàng)建表的時候創(chuàng)建,也可以在創(chuàng)建表之后增加(考慮數(shù)據(jù)的完整性問題).

父表:外鍵所指向的表.

字表:相對于父表,擁有外鍵的表.

2.語法

create 語法

create table table_name(

column_1,

column_2,

....

constraint constraint_name foreign key (column_name)

references parent_table(column_name)

on delete action

on update action

) engine=InnoDB default charset utf8;

constraint 子句允許為外鍵定義一個名稱,如果不寫,MySQL 自動生成一個名稱

foreign key 子句指定子表中要應(yīng)用父表的列.注意:MySQL 會自動創(chuàng)建一個基于外鍵的索引.

references 子句指定父表中的被引用字段.foreign key 和references 指定的列數(shù)必須相同.

on delete: 定義當(dāng)父表中的記錄被刪除時,子表的記錄應(yīng)該執(zhí)行的動作.action包括:

on delete restrict:(默認(rèn)),父表不能刪除一個已經(jīng)被子表引用的記錄.

on delete no action:等同與on delete restrict

on delete cascade: 級聯(lián)模式,父表刪除后,對應(yīng)子表關(guān)聯(lián)的數(shù)據(jù)也跟著被刪除

on delete set null:置空模式,父表刪除后,對應(yīng)子表關(guān)聯(lián)的外鍵值被設(shè)置為NULL,需要注意的是,如果子表的外鍵設(shè)置not null ,則不能使用這種模式,因為會相互沖突.

on update:定義父表中的記錄更新時,子表的記錄應(yīng)該執(zhí)行的動作.action 包括:

on update restrict:(默認(rèn)),父表不能更新一個已經(jīng)被子表引用的記錄.

on update no action:等同與on delete restrict

on update cascade: 級聯(lián)模式,父表更新后,對應(yīng)子表關(guān)聯(lián)的數(shù)據(jù)也跟著被更新

on update set null:置空模式,父表更新后,對應(yīng)子表關(guān)聯(lián)的外鍵值被設(shè)置為NULL,需要注意的是,如果子表的外鍵設(shè)置not null ,則不能使用這種模式.

alter 語法

-- 添加外鍵

alter table table_name add constraint constraint_name

foreign key column_name

references parent_table(column_name)

on delete action

on update action

-- 刪除外鍵

alter table table_name drop constraint_name;

-- 如果沒有顯式的定義名字,可以使用如下命令獲取

show create table table_name;

3.演示

構(gòu)造兩張表categoryes 和products.每個類別有多種產(chǎn)品,而每個產(chǎn)品只屬于一個類別.

-- 設(shè)置 類別表 categoryes 和產(chǎn)品表 products

create table categoryes(

c_id int not null auto_increment,

c_name varchar(45) not null,

c_description text,

primary key (c_id)

) engine=InnoDB default charset utf8 comment '類別表';

create table products(

p_id int not null auto_increment,

p_name varchar(45) not null,

p_price decimal(8,4),

c_id int,

primary key (p_id),

constraint fk_products_categoryes

foreign key (c_id)

references categoryes(c_id)

on delete set null

on update cascade

) engine=InnoDB default charset utf8 comment '產(chǎn)品表';

在這兩張表的基礎(chǔ)上,新生成一張vendors 供應(yīng)商表,并更新products字段

-- 新生成一張表 供應(yīng)商 vendors ,并為 products 新添加字段 v_id 外鍵

-- 引用 vendors.v_id

create table vendors(

v_id int not null auto_increment,

v_name varchar(45),

primary key (v_id)

) engine=InnoDB default charset utf8 comment '供應(yīng)商';

alter table products add column v_id int not null;

alter table products add

constraint fk_products_vendors foreign key (v_id)

references vendors(v_id)

on delete no action

on update cascade;

望采納祝你好運

如何在MySQL中設(shè)置外鍵約束以及外鍵的作用

1.外鍵的作用,主要有兩個:

一個是讓數(shù)據(jù)庫自己通過外鍵來保證數(shù)據(jù)的完整性和一致性

一個就是能夠增加ER圖的可讀性

2.外鍵的配置

1)先創(chuàng)建一個主表,代碼如下:

#創(chuàng)建表student,并添加各種約束

create

table

student

(

id

int

primary

key

,

#主鍵約束

name

varchar(20)

,

#唯一約束

age

int

NOT

NULL,

#非空約束

sex

varchar(2)

,

address

varchar(20)

default

'重慶'

#默認(rèn)約束

)

;

再通過一個外鍵,創(chuàng)建一個分?jǐn)?shù)表,這樣的話,就可以方便查詢。代碼如下:

#創(chuàng)建分?jǐn)?shù)表

create

table

score

(

id

int

primary

key

,

sid

int

,

china

int

,

history

int,

english

int,

constraint

FK_sid

foreign

key(sid)

references

student(id)

#通過外鍵創(chuàng)建鏈接

)

;

創(chuàng)建外鍵的方法有很多,其中最常見創(chuàng)建外鍵的格式是:constraint

FK_***

foreign

key(**)

references

鏈接的外表

刪除外鍵:

alter

table

drop

foreign

key

'外鍵名'.

注意:

只有在定義外鍵時,用constraint

外鍵名

foreign

key

....

方便進(jìn)行外鍵的刪除

mysql在建表時添加外鍵約束

-- 添加外鍵約束

CREATE TABLE stu(

sid INT PRIMARY KEY,

NAME VARCHAR(50) NOT NULL

);

-- 添加外鍵約束方式一

CREATE TABLE score1(

score DOUBLE,

sid INT,

CONSTRAINT fk_stu_score1_sid FOREIGN KEY(sid) REFERENCES stu(sid)

);

-- 添加外鍵約束方式二(若表已存在,可用這種)

CREATE TABLE score1(

score DOUBLE,

sid INT

);

ALTER TABLE score1 ADD CONSTRAINT fk_sid FOREIGN KEY(sid) REFERENCES stu(sid)


網(wǎng)站欄目:mysql怎么加外鍵約束 mysql數(shù)據(jù)庫外鍵約束怎么寫
分享路徑:http://weahome.cn/article/higsjc.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部