本文目录一览:
- 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)