第5章 关系数据库标准语言——SQL.ppt

上传人:marr****208 文档编号:133886221 上传时间:2020-05-31 格式:PPT 页数:45 大小:983KB
返回 下载 相关 举报
第5章 关系数据库标准语言——SQL.ppt_第1页
第1页 / 共45页
第5章 关系数据库标准语言——SQL.ppt_第2页
第2页 / 共45页
第5章 关系数据库标准语言——SQL.ppt_第3页
第3页 / 共45页
第5章 关系数据库标准语言——SQL.ppt_第4页
第4页 / 共45页
第5章 关系数据库标准语言——SQL.ppt_第5页
第5页 / 共45页
点击查看更多>>
资源描述

《第5章 关系数据库标准语言——SQL.ppt》由会员分享,可在线阅读,更多相关《第5章 关系数据库标准语言——SQL.ppt(45页珍藏版)》请在金锄头文库上搜索。

1、2020 5 31 数据库系统原理 韶关学院计算机科学与技术系 第5章 关系数据库标准语言 SQL 5 1SQL概述及特点5 2数据定义语句5 3数据查询语句5 4数据更新语句5 5嵌入式SQL5 6数据控制机制和语句 5 1SQL概述及特点 1 SQL的主要功能 1 数据定义功能定义关系数据库的模式 外模式和内模式 以实现对基本表 视图以及索引文件的定义 修改和删除等操作 2 数据操纵功能包括数据查询和数据更新两种数据操作语句 数据查询指对数据库中的数据查询 统计 分组 排序操作 数据更新指数据的插入 删除 修改等数据维护操作 3 数据控制功能通过对数据库用户的授权和收权命令来实现有关数据的

2、存取控制 以保证数据库的安全性 2 SQL的特点 1 SQL具有自含式和嵌入式两种形式 自主式SQL 能够独立的进行联机交互 用户只需在终端上直接键入SQL命令就可以对数据库进行操作 嵌入式SQL 嵌入式SQL能嵌入到高级语言的程序中 以实现对数据库的数据进行存取操作 给程序员的设计提供了很大的方便 2 SQL具有语言简洁 易学易用的特点 3 SQL支持三级模式结构 全体基本表构成了数据库的模式 视图和部分基本表构成了数据库的外模式 数据库的存储文件和它们的索引文件构成了关系数据库的内模式 5 2数据定义语句 5 2 1基本表的定义和维护1 定义基本表定义基本表语句的一般格式为 CREATET

3、ABLE 库名 表名 列名 数据类型 列级完整性约束条件 列名 数据类型 列级完整性约束条件 n 表级完整性约束条件 n 1 SQL支持的数据类型 2 列级完整性的约束条件 针对属性值设置的限制条件 1 NOTNULL或NULL约束 NOTNULL约束不允许字段值为空 而NULL约束允许字段值为空 2 UNIQUE约束 惟一性约束 即不允许列中出现重复的属性值 3 DEFAULT约束 默认值约束 DEFAULT 约束名 默认值 FOR 列名 4 CHECK约束 检查约束 CONSTRAINT 约束名 CHECK 约束条件表达式 3 表级完整性约束条件 涉及到关系中多个列的限制条件 1 UNIQ

4、UE约束 惟一性约束 2 PRIMARYKEY约束 定义主码 保证惟一性和非空性 CONTRAINT 约束名 PRIMARYKEY CLUSTERED 列组 3 FOREIGNKEY约束 用于定义参照完整性 CONTRAINT 约束名 FOREIGNKEY 外码 REFERENCES 被参照表名 与外码对应的主码名 CREATETABLE学生 学号CHAR 5 NOTNULLUNIQUE 姓名CHAR 8 NOTNULL 年龄SMALLINT 性别CHAR 2 所在系CHAR 20 DEFAULTC120FOR年龄 CONSTRAINTC2CHECK 性别IN 男 女 CREATETABLE课

5、程 课程号CHAR 5 PRIMARYKEY 课程名CHAR 20 先行课CHAR 5 CREATETABLE选课 学号CHAR 5 课程号CHAR 5 成绩SMALLINT CONSTRAINTC3CHECK 成绩BETWEEN0AND100 CONSTRAINTC4PRIMARYKEY 学号 课程号 CONSTRAINTC5FOREIGNKEY 学号 REFERENCES学生 学号 CONSTRAINTC6FOREIGNKEY 课程号 REFERENCES课程 课程号 例5 1 建立基本表 学生 学号 姓名 年龄 性别 所在系 课程 课程号 课程名 先行课 选课 学号 课程号 成绩 2 修

