专栏/SQL常见约束有哪些?这个解释很详细了!

SQL常见约束有哪些?这个解释很详细了!

2022年07月28日 06:59--浏览 · --喜欢 · --评论
粉丝:1456文章:410

SQL常见约束有哪些?今天我们一起来详细了解下!

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 默认值

⑤ 外键约束:

多表关联字段、在一个表中是主键,在另外一个表中是非主键(则这个字段一般就称之外键)



投诉或建议