MySQL(3)-表的完整性约束


表的完整性约束作用 : 用于保证数据的完整性
常见的表的约束有 : PRIMARY KEY(PK主键) , FOREIGN KEY(FK外键) , NOT NULL , UNIQUE KEY(唯一键) , AUTO_INCREMENT , DEFAULT(默认值)
一 .DEFAULT ,NOT NULL 说明 : default : 指定默认值 not null : 不允许为空 , 就类似我们在网上注册账号时 , 有些内容必须要填写 , 空着就提交不了
例 : 创建 school 数据库 , 在 school 数据库中创建 student 表 , 字段有学号id , 姓名name , 性别sex ; 设置 id , name不允许为空 ,sex不允许为空 , 且sex默认设置为男 .创建表后查看student表的结构 , 可以看到null都为no , default选项sex字段默认为m现在插入一条数据 , 如 : insert into student value(1,’jack’,’m’);从上图可以看出成功插入 , 再次插入一条数据 : insert into student(id,name) value(1,’lucy’);只插入两个字段 , sex字段没有数据插入 , 但因为该字段不允许为空且默认值设为m , 所以会默认记录为m
二 . 设置唯一约束 UNIQUE 唯一约束 : 控制此列的值不允许重复 , 必须是唯一的一个值
例 : 创建student2表 , 在student表的基础上把id字段设为uniquecreate table student2( id int unique, name varchar(50) not null, sex enum(‘m’,’f’)default ‘m’ not null); 可以看到id字段key为UNI , 这时插入两条记录可以看出 , 因为id字段设置了unique , 插入两条记录的id值都为1 , 所以插入数据报错三 . 设置主键约束 PRIMARY KEY primary key 字段的值是不允许重复 , 且不允许为空 , 即 UNIQUE + NOT NULL主键有单列主键多列主键(复合主键) ,多列主键即两条或两条以上的字段设置为主键例 : 创建student3表 , 将字段 id 设为主键create table student3(id int primary key ,name varchar(50) not null ,sex enum(‘m’,’f’));设置主键之后 , 插入数据时id字段的值不能为空且不能出现相同时 , 才能插入成功(复合主键同理 , 即多个字段设置primary key 或 not null unique)四 . 设置外键约束 FOREIGN KEY 外键功能 : 设置字表与父表 , 对父子表进行同步更新 , 同开发云主机域名步删除实例 : 在test表中创建一张员工(employees)表 , 一张工资(payroll)表 , 将两张表设置外键员工表(父表) :工资表(子表) 查看这两张表结构:创建完两张表后 , 在父表employees中插入tom , jack 的记录在字表中插入一条Lucy的记录 ,从下图看出插入数据Lucy会报错 , 因为做了外键 , 并且父表中没有Lucy的信息再在payroll表中插入tom ,jack字段 :insert into payroll(id,pname,payroll) values (1,’tom’,15.6), (2,’jack’,100.5);插入值之后 , 将父表employees中的tom改为tomer , 再看看字表中的变化 , 子表的tom也变成了tomer

结论:
0、外键的作用就是实现在子表中引用父表中某列的值,这样子表中外键的值是依赖于父表的。
1、父表中的主键才能作为子表中的外键。
2、当父表中某个员工的记录修改时,子表也会同步修改
3、当父表中删除某个员工的记录,子表也会同步删除

五 . 设置自增字段值 AUTO_INCREMENT 例 : 在test库中创建一张zhi表 ,将id设置成自增创建表之后插入数据 :insert into zhi(name,age) values(‘tom’,18),(‘jack’,19),(‘lucy’,20); #可以看出插入的数据没有id自段插入上述字段可以看出 , id 字段自动一自增的形式自动补全数据

相关推荐: DOCKER应用

https://yq.aliyun.com/articles/40494?spm=a2c4e.11153940.0.0.2e933068PIF5zP https://yq.aliyun.com/articles/2914?spm=a2c4e.11153940.…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 06/09 16:52
下一篇 06/09 16:52

相关推荐