首页技术文章正文

mysql数据库约束有哪些?【Linux云计算+运维开发培训】

更新时间:2021-05-26 来源:黑马程序员 浏览量:

1577370495235_学IT就到黑马程序员.gif

为了防止数据表中插入错误的数据,在MySQL中,定义了一些维护数据库完整性的规则,即表的约束。下表列举了常见的表的约束。

1. 主键约束

在MySQL中,为了快速查找表中的某条信息,可以通过设置主键来实现。主键约束是通过PRIMARY KEY定义的,它可以唯一标识表中的记录,这就好比身份证可以用来标识人的身份一样。在MySQL中,主键约束分为两种,具体如下。

1.1 单字段主键

单字段主键指的是由一个字段构成的主键,其基本的语法格式如下所示:

字段名 数据类型 PRIMARY KEY

【案例】

创建一个数据表example01,并设置id作为主键,SQL语句如下:

CREATE TABLE example01(id INT PRIMARY KEY,
                          name VARCHAR(20),
                          grade FLOAT);

上述SQL语句执行后,example01表中创建了id、name和grade三个字段,其中,id字段是主键。

1.2 多字段主键

多字段主键指的是多个字段组合而成的主键,其基本的语法格式如下所示:

PRIMARY KEY (字段名1,字段名2,…,字段名n)

在上述格式中,“字段名1,字段名2,…,字段名n”指的是构成主键的多个字段的名称。

【案例】 创建一个数据表example02,在表中将stu_id和course_id两个字段共同作为主键,SQL语句如下:

CREATE TABLE example02(stu_id INT,
                       course_id INT,
                       grade FLOAT,
                       PRIMARY KEY(stu_id,course_id)
                       );

上述SQL语句执行后,example02表中包含stu_id、course_id和grade三个字段,其中,stu_id和course_id两个字段组合可以唯一确定一条记录。

注意:每个数据表中最多只能有一个主键约束,定义为PRIMARY KEY的字段不能有重复值且不能为NULL值。

2. 非空约束

非空约束指的是字段的值不能为NULL,在MySQL中,非空约束是通过NOT NULL定义的,其基本的语法格式如下所示:

字段名 数据类型 NOT NULL;

【案例】 创建一个数据表example04,将表中的name字段设置为非空约束,SQL语句如下:

CREATE TABLE example04(id INT PRIMARY KEY,
                       name VARCHAR(20) NOT NULL,
                       grade FLOAT);

上述SQL语句执行后,example04表中包含id、name和grade三个字段。其中,id字段为主键,name字段为非空字段。需要注意的是,在同一个数据表中可以定义多个非空字段。

3. 唯一约束

唯一约束用于保证数据表中字段的唯一性,即表中字段的值不能重复出现。唯一约束是通过UNIQUE定义的,其基本的语法格式如下所示:

字段名 数据类型 UNIQUE;

【案例】 创建一个数据表example05,将表中的stu_id设置为唯一约束,SQL语句如下:

CREATE TABLE example05(id INT PRIMARY KEY,
                       stu_id INT UNIQUE,
                       name VARCHAR(20) NOT NULL
                       );

上述SQL语句执行后,example05表中包含id、stu_id和name三个字段。其中,id字段为主键,stu_id字段为唯一值,该字段的值不能重复,name字段的值不能为空值。

4. 默认约束

默认约束用于给数据表中的字段指定默认值,即当在表中插入一条新记录时,如果没有给这个字段赋值,那么,数据库系统会自动为这个字段插入默认值。默认值是通过DEFAULT关键字定义的,其基本的语法格式如下所示:

字段名 数据类型 DEFAULT 默认值;

【案例】 创建一个数据表example06,将表中的grade字段的默认值设置为0,SQL语句如下:

CREATE TABLE example06(id INT PRIMARY KEY AUTO_INCREMENT,
                       stu_id INT UNIQUE,
                       grade FLOAT DEFAULT 0
                      );

上述SQL语句执行后,example06表中包含id、stu_id和grade三个字段。其中,id字段为主键,stu_id字段的值唯一,grade字段的默认值为0。

5、外键约束(foreign key) FK

外键约束是用来加强两个表(主表和从表)的一列或多列数据之间的连接的,可以保证一个或两个表之间的参照完整性,外键是构建于一个表的两个字段或是两个表的两个字段之间的参照关系。

创建外键约束的顺序是先定义主表的主键,然后定义从表的外键。也就是说只有主表的主键才能被从表用来作为外键使用,被约束的从表中的列可以不是主键,主表限制了从表更新和插入的操作。

6、自增约束(AUTO_INCREMENT)

自增约束(AUTO_INCREMENT)可以约束任何一个字段,该字段不一定是PRIMARY KEY字段,也就是说自增的字段并不等于主键字段。

但是PRIMARY_KEY约束的主键字段,一定是自增字段,即PRIMARY_KEY 要与AUTO_INCREMENT一起作用于同一个字段。

当插入第一条记录时,自增字段没有给定一个具体值,可以写成DEFAULT/NULL,那么以后插入字段的时候,该自增字段就是从1开始,没插入一条记录,该自增字段的值增加1。当插入第一条记录时,给自增字段一个具体值,那么以后插入的记录在此自增字段上的值,就在第一条记录该自增字段的值的基础上每次增加1。

也可以在插入记录的时候,不指定自增字段,而是指定其余字段进行插入记录的操作。



猜你喜欢:

猜你喜欢:

mysql索引如何使用?

MySQL和MariaDB有什么区别?

mysql5.5安装教程:mysql下载与安装

什么是mysql事务场景?

黑马程序员Linux云计算+运维开发培训课程

分享到:
在线咨询 我要报名
和我们在线交谈!