SQL常见约束有哪些?今天我们一起来详细了解下!
1、主键约束
1、PRIMARY KEY 约束唯一标识数据库表中的每条记录。
2、主键必须包含唯一的值。
3、主键列不能包含 NULL 值。
4、每个表都应该有一个主键,并且每个表只能有一个主键。
==主键约束:要求主键这一列必须是唯一的、非空,另外一定要特别注意:一个表可以没有主键,但是如果有主键只能有且仅有一个主键。==
遵循原则:
1)主键应当是对用户没有意义的(没创建一个数据表默认都应该拥有一个id字段)
2)永远也不要更新主键。
3)主键不应包含动态变化的数据,如时间戳、创建时间列、修改时间列等。(1-无穷大)
4) 主键应当由计算机自动生成。
创建主键约束:创建表时,在字段描述处,声明指定字段为主键
删除主键约束:如需撤销 PRIMARY KEY 约束,请使用下面的 SQL
> 补充:自动增长 => auto_increment,从1开始,依次递增
我们通常希望在每次插入新记录时,数据库自动生成字段的值。
我们可以在表中使用 auto_increment(自动增长列)关键字,自动增长列类型必须是整型,自动增长列必须为键(一般是主键)。
下列 SQL 语句把 "Persons" 表中的 "Id" 列定义为 auto_increment 主键
向persons添加数据时,可以不为Id字段设置值,也可以设置成null,数据库将自动维护主键值:
运行效果:
> 特别说明:如果某个列设置为自动增长,则这一列必须设置为主键,否则系统会报错。
2、非空约束
NOT NULL 约束强制列不接受 NULL 值。
NOT NULL 约束强制字段始终包含值。这意味着,如果不向字段添加值,就无法插入新记录或者更新记录。
下面的 SQL 语句强制 "id" 列和 "last_name" 列不接受 NULL 值:
3、唯一约束
UNIQUE 约束唯一标识数据库表中的每条记录。
UNIQUE 和 PRIMARY KEY 约束均为列或列集合提供了唯一性的保证。
PRIMARY KEY 拥有自动定义的 UNIQUE 约束。
> 注:虽然唯一约束与主键约束在描述上功能类似,但是其实还是很多区别的。
相同点:都可以表示唯一性,唯一标识数据表中的每一条记录(一行)
不同点:
① 插入数据的来源不同
主键大多数都是自动编号结合primary key
唯一大多数都是手工设置(不一定都是数字类型,如身份证号也可以表示唯一)
② 主键必须非空字段,但是唯一约束不要求列必须是非空的,这一列也可以出现null空值
③ 一个数据表中如果有主键,有且仅有1个主键。但是在一个数据表中可以拥有多个唯一约束
所以数据库考察中,经常会问:主键约束与唯一约束区别
主键一定满足唯一约束,但是唯一约束不一定是主键。
请注意:
每个表可以有多个 UNIQUE 约束,但是每个表只能有一个 PRIMARY KEY 约束。
4、默认值约束
default 默认值
5、外键约束(了解)
外键约束(==多表==关联使用)
比如:有两张数据表,这两个数据表之间==有联系==,通过了==某个字段==可以建立连接,这个字段在其中一个表中是==主键==,在另外一张表中,我们就把其称之为==外键==。
6、小结
① 主键约束:唯一标示,不能重复,不能为空。
1)主键应当是对用户没有意义的,一般都叫id
2)永远也不要更新主键,自动编号
3)主键不应包含动态变化的数据,如时间戳、创建时间列、修改时间列等。
4)主键应当由计算机自动生成,一般配合auto_increment自动增长
自动增长:
我们可以在表中使用 auto_increment(自动增长列)关键字,自动增长列类型必须是整型,自动增长列必须为键(一般是主键)。
② 非空约束:
NOT NULL 约束强制列不接受 NULL 值。
③ 唯一约束:
UNIQUE 约束唯一标识数据库表中的每条记录。
UNIQUE 和 PRIMARY KEY 约束均为列或列集合提供了唯一性的保证。
PRIMARY KEY 拥有自动定义的 UNIQUE 约束。
④ 默认值约束
default 默认值
⑤ 外键约束:
多表关联字段、在一个表中是主键,在另外一个表中是非主键(则这个字段一般就称之外键)