概览
为了规范数据库数据格式。在用户进行插入,修改,删除等操作时。DBMS(Database Management System)自动按照约束条件对数据进行监测,使不符合规范的数据不能进入数据库。以确保数据库中存储的数据正确,有效
约束条件和数据类型的宽度一样,都是可选参数,主要分为以下几种。
not null
当前这一列的内容不能为空,性别
如果没有设置表名这一列内容可有可无
unique
唯一可以有一个空,姓名,身份证号,用户名等
primary key
主键
- 自动创建索引
- 唯一 + 非空
- 加速查询,通过输入主键查询对应的内容非常快
- 每张表只能有一个主键
应用: 员工号码,学号,用户名,用户id
例1:
unique,primary key实例
创建一个表
windows系统怎样设置mysql为严格模式
再重启数据库服务器,退出客户端,再登录客户端。查询数据库模式
unique key不能输入重复的值
primary key 主键也不能重复
foreign key
外键,支持外键的存储引擎只有Innodb
不在一个表的键
例:一个公司50000000人,有5个部门,有5个办公室,如果存在一张表上,部门和办公室重复了很多次。非常浪费内存。为了节省空间,可以建两个表,一张表存员工信息,一张表只有5行,存部门信息。员工信息中部门id对应了部门表的id。部门id相对于员工信息表就是他的外键。
完整性约束实例:
如果没有设置主键,那么第一个非空唯一的字段会被设置成主键。
非空 + 唯一 约束不能插入空值
指定主键后,其他非空+唯一约束都不会成为主键。
联合主键:给一个以上的字典设置唯一非空约束
联合唯一
设置默认值实例
设置默认值后,如果该字段没输就是默认值
如果输入了就为输入的值。
设置外键实例
外键,只有另一个表中设置了unique的字段才能作为本表的外键
- 如果一个表的字段作为外键对另一个表提供服务,那么默认不能直接删除外表中正在使用的数据
- 外键 on delete cascade连级删除, on update cascade连级更新
删父表,子表中对应的记录跟着删
更新父表,子表中对应的记录跟着改