目录
- 一、前言
- 二、概念
- 三、数据库约束
- 3.1 约束类型
- 3.1.1 NOT NULL 约束
- 3.1.2 UNIQUE (唯一)
- 3.1.3 DEFAULT(默认)
- 3.1.4 PRIMARY KEY(主键)
- 3.1.5 FOREIGN KEY(外键)
- 3.1.6 CHECK
- 四、总结
一、前言
欢迎大家来到权权的博客~ 欢迎大家对我的博客进行指导,有什么不对的地方,我会及时改进哦~
博客主页链接点这里–>:权权的博客主页链接
二、概念
对表中的数据进行限定,保证数据的正确性,有效性,完整性,是关系型数据库的一个重要功能。
三、数据库约束
3.1 约束类型
1.主键约束(primary key):保证该字段具有非空且唯一性,一张表中只能有一个主键,主键是表中字段的唯一标识。
2.非空约束(not null):保证字段不能为空。
3.唯一约束(unique):保证该字段具有唯一性但是可以为null。
4.外键约束(foreign key):在一个表中存在的另一个表的主键或唯一键称此表的外键。
5.默认约束(default+默认值):用于保证该字段有默认值(用引号引起来)。
6.检查约束(check)用来检查数据表中,字段值是否有效。比如年龄、性别。
3.1.1 NOT NULL 约束
指定某一列不能存储NULL值。
创建表时,在相应的字段加入约束类型
>create table if not exists student
>(
>name varchar(255) null,
>id bigint(20) null,
>age int(11) not null
>);
查表结构如下:
3.1.2 UNIQUE (唯一)
保证某列的每行必须有唯一的值
3.1.3 DEFAULT(默认)
规定没有给列赋值时的默认值
给school表添加name字段并且设置默认约束
3.1.4 PRIMARY KEY(主键)
not null 和 unique 的结合,确保某列(或两个列多个列的结合)有唯一标识,有助于更容易更加快速地找到表中的一个特定的记录。
是一种用于唯一标识表中每一行数据的标识符。在Mysql中,主键可以是一个或多个列的组合,但是必须满足以下条件:
主键列的值必须唯一,不能重复。
主键列的值不能为空,不能为NULL。
一个表只能有一个主键。
主键约束的列即是非空也是唯一的
把表中ID设置成为唯一且非空。
注意:
1.一个表中不能有两个主键:
2.一个主键可以包含多个列(复合主键)
3.1.5 FOREIGN KEY(外键)
外键是一种用于建立表与表之间关联关系的机制。外键可以用于保证数据的完整性和一致性。
语法:
foreign key(列名) references 主表名(主列名);
表中的某个列值必须是别一张表中的主键列,或是唯一约束列的值,也就是当前表中的值在另一张表中必须存在,且满足主键或者唯一约束。
创建animals表跟dog表并且设置主键约束跟外键约束;
3.1.6 CHECK
用来检查数据表中,字段值是否有效,比如年龄、性别。
CHECK
约束是数据库表中的一种规则,用于限制列可以接受的值。当对表进行数据插入或更新操作时,数据库会检查这些值是否满足CHECK
约束中定义的条件。如果不满足,操作将会失败,并且数据库会返回一个错误。
如何创建带有CHECK约束的表?
在创建表时,你可以在列定义后直接添加CHECK
约束。以下是一个例子:
CREATE TABLE employees (
id INT AUTO_INCREMENT PRIMARY KEY,
first_name VARCHAR(50) NOT NULL,
last_name VARCHAR(50) NOT NULL,
salary DECIMAL(10, 2),
department ENUM('HR', 'Tech', 'Sales', 'Marketing') NOT NULL,
-- 在这里添加CHECK约束,确保工资不能低于0
CONSTRAINT chk_salary CHECK (salary >= 0)
);
在这个例子中,chk_salary
是CHECK
约束的名称,它确保了salary
列的值不能小于0。
注意事项:
- 在MySQL 5.7之前,虽然可以定义
CHECK
约束,但它们实际上不会强制执行。 - 从MySQL 8.0开始,
CHECK
约束默认是启用的,并且会被强制执行。 - 在MySQL 5.7中,如果想要
CHECK
约束被强制执行,必须确保服务器运行在严格模式。 CHECK
约束可以引用同一表中的多个列。CHECK
约束不能引用其他表中的列。- 当插入或更新数据时,如果违反了
CHECK
约束,操作将会失败,并返回错误。
四、总结
欧耶!!!我学会啦!!!