MySQL速通——(四)定义约束

一、定义约束

数据库的表中有主键和唯一键,它们的作用都是提升查询速度。

主键和唯一键可以是表中的一列,也可以是由多个列构成的复合主键。在MySQL中,主键列必须遵守以下规则:

(1)一个表只能定义一个主键

(2)主键的值必须是能唯一标识表中的每一行,并且不能为空(null)

(3)复合主键列中不能包含不必要的多余列

(4)一个列名在复合主键的列表中只能出现一次

而唯一键在一个表内可以定义多个,并且允许有空值,但也不允许有重复值。定义主键约束时,系统会自动创建primary key索引,定义唯一键约束时,系统会自动创建unique索引。

1.定义主键约束

当主键为表中的一列时,只需添加primary key关键字即可

create table 表名(列名 列属性 primary key);

当为复合主键时,在所有列的属性定义后,加上primary key(列名)即可

create table 表名(列名 列属性,……,primary key(列名));

如果主键为一列,则上述两种方式都可以,但为多列时只能用第二种方法。此外,在定义主键约束过后,系统会自动为主键创建一个唯一索引,默认名为primary,也可以修改为其他名称。

2.定义唯一键约束

与主键约束相同,只需将上述的primary key变成unique key即可。

当列中存在重复值的时候,将其设置为unique键会报错

但不同于主键,唯一键允许有空值的存在。

3.定义check约束

check约束主要起一个筛选限制的作用,表中的某一列或者表只接受限定条件内的数据。

对列添加check约束

create table test1(
id int(10) not null,
name varchar(20),
age int(10) not null check(age>18 and age<26)
);

对表添加check约束

create table test1(
id int(10) not null,
name varchar(20),
age int(10) not null,
check(id in (select * from test))
);

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值