6、改基本表和删除基本表 ALTERTABLE 表名 ADD 新列名 数据类型 完整性约束 n DROP 完整性约束名 MODIFY 列名 数据类型 n 1 使用ADD子句增加新列 例5 2 向课程表中增加 学时 字段 ALTERTABLE课程ADD学时SMALLINT 2 使用MODIFY子句修改列的原定义 3 使用DROP子句删除指定的完整性约束条件 例5 3 删除学生表中对年龄的默认值的定义 ALTERTABLE学生DROPC1 删除基本表的一般格式为 DROPTABLE 表名 5 3 数据查询语句 5 3 1数据查询的基本语法1 SELECT语句的语法SELECT 目标列组 FROM 数据

7、源 WHERE 元组选择条件 GROUPBY 分列组 HAVING 组选择条件 ORDERBY 排序列1 排序要求1 n 语法说明 1 SELECT子句 指明目标列 字段 表达式 函数表达式 常量 基本表中相同的列名表示为 表名 列名 2 FROM子句 指明数据源 表间用 分割 数据源不在当前数据库中 使用 数据库名 表名 表示 一表多用 用别名标识 定义表别名 表名 别名 3 WHERE子句 元组选择条件 4 GROUPBY子句 结果集分组 当目标列中有统计函数 则统计为分组统计 否则为对整个结果集统计 子句后带上HAVING子句表达组选择条件 带函数的表达式 5 ORDERBY子句 排序

8、当排序要求为ASC时升序排序 排序要求为DESC时降序排列 2 SELECT语句的操作符 1 算术操作符 加号 减号 乘号 和 除号 2 比较操作符 等于 大于 大于等于 不等于 小于大于 不大于 和 不小于 共9种操作符 3 逻辑操作符 4 组合查询操作符和其他SQL操作符 查询1 组合操作符 查询2 1 UNION 并查询 并在结果集中去掉重复行 2 MINUS 差查询操作 3 INTERSECT 交查询操作 4 取全部字段 格式为 或 表名 5 ALL 全部 保留重复值 有统计函数时要求计算重复值 格式为 ALL 字段 或ALL 字段组 6 DISTINCT 去掉重复值 在结果集中去掉重

9、复值 或在统计函数中不计重复值 格式为 DISTINCT 字段 或DISTINCT 字段组 5 3 2数据查询实例 学生课程库结构为 学生 学号 姓名 年龄 所在系 课程 课程号 课程名 先行课 选课 学号 课程号 成绩 1 简单查询 查询过程中只涉及到一个表的查询语句 例5 9 求数学系学生的学号和姓名 SELECT学号 姓名FROM学生WHERE所在系 数学系 例5 10 求选修了课程的学生学号 SELECTDISTINCT学号FROM选课 例子 例5 11 求选修C1课程的学生学号和成绩 并要求对查询结果按成绩的降序排列 如果成绩相同则按学号的升序排列 SELECT学号 成绩FROM选课

10、WHERE课程号 C1 ORDERBY成绩DESC 学号ASC 例5 12 求选修课程C1且成绩在80 90之间的学生学号和成绩 并将成绩乘以系数0 8输出 SELECT学号 成绩 0 8FROM选课WHERE课程号 C1 AND成绩BETWEEN80AND90 例子 例5 13 求数学系或计算机系姓张的学生的信息 SELECT FROM学生WHERE所在系IN 数学系 计算机系 AND姓名LIKE 张 例5 14 求缺少了成绩的学生的学号和课程号 SELECT学号 课程号FROM选课WHERE成绩ISNULL 2 连接查询 连接查询中的连接条件通过WHERE子句表达 连接条件和元组选择条件之

11、间用AND 与 操作符衔接 1 等值连接和非等值连接 表名1 列名1 比较运算符 表名2 列名2 比较运算符 和 列名称为连接字段 例5 15 查询每个学生的情况以及他 她 所选修的课程 SELECT学生 选课 FROM学生 选课WHERE学生 学号 选课 学号 例子 例5 16 求学生的学号 姓名 选修的课程名及成绩 SELECT学生 学号 姓名 课程名 成绩FROM学生 课程 选课WHERE学生 学号 选课 学号AND课程 课程号 选课 课程号 例5 17 求选修C1课程且成绩为90分以上的学生学号 姓名及成绩 SELECT学生 学号 姓名 成绩FROM学生 选课WHERE学生 学号 选课

12、 学号AND课程号 C1 AND成绩 90 例子 2 自身连接例如 课程表中的先行课是在上学期应开设的 先行课的先行课 即间接先行课应提前一学年开设 如果求查询某门课的间接先行课或全部课程的间接先行课 就需要对课程表进行自身连接 课程的先行关系链为 C5 C4 C3 C2 C1 课程的间接关系链为 C5 C3 C1 A B 结果 例5 18 查询每一门课的间接先行课 SELECTA 课程号 A 课程名 B 先行课FROM课程A 课程BWHEREA 先行课 B 课程号 3 外部连接 左外部连接操作是在结果集中保留连接表达式左表中的非匹配记录 右外部连接操作是在结果集中保留连接表达式右表中的非匹配

13、记录 外部连接符号为 右外部连接符号为 外部连接中不匹配的分量用NULL表示 职工表部门表 连接的结果集 内连接的结果集 左外部连接的结果集 内连接 SELECT职工 部门名称 电话FROM职工 部门WHERE职工 所在部门 部门 部门号 左外部连接 SELECT职工 部门名称 电话FROM职工 部门WHERE职工 所在部门 部门 部门号 右外部连接 SELECT职工 部门名称 电话FROM职工 部门WHERE职工 所在部门 部门 部门号 例5 19 用SQL表达职工和部门之间的内连接 左外部连接和右外部连接的语句 3 使用ANY或ALL操作符的嵌套查询 格式为 字段 比较符 ANY ALL

14、子查询 例子 例5 22 求其他系中比计算机系某一学生年龄小的学生 SELECT FROM学生WHERE年龄 计算机系 例5 23 求其他系中比计算机系学生年龄都小的学生 SELECT FROM学生WHERE年龄 计算机系 4 使用EXISTS操作符的嵌套查询 例5 24 求选修了C2课程的学生姓名 SELECT姓名FROM学生WHEREEXISTS SELECT FROM选课WHERE学生 学号 学号AND课程号 C2 例5 25 求没有选修C2课程的学生姓名 SELECT姓名FROM学生WHERENOTEXISTS SELECT FROM选课WHERE学生 学号 学号AND课程号 C2 例

15、子 例5 26 查询选修了全部课程的学生的姓名 SELECT姓名FROM学生WHERENOTEXISTS SELECT FROM课程WHERENOTEXISTS SELECT FROM选课WHERE学生 学号 学号AND课程 课程号 课程号 例子 例5 27 求至少选修了学号为 S2 的学生所选修的全部课程的学生学号和姓名 SELECT学号 姓名FROM学生WHERENOTEXISTS SELECT FROM选课选课1WHERE选课1 学号 S2 ANDNOTEXISTS SELECT FROM选课选课2WHERE学生 学号 选课2 学号AND选课2 课程号 选课1 课程号 4 组合查询 例5

16、 28 求选修了C1课程或选修了C2课程的学生学号 SELECT学号FROM选课WHERE课程号 C1 UNIONSELECT学号FROM选课WHERE课程号 C2 例5 29 求选修C1课程 并且也选修C2课程的学生学号 SELECT学号FROM选课WHERE课程号 C1 INTERSECTSELECT学号FROM选课WHERE课程号 C2 例5 30 求选修了C1课程但没有选修C2课程的学生学号 SELECT学号FROM选课WHERE课程号 C1 MINUSSELECT学号FROM选课WHERE课程号 C2 本例也可以用下面的EXISTS嵌套查询表示 SELECT学号FROM选课选课1WHERE课程号 C1 ANDNOTEXISTS SELECT学号FROM选课选课2WHERE选课1 学号 选课2 学号AND选课2 课程号 C2 5 使用分组和SQL函数查询 例5 31 求学生的总人数 SELECTCOUNT FROM学生 例子 例5 32 求选修了课程的学生人数 SELECTCOUNT DISTINCT学号 FROM选课 例5 33 求课程和选修该课程的人数 SELECT课程号

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号