什么是约束(constraint)
保证表中的数据有效,完整性,一致性。
约束作用在哪
一般是字段。像用户名(不能重复).
常见的约束
- 主键约束
- 外键约束
- 非空约束
- 唯一约束
- 自增长
在数据库的使用过程中我们经常要限制字段的取值,比如有些字我们不能让它为空,我们就需要添加非空约束,本关我们就来学习如何添加这些常用的约束。
1.怎么添加唯一约束 Unique Constraint;
2.怎么添加非空约束 Not Null Constraint;
3.怎么添加默认约束 Default Constraint;
4.怎么设置字段的值自动增加 auto_increment。
表级约束和列约束
- 没有放在列的后面的约束,就是表级约束,表级约束常用于多个字段的联合约束,常定义放在最后一行。
- 表级约束:联合约束
- 列级约束:单一约束
怎么添加唯一约束
唯一约束(Unique Constraint)要求该列唯一,但是允许有多个为空(null),。唯一约束可以确保一列或者几列不出现重复值。
定义部门表的部门名称唯一,SQL语句如下:关键词 UNIQUE。
CREATE TABLE t_dept(
id INT PRIMARY KEY,
name VARCHAR(22) UNIQUE, --唯一,也就是赋值的时候不能重复
location VARCHAR(50)
)
怎么给多个字段添加联合唯一约束
联合唯一约束:多个字段不能同时相同,什么意思,如果是两个字段是联合唯一约束,那么两个字段不能同时相等,但是可以一个子段相等一个字段不相等。
CREATE TABLE t_dept(
id INT PRIMARY KEY,
name VARCHAR(22) ,
location VARCHAR(50),
unique(name,location) --这样就是两个子段联合唯一约束,没有放在列后面,就是表级约束
)
怎么添加非空约束
关键词:NOT NULL;只有列级约束,没有表级约束。
例如:
CREATE TABLE t_dept(
id INT PRIMARY KEY,
name VARCHAR(22) NOT NULL, --not null 是非空约束,赋值时就必须给值
location VARCHAR(50)
)
非空字段添加数据时必须赋值。
怎么使用默认约束
默认约束:即给字段一个默认值。
关键词:DEFAULT;
例如:
CREATE TABLE t_emp(
id INT PRIMARY KEY,
name VARCHAR(22),
sex VARCHAR(2) DEFAULT '男' --这就是给性别添加默认值 为男
) DEFAULT CHARSET=utf8;
注意:
如果是添加字符串型默认值要使用单引号,双引号也应该可以,这里根据实际情况来,如果是整型则不需要加任何符号;
如果要添加的是中文默认值,则需要加上DEFAULT CHARSET=utf8;使用英文字符则不需要。
设置表的属性值自动增加
在数据库应用中,经常有个需求就是,在每次插入新纪录时,系统自动生成字段的主键值,即:
关键词:AUTO_INCREMENT,默认情况下初始值和增量都为1。
例如:
命令行中代码如下
自增长约束
注意:在mysql 中,一张表中自增长约束(auto_increment)只能有一个。
- 自增长约束可以作用于主键时。
- 自增长约束作用于非主键时,必须要加上唯一约束unique.也就是自增长约束必须要搭配上唯一约束。不然会报错。
同时添加非空和唯一约束
在mysql 中,给一列同时添加非空约束和唯一约束,那么该字段就自动设置成了主键。
主键约束(非常重要)
主键约束:一种约束,等于非空约束和唯一约束的联合 约束,一张表只能有一个主键约束。(废话)
主键字段:主键约束的字段,可以有多个字段联合为主键字段,但是不推荐(废话)
主键值:主键约束的字段的值。(废话)
任何表都应该有主键,没有主键,表无效!!!
主键约束常用的类型:int,bigint,char
自然主键:主键值是一个自然数,和业务没有关系,开发中使用的较多。
业务主键:例如身份证号码作为主键,银行卡号作为主键。
自增
auto_increment,一开始不赋值给自增字段的话,一开始是1.