一、约束:
什么是约束?
为了确保表中的数据的完整性(准确性、正确性),为表添加一些限制。是数据库中表设计的一个最基本规则。使用约束可以使数据更加准确,从而减少冗余数据(脏数据)。
数据库完整性约束分为以下几个大类
(一)、主键约束
理论上来说每一个数据表都必须有一个唯一主键作为数据的唯一标识,设置主键的列不允许为空,主键习惯 id 表示,可以在创建数据时直接指定,也可以通过修改表结构直接添加,设置为主键的列在添加数据时不能重复,既唯一性。
CREATE TABLE `student` (
`id` int(11) NOT NULL ,
`name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL,
`age` int(11) DEFAULT NULL,
`email` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin ROW_FORMAT = Compact;
添加两条主键id的数值
INSERT INTO student(id,name,age,email) VALUES (1,'张安',1) INSERT INTO student(id,name,age,email) VALUES (1,'李四',20,'1)
我们会发现有错误
主键一般不是数据表当中的应用列,而是额外增加的列,而是额外增加的列,如果手动维护的话比较麻烦,所以针对主键Mysql 定制了一种自动增长的策略,既不需要手动给值,而是让mysql自己去维护这个主键,方法是每次找到数据表中最大的ID值加1.
CREATE TABLE `student` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL,
`age` int(11) DEFAULT NULL,
`email` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE
INSERT INTO student(name,age,email) VALUES
INSERT INTO student(name,age,email) VALUES
自动递增 AUTO_INCREMENT 的特点
1.只有整形数据列才能设置为自动递增
2.只有主键才能设置为自增列
3.自动增长,新增数据时可以不赋值
4.初始化默认值为1,默认增量为1
5.自增列一旦被使用过就不会出现
(二)、唯一约束
唯一约束用来保护表中某列数据不允许重复,与主键约束类似,但级别没有主键高。一份表中唯一约束可以创建多个,并且唯一约束的列允许为空。注意varchar长度为255时,无法设置唯一约束。
唯一约束一般用于约束手机号、账户、邮箱等信息。
INSERT INTO student(name,age,email) VALUES ('张安',18,'
INSERT INTO student(name,age,email) VALUES ('lisi',20,'
当我们做第二次插入的时候我们会发现如下错误
(三)、非空约束
可以通过 not null 设置数据表中某一列是必填字段,既不允许为空。
(四)、默认约束
可以通过default设置默认值约束,设置了默认约束的列,如果不给值就会使用默认值来填充。
CREATE TABLE `student` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL,
`age` int(11) DEFAULT 18 ,
`email` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin ROW_FORMAT = Compact;
INSERT INTO student(name,email) VALUES ('张安','1443005893@qq.com')
INSERT INTO student(name,email) VALUES ('张安','1443005893@qq.com')
(五)、外键约束
外键用来让两个表的数据之间建立连接,保证数据的一致性和完整性。