当前课程知识点:MySQL数据库案例教程 > 第2章 数据库和表的基本操作 > 2.4 约束设置 > 2-4约束设置视频
同学们好
今天我们来学习第2章
数据库和表的基本操作
本次课的内容是约束
我们先看一个案例
将以下两位员工信息录入表格中
新来的工作人员
由于经验不足
不小心将两人的工号录成一样了
造成两个人共用一个工号
如此错误
我们该如何避免呢
在MySQL中
如果想针对表中的数据做一些完整性检查
可以通过表的约束来完成
MySQL支持多种约束
本节课将详细介绍
关于表的约束
我们先学习主键约束
主键约束是表中一列或多列的组合
通过PRIMARY KEY定义
主键是表的一个特殊字段
该字段能唯一标识该表中的每一条信息
主键又分为单字段主键和多字段主键
单字段主键由一个字段组成
其语法格式为
字段名 数据类型 PRIMARY KEY
我们来看一个案例
案例1 创建课程表course
将课程号cno设置为主键
打开MySQL可视化工具
我们先使用USE stu 命令
选择stu数据库
再使用DROP TABLE course命令
将之前创建的course表删除
然后输入创建表命令
请同学们注意
本次课程中使用的表
在表的操作和数据类型中
我们都已经见过
所以本次课程
对于创建表的基本语句
我们不再详细讲解
直接使用
在字段cno的数据类型后边
添加PRIMARY KEY关键字
将这三条语句
选中 执行
执行成功后
course表就创建成功了
并且已经将cno设置为主键了
我们再通过DESC course命令
查看一下表结构
选中 执行
从查询结果可以看到
已经将cno设置为主键了
多字段主键
是指多个字段组合而成的主键
其语法格式为
PRIMARY KEY(字段名1 字段名2 字段名n)
注意
当主键是由多个字段组成时
不能直接在字段名后面
接下来我们看一个案例
案例2 创建数据表score
将sid和cno两个字段共同作为主键
先将之前创建的score表删除
输入命令 DROP TABLE score
同样创建score表的语句
我们也直接使用
不再详细讲解
在最后一个字段后边添加逗号
添加 PRIMARY KEY(sid,cno)
选中 执行
执行成功后
score 表就创建成功了
并将sid 和cno两列设置为了主键
我们通过DESC score命令
查看一下表结构
可以看到
sid 和cno两列确实被设置为主键了
外键约束经常和主键约束一起使用
用来确保数据的一致性
我们会在后续章节详细讲解
接下来我们学习非空约束
非空约束
是用来约束表中的字段不能为空
在MySQL中使用关键字 NOT NULL
来约束该列的值不能为空
其语法格式为
字段名 数据类型 NOT NULL
我们看一个案例
案例3 创建课程表course
将课程名cname设置为非空
我们先将之前创建的数据表course删除
输入命令 DROP TABLE course
在cname 字段后
添加NOT NULL非空约束
选中 执行
可以看到执行成功了
我们再查看一下表结构
可以看到cname添加了非空约束
接下来我们学习唯一约束
唯一约束
通常设置在除了主键以外的其它列上
在定义完列之后
直接使用UNIQUE关键字指定唯一约束
语法格式如下
字段名 数据类型 UNIQUE
唯一约束
是指所有记录中字段的值不能重复出现
唯一约束与主键约束相同点是
它们都可以确保列的唯一性
不同的是
唯一约束在一个表中可以有多个
而且
唯一约束的列允许有空值
而主键约束
在一个表中只能有一个
且不允许有空值
接下来我们看一个案例
案例4 创建课程表course
将课程名cname设置为唯一
我们先输入命令 DROP TABLE course
然后在cname字段后
添加UNIQUE
唯一约束
选中 执行
可以看到执行成功了
我们再查看一下表结构
可以看到cname设置了唯一约束
接下来我们学习检查约束
检查约束
是用来检查数据表中字段值的有效性
从MySQL8.0.16版本开始
MySQL开始真正意义上支持检查约束
创建表时
在表中某个列的定义后
加上关键字CHECK
后边跟上表达式
通过后边的表达式来约束该列的值
其语法格式如下
字段名 数据类型CHECK <表达式>
其中“表达式”指的就是 SQL 表达式
用于指定需要检查的限定条件
接下来我们看一个案例
案例5 创建课程表score
要求分数result
字段值大于等于0且小于等于100
我们先将之前创建的数据表score删除
输入命令 DROP TABLE score
在score表的字段result的类型FLOAT后
添加check(result >=0
AND result <=100)
选中 执行
可以看到执行成功了
我们再查看一下表结构
result 的检查约束并没有显示出来
那如何确定是否设置成功了呢
我们人为添加两条数据测试一下
我们在SQLYog左侧的资源管理器里
找到stu数据库
找到其下的score表
鼠标右键打开表
输入数据 1 0101 01 80
再输入一条数据 2 0101 03 110
这条语句result 已经在check约束范围外
弹出了错误提示框
在错误信息中可以看到
它违反了检查约束
我们在设置检查约束时
要根据实际情况进行设置
这样才能够减少无效数据的输入
接下来我们学习默认值约束
默认值
用来指定某列的默认值
创建表时
可以使用DEFAULT关键字
设置默认值约束
具体的语法格式如下
字段名 数据类型 DEFAULT <默认值>
接下来我们看一个案例
案例6 创建学生表student
将表中department字段的默认值
设置为信息工程系
我们先将之前创建的数据表
student删除
DROP TABLE student
在student表的department字段的数据类型后
添加DEFAULT '信息工程系'
选中 执行
可以看到执行成功了
我们再查询一下表结构
可以看到department
设置了默认值信息工程系
接下来我们学习最后一部分
自增长设置
在 MySQL 中
当主键定义为自增长后
这个主键的值就不再需要用户输入数据了
而由数据库系统根据定义
自动赋值
每增加一条记录
主键会自动以相同的步长进行增长
其语法格式为
字段名 数据类型 AUTO_INCREMENT
接下来我们看一个案例
案例7 创建数据表score
将scid 字段设置为自增长
我们先将之前创建的score表删除
输入命令 Drop table score
我们先将之前创建的score表删除
输入命令 Drop table score
在score表的字段scid 后边
添加primary key auto_increment
选中 执行
执行成功后
score 表就创建成功了
我们查看一下表结构
可以看到scid 字段
被设置为自增长了
以上是本节课的全部内容
给大家留一个综合实践题
按下列要求完成三个表的创建
1 根据表中要求添加各种约束
创建表student
2 根据表中要求添加各种约束
创建表course
3 根据表中要求添加各种约束
创建表score
请同学们利用下课时间来完成这些实践题
最后
我们对本次课进行总结
我们学习了
1 主键约束
主键约束是使用最频繁的约束
2 非空约束
用来约束表中的字段不能为空
3 唯一约束
唯一约束是指所有记录中字段的值
不能重复出现
4 检查约束
检查约束是用来检查数据表中
字段值是否有效的一个手段
5 默认值约束
用来约束当前数据表中
某个字段不输入值时
自动为其添加一个已经设置好的值
最后我们学习了自增长设置
每增加一条记录
主键会自动以相同的步长进行增加
在 MySQL 中
约束能够帮助数据库管理员
更好地管理数据库
并且能够确保数据库中
数据的正确性和有效性
同理 我们要明白
国不可一日无法
家不可一日无规
无规矩不成方圆
我们一定要遵规守纪
方能造就人生
本次课就讲到这里
谢谢 再见
-1.1 数据库基础知识
-1.2 MySQL的安装与运行
-第1章 测试
-2.1 数据库的基本操作
-2.2 表的基本操作
-2.3 MySQL数据类型
-2.4 约束设置
-2.5 索引
--2-5索引视频
--2-5索引课件
--2-5索引实训
-第2章测试
-3.1 插入记录
-3.2 修改记录
-3.3 删除记录
--3.3删除记录
-第3章 测试
-4.1 select语句
-4.2 单表查询
-4.3 多表查询
-4.4 子查询
--4-4子查询课件
--4-4子查询实训
-4.5 外键
--4-5外键视频
--4-5外键课件
--4-5外键实训
-4.6 视图
--4-6视图视频1
--4-6视图视频2
--4-6视图课件
--4-6视图实训
-第4章测试
-5.1 函数
--5-1系统函数
--5-1函数课件
--5-1 函数实训
-5.2 流程控制语句
-5.3 事务与游标
-5.4 存储过程
-5.5 触发器
--5-5触发器视频
--5-5触发器课件
--5-5触发器实训
-第5章测试
-6.1 数据库备份与还原
-6.2 异构数据源导入导出
-第6章测试
-7.1 用户管理
-7.2 权限管理
-7.3 应用实例开发
-第7章测试