- 为什么需要约束
数据完整性是指数据的精确性和可靠性。他是防止数据库中存在不符合语义规定的数据和防止因错误信息的输入输出造成无效操作或错误信息而提出的
为了保证数据的完整性,SQL规范以约束的方式对表数据进行额外的条件限制。主要从一下四个方面考虑
①实体完整性(同一表中不能存在两条完全相同无法区分的纪录)
②域完整性(即给字段值加上取值的范围)
③引用完整性(如:员工表中的所在部门,要在部门表中能找到该部门)。
④用户自定义完整性(即用户自定义的规则,约束) - 非空约束 NOT NULL
即在字段的后面加上该约束后,该字段的值不能为空
使用方法:
①创建表的时候添加约束,在对应的字段后加上 NOT NULL 即可
②修改表的时候添加约束:ALTER TABLE 表名 MODIFY 字段名 字段类型 NOT NULL
③删除约束:ALTER TABLE 表名 MODIFY 字段名 字段类型 NULL - 唯一约束 UNIQUE
唯一约束可以是某个列的值唯一,也可以多个列组合值唯一。
唯一约束允许列的值为空(多个值都是NULL的话不算破坏唯一约束)
在创建唯一约束的时候如果不给其命名,就默认和列名相同,如果是多列组合的唯一索引,默认为第一个的列名.
MySQL会给唯一约束的列上默认创建一个索引(删除唯一约束时使用)
①创建表的时候添加唯一约束:1.在对应字段后加 UNIQUE即可.2.在建表语句的最后加上
CONSTRAINT 约束名 UNIQUE(字段名1,字段名2…), 表示给字段添加约束并命名也
可以直接: UNIQUE(字段名1,字段名2…) ,约束名的话默认为字段名,括号里的字段可以为1或多个,多个的话表示多个字段一起构成唯一约束
②修改表的时候添加唯一约束:
ALTER TABLE 表名 MODIFY 字段名 字段类型 UNIQUE;
或
ALTER TABLE 表名 ADD CONSTRAINT 约束名 UNIQUE(字段名);(该字段名也可以为多个)
③删除唯一约束
添加唯一约束的列会自动创建唯一索引,删除唯一约束只能通过删除唯一索引的方式,删除时需要指定唯一索引名,唯一索引名和唯一约束名一样.
ALTER TABLE 表名 DROP INDEX 索引名 - 主键约束 PRIMARY KEY
用来标识表中的一行记录
主键约束相当于唯一约束+非空约束的组合,主键约束的列不允许重复也不允许空值.
一个表中最多只能有一个主键约束
主键约束可以对应表中的一列或者多列,如果对应多列那么这些列都不能为空,组合的值也不能重复.
MYSQL中的主键约束名为PRIMARY,自己用CONSTRAINT命名也没有用,只有这一个名字.
当创建主键约束时,系统会默认在对应的列上建立主键索引,如果删除主键约束,主键索引便自动删除
最好不要修改主键字段的值,因为主键是数据记录的唯一标识,修改了主键的值可能会破坏数据的完整性.
①创建表的时候添加主键约束:1. 直接在字段名后加上PRIMARY KEY 即可,2.在建表语句的最后加上
PRIMARY KEY (字段名1,字段名2…)可为一或多个字段名,多个字段表示联合一起组成主键.
②修改表的时候添加主键约束:ALTER TABLE 表名 ADD PRIMARY KEY (字段名1,字段名2…)可为一或多个字段名,多个字段表示联合一起组成主键.
③修改表的时候删除主键约束: ALTER TABLE 表名 DROP PRIMARY KEY - 自增列 AUTO_INCREMENT
使某个字段的值自增
一个表最多只能有一个自增长列,当需要产生唯一标识符或顺序值时,可设置自增长
自增长约束的必须是键列(主键列,唯一键列),而且必须是整数类型的
如果自增列制定了 0 或者 null 则会在当前最大值的基础上自增.如果手动指定了具体的值,则可以直接赋值
①创建表的时候添加自增:在带有UNIQUE或者主键的后面加上 AUTO_INCREMENT
②修改表的时候添加自增:ALTER TABLE 表名 MODIFY 字段名 字段类型 AUTO_INCREMENT
③修改表的时候删除自增:ALTER TABLE 表明 MODIFY 字段名 字段类型 ;
注:在MYSQL8中AUTO_INCREMENT增加了数据持久化
如:在MYSQL5.7中自增到一个值为37,那么下一次插入的值就为38,当把插入的38删除后,再次插入就会是39而不是38,因为在内存中的下一个数是39.而如果将MYSQL5.7的服务重启,下一个插入的值就是38,因为内存中的值已经不存在了.而MYSQL8不同,AUTO_INCREMENT增加了数据持久化,会把数存入到文件中,重启服务器后,还是会从39开始插入. - 外键约束
略 - CHECK约束,DEFAULT 默认约束
CHECK 约束 , 在MYSQL5.7中不能使用,MYSQL8中可以使用 ,,,PASS
DEFAULT 约束,创建表的时候加到字段后,设置该字段的默认值.
Mysql复习笔记(day07 约束)
最新推荐文章于 2024-09-12 01:15:37 发布