本文目錄一覽:
- 1、mysql是否有必要使用外鍵約束
- 2、在mysql中怎麼同時運用主鍵和外鍵約束
- 3、如何在MySQL中設置外鍵約束以及外鍵的作用
- 4、mysql在建表時添加外鍵約束
- 5、請列舉mysql中常見的約束類型
- 6、如何在MySQL中設置外鍵約束
mysql是否有必要使用外鍵約束
如果使用外鍵後,mysql需要額外的開銷來檢測數據的完整性和一致性檢測,容易造成死鎖,mysql處理性能勢必會下降。
如果對數據的要求不是那麼嚴格, 建議不要使用外鍵約束,如果一定要保證完整性,可通過其他方法實現,如實體完整性通過逐漸或唯一索引來實現,域的完整性通過限制列的數據類型、格式或值的範圍來實現,參照完整性可通過編寫觸發器來實現或者通過代碼的邏輯判斷來實現。
在mysql中怎麼同時運用主鍵和外鍵約束
一,添加主鍵~
ALTER TABLE table_name ADD CONSTRAINT pk_name PRIMARY KEY(列名);
添加外鍵~
ALTER TABLE table_name ADD CONSTRAION pk_name FOREIGN KEY(列名) REFERENCES table_name(列名);
基礎語法~其他條件自行添加二,alter table table_name add constraint fk_column_id foreign key(column) references 主鍵表 (column_id);
如何在MySQL中設置外鍵約束以及外鍵的作用
1.外鍵的作用,主要有兩個:
一個是讓數據庫自己通過外鍵來保證數據的完整性和一致性
一個就是能夠增加ER圖的可讀性
2.外鍵的配置
1)先創建一個主表,代碼如下:
#創建表student,並添加各種約束
create
table
student
(
id
int
primary
key
,
#主鍵約束
name
varchar(20)
,
#唯一約束
age
int
NOT
NULL,
#非空約束
sex
varchar(2)
,
address
varchar(20)
default
‘重慶’
#默認約束
)
;
再通過一個外鍵,創建一個分數表,這樣的話,就可以方便查詢。代碼如下:
#創建分數表
create
table
score
(
id
int
primary
key
,
sid
int
,
china
int
,
history
int,
english
int,
constraint
FK_sid
foreign
key(sid)
references
student(id)
#通過外鍵創建鏈接
)
;
創建外鍵的方法有很多,其中最常見創建外鍵的格式是:constraint
FK_***
foreign
key(**)
references
鏈接的外表
刪除外鍵:
alter
table
drop
foreign
key
‘外鍵名’.
注意:
只有在定義外鍵時,用constraint
外鍵名
foreign
key
….
方便進行外鍵的刪除
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中常見的約束類型
一、Mysql支持以下約束:
※ 主鍵約束 :primary key
※ 唯一性約束:unique key
※ 外鍵約束:foreign key
※ 非空約束:not null
※ 默認值約束:default
二、主鍵約束:
一個表只能有一個主鍵,當建表時忘記設置主鍵約束時.設置為主鍵的列查詢速度會非常快,所以一般會用聚集索引,這個我們後面會講到。
添加主鍵約束:設置myself表的age為主鍵
語法:alter table 表名 add primary key;(列名)※ 可以有多個列名。
三、外鍵約束:
何為外鍵,當建表時需要用到另外一個表的主鍵作為本表的的主鍵時,需要設置外鍵。設置外間後,若想在刪除本表數據時會級聯刪除或者默認刪除其他方式。
添加外鍵約束:設置本表的cno為外鍵
語法:alter table 表名稱 add foreign key (列名稱) references 關聯表名稱(列名稱);
四、非空約束:
當插入新數據時對應的列為不能空。非空約束是相對於默認值約束而說的。
添加非空約束:
語法:alter table 表名 modify 列名 列類型 not null;
五、默認值約束:default:
當插入時沒有插入值時,會自動插入默認值。默認值約束相對於非空約束而說。
添加默認值約束:
語法:alter table 表名 add 列名 列類型 not null default ‘默認值’;
六、唯一性約束:
本列的內容只能唯一不能重複。
添加唯一約束:
語法:alter table 列名 add unique(列名稱) ※可以有多個列名稱,用逗號隔開。
如何在MySQL中設置外鍵約束
create table a (
a_id int primary key, ##主鍵
a_name varchar(2)
)
create table b(
b_id int ,
b_name varchar(2)
)
##添加外鍵
alter table b add constraint fk_b_a foreign key b_id references a(a_id)
原創文章,作者:QKXN,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/133483.html