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

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

mysql外鍵約束怎么建 mysql建立外鍵約束

Navicat for MySQL怎么建立約束和查看約束?

這是一項新功能,用于指定在插入或更新到一行之前檢查值的條件。如果表的任何行的搜索條件的結(jié)果為 FALSE,則約束可能返回錯誤(但如果結(jié)果為 UNKNOWN 或 TRUE,則約束不會返回錯誤)。此功能開始在 MySQL 8.0.16 上運行,在以前的版本中,我們可以創(chuàng)建它,但它不起作用,這意味著支持語法,但不起作用。要牢記的使用規(guī)則:

讓客戶滿意是我們工作的目標,不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價值的長期合作伙伴,公司提供的服務(wù)項目有:域名注冊、網(wǎng)頁空間、營銷軟件、網(wǎng)站建設(shè)、老河口網(wǎng)站維護、網(wǎng)站推廣。

AUTO_INCREMENT 自增列不允許使用

引用另一個表中的另一列不允許使用

存儲的函數(shù)和用戶定義的函數(shù)不允許使用

存儲過程和函數(shù)參數(shù)不允許使用

子查詢不允許使用

在外鍵中用于后續(xù)操作(ON UPDATE,ON DELETE)的列不允許使用

為下一條語句 INSERT,UPDATE,REPLACE,LOAD DATA 和 LOAD XML 評估此次監(jiān)測。此外,還會為 INSERT IGNORE,UPDATE IGNORE,LOAD DATA…IGNORE 和 LOAD XML…IGNORE 評估此監(jiān)測約束。對于這些語句,如果約束的評估結(jié)果為 FALSE,則會發(fā)生警告。插入或更新被跳過。

我們可以使用此功能在表中添加更多的邏輯,但是根據(jù)我以前作為程序員的經(jīng)驗,我不建議在表中添加邏輯,因為除非您無法訪問應(yīng)用程序代碼,否則很難找到或調(diào)試錯誤。

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)

mysql外鍵約束怎么寫

你好朋友

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: 定義當父表中的記錄被刪除時,子表的記錄應(yīng)該執(zhí)行的動作.action包括:

on delete restrict:(默認),父表不能刪除一個已經(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:(默認),父表不能更新一個已經(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添加外鍵的操作要自己輸?

mysql增加外鍵的方法:1、在CREATE TABLE語句中,通過FOREIGN KEY關(guān)鍵字來添加外鍵;2、在ALTER TABLE語句中,通過ADD和FOREIGN KEY關(guān)鍵字來添加外鍵。

推薦課程:MySQL教程。

MySQL 外鍵約束(FOREIGN KEY)是表的一個特殊字段,經(jīng)常與主鍵約束一起使用。對于兩個具有關(guān)聯(lián)關(guān)系的表而言,相關(guān)聯(lián)字段中主鍵所在的表就是主表(父表),外鍵所在的表就是從表(子表)。

外鍵用來建立主表與從表的關(guān)聯(lián)關(guān)系,為兩個表的數(shù)據(jù)建立連接,約束兩個表中數(shù)據(jù)的一致性和完整性。比如,一個水果攤,只有蘋果、桃子、李子、西瓜等 4 種水果,那么,你來到水果攤要買水果就只能選擇蘋果、桃子、李子和西瓜,其它的水果都是不能購買的。

主表刪除某條記錄時,從表中與之對應(yīng)的記錄也必須有相應(yīng)的改變。一個表可以有一個或多個外鍵,外鍵可以為空值,若不為空值,則每一個外鍵的值必須等于主表中主鍵的某個值。

定義外鍵時,需要遵守下列規(guī)則:

主表必須已經(jīng)存在于數(shù)據(jù)庫中,或者是當前正在創(chuàng)建的表。如果是后一種情況,則主表與從表是同一個表,這樣的表稱為自參照表,這種結(jié)構(gòu)稱為自參照完整性。

必須為主表定義主鍵。

主鍵不能包含空值,但允許在外鍵中出現(xiàn)空值。也就是說,只要外鍵的每個非空值出現(xiàn)在指定的主鍵中,這個外鍵的內(nèi)容就是正確的。

在主表的表名后面指定列名或列名的組合。這個列或列的組合必須是主表的主鍵或候選鍵。

外鍵中列的數(shù)目必須和主表的主鍵中列的數(shù)目相同。

外鍵中列的數(shù)據(jù)類型必須和主表主鍵中對應(yīng)列的數(shù)據(jù)類型相同。

在創(chuàng)建表時設(shè)置外鍵約束

在 CREATE TABLE 語句中,通過 FOREIGN KEY 關(guān)鍵字來指定外鍵,具體的語法格式如下:

1

2

[CONSTRAINT 外鍵名] FOREIGN KEY 字段名 [,字段名2,…]

REFERENCES 主表名 主鍵列1 [,主鍵列2,…]

例 1

為了展現(xiàn)表與表之間的外鍵關(guān)系,本例在 test_db 數(shù)據(jù)庫中創(chuàng)建一個部門表 tb_dept1,表結(jié)構(gòu)如下表所示。

創(chuàng)建 tb_dept1 的 SQL 語句和運行結(jié)果如下所示。

1

2

3

4

5

6

7

mysql CREATE TABLE tb_dept1

- (

- id INT(11) PRIMARY KEY,

- name VARCHAR(22) NOT NULL,

- location VARCHAR(50)

- );

Query OK, 0 rows affected (0.37 sec)

創(chuàng)建數(shù)據(jù)表 tb_emp6,并在表 tb_emp6 上創(chuàng)建外鍵約束,讓它的鍵 deptId 作為外鍵關(guān)聯(lián)到表 tb_dept1 的主鍵 id,SQL 語句和運行結(jié)果如下所示。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

mysql CREATE TABLE tb_emp6

- (

- id INT(11) PRIMARY KEY,

- name VARCHAR(25),

- deptId INT(11),

- salary FLOAT,

- CONSTRAINT fk_emp_dept1

- FOREIGN KEY(deptId) REFERENCES tb_dept1(id)

- );

Query OK, 0 rows affected (0.37 sec)

mysql DESC tb_emp6;

+--------+-------------+------+-----+---------+-------+

| Field? | Type??????? | Null | Key | Default | Extra |

+--------+-------------+------+-----+---------+-------+

| id???? | int(11)???? | NO?? | PRI | NULL??? |?????? |

| name?? | varchar(25) | YES? |???? | NULL??? |?????? |

| deptId | int(11)???? | YES? | MUL | NULL??? |?????? |

| salary | float?????? | YES? |???? | NULL??? |?????? |

+--------+-------------+------+-----+---------+-------+

4 rows in set (1.33 sec)

以上語句執(zhí)行成功之后,在表 tb_emp6 上添加了名稱為 fk_emp_dept1 的外鍵約束,外鍵名稱為 deptId,其依賴于表 tb_dept1 的主鍵 id。

注意:從表的外鍵關(guān)聯(lián)的必須是主表的主鍵,且主鍵和外鍵的數(shù)據(jù)類型必須一致。例如,兩者都是 INT 類型,或者都是 CHAR 類型。如果不滿足這樣的要求,在創(chuàng)建從表時,就會出現(xiàn)“ERROR 1005(HY000): Can't create table”錯誤。

在修改表時添加外鍵約束

外鍵約束也可以在修改表時添加,但是添加外鍵約束的前提是:從表中外鍵列中的數(shù)據(jù)必須與主表中主鍵列中的數(shù)據(jù)一致或者是沒有數(shù)據(jù)。

在修改數(shù)據(jù)表時添加外鍵約束的語法格式如下:

閱讀剩余部分

相關(guān)閱讀

mysql日期如何轉(zhuǎn)字符串

【mysql數(shù)據(jù)庫】第三章解讀:服務(wù)器性能剖析(上)

mysql case when的用法是什么

mysql關(guān)閉后自動重啟怎么辦

mysql精講之二:dml數(shù)據(jù)操作語句

淺析mysql中concat以及group_concat的使用

mysql如何來創(chuàng)建表

mysql怎么清空數(shù)據(jù)表數(shù)據(jù)

mysql安裝配置jdbc和基礎(chǔ)學習

mysql怎么加入一個數(shù)據(jù)庫?


分享題目:mysql外鍵約束怎么建 mysql建立外鍵約束
文章網(wǎng)址:http://weahome.cn/article/hhicpo.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部