资源预览内容
第1页 / 共60页
第2页 / 共60页
第3页 / 共60页
第4页 / 共60页
第5页 / 共60页
第6页 / 共60页
第7页 / 共60页
第8页 / 共60页
第9页 / 共60页
第10页 / 共60页
亲,该文档总共60页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
2020 5 4 数据库系统原理及应用 机械工业出版社 第5章关系数据库标准语言 SQL 5 1SQL概述及特点5 2SQL的数据定义功能5 2 1基本表的定义和维护功能5 2 2索引的定义和维护功能5 2 3视图的定义和维护功能5 3SQL的数据查询功能5 3 1SELECT语句介绍5 3 2SQL的查询实例及分析5 4SQL的数据更新功能 5 4 1SQL的数据插入功能5 4 2SQL的数据修改功能5 4 3SQL的数据删除功能5 5嵌入式SQL5 5 1嵌入式SQL的特点5 5 2不用游标的SQL语句5 5 3使用游标的SQL5 6SQL的数据控制功能5 6 1数据控制的方法5 6 2SQLServer的数据库操作权限5 6 3数据操作权限的设置 5 1SQL概述及特点 1 SQL的主要功能 1 数据定义功能定义关系数据库的模式 外模式和内模式 以实现对基本表 视图以及索引文件的定义 修改和删除等操作 2 数据操纵功能包括数据查询和数据更新两种数据操作语句 数据查询指对数据库中的数据查询 统计 分组 排序操作 数据更新指数据的插入 删除 修改等数据维护操作 3 数据控制功能通过对数据库用户的授权和收权命令来实现有关数据的存取控制 以保证数据库的安全性 2 SQL的特点 1 SQL具有自含式和嵌入式两种形式 2 SQL具有语言简洁 易学易用的特点 3 SQL支持三级模式结构 全体基本表构成了数据库的模式 视图和部分基本表构成了数据库的外模式 数据库的存储文件和它们的索引文件构成了关系数据库的内模式 5 2SQL的数据定义功能 5 2 1基本表的定义和维护功能1 定义基本表定义基本表语句的一般格式为 CREATETABLE 库名 表名 列名 数据类型 列级完整性约束条件 列名 数据类型 列级完整性约束条件 n 表级完整性约束条件 n 1 SQL支持的数据类型 2 列级完整性的约束条件 针对属性值设置的限制条件 1 NOTNULL或NULL约束 NOTNULL约束不允许字段值为空 而NULL约束允许字段值为空 2 UNIQUE约束 UNIQUE约束是惟一性约束 即不允许列中出现重复的属性值 3 DEFAULT约束 DEFAULT为默认值约束 DEFAULT 约束名 默认值 FOR 列名 4 CHECK约束 CHECK为检查约束 CONSTRAINT 约束名 CHECK 约束条件表达式 3 表级完整性约束条件 涉及到关系中多个列的限制条件 1 UNIQUE约束 惟一性约束 2 PRIMARYKEY约束 定义主码 保证惟一性和非空性 CONTRAINT 约束名 PRIMARYKEY CLUSTERED 列组 3 FOREIGNKEY约束 用于定义参照完整性 CONTRAINT 约束名 FOREIGNKEY 外码 REFERENCES 被参照表名 与外码对应的主码名 例5 1 建立基本表 学生 学号 姓名 年龄 性别 所在系 课程 课程号 课程名 先行课 选课 学号 课程号 成绩 CREATETABLE学生 学号CHAR 5 NOTNULLUNIQUE 姓名CHAR 8 NOTNULL 年龄SMALLINT 性别CHAR 2 所在系CHAR 20 DEFAULTC120FOR年龄 CONSTRAINTC2CHECK 性别IN 男 女 CREATETABLE课程 课程号CHAR 5 PRIMARYKEY 课程名CHAR 20 先行课CHAR 5 CREATETABLE选课 学号CHAR 5 课程号CHAR 5 成绩SMALLINT CONSTRAINTC3CHECK 成绩BETWEEN0AND100 CONSTRAINTC4PRIMARYKEY 学号 课程号 CONSTRAINTC5FOREIGNKEY 学号 REFERENCES学生 学号 CONSTRAINTC6FOREIGNKEY 课程号 REFERENCES课程 课程号 2 修改基本表和删除基本表 ALTERTABLE 表名 ADD 新列名 数据类型 完整性约束 n DROP 完整性约束名 MODIFY 列名 数据类型 n 1 使用ADD子句增加新列 例5 2 向课程表中增加 学时 字段 ALTERTABLE课程ADD学时SMALLINT 2 使用MODIFY子句修改列的原定义 3 使用DROP子句删除指定的完整性约束条件 例5 3 删除学生表中对年龄的默认值的定义 ALTERTABLE学生DROPC1 删除基本表的一般格式为 DROPTABLE 表名 5 2 2索引的定义和维护功能 1 索引的作用1 使用索引可以明显地加快数据查询的速度 2 使用索引可保证数据的惟一性 3 使用索引可以加快连接速度 2 建立索引的原则1 索引的建立和维护由DBA和DBMS完成 2 大表应当建索引 小表则不必建索引 3 对于一个基本表 不要建立过多的索引 4 根据查询要求建索引 3 建立和删除索引的格式 建立格式为 CREATE UNIQUE CLUSTER INDEX 索引名 ON 表名 列名 次序 列名 次序 删除索引格式为 DROPINDEX 索引名 例5 4 为学生 课程数据库中的学生 课程和选课三个表建立索引 其中 学生表按学号升序建立索引 课程表按课程号升序建惟一索引 选课表按学号升序和课程号降序建惟一索引 CREATEUNIQUEINDEX学号ON学生 学号 CREATEUNIQUEINDEX课程号ON课程 课程号 CREATEUNIQUEINDEX选课号ON选课 学号ASC 课程号DESC 5 2 3视图的定义和维护功能 1 视图的优点1 视图能够简化用户的操作 2 视图机制可以使用户以不同的方式看待同一数据 3 视图对数据库的重构提供了一定程度的逻辑独立性 4 视图可以对机密的数据提供安全保护 2 视图定义的格式一般格式为 CREATEVIEW 视图名 列名组 AS 子查询 WITHCHECKOPTION 视图举例 例5 6 建立计算机系学生的视图 CREATEVIEW计算机系学生ASSELECT学号 姓名 年龄FROM学生WHERE所在系 计算机系 例5 7 由学生 课程和选课三个表 定义一个计算机系的学生成绩视图 其属性包括学号 姓名 课程名和成绩 CREATEVIEW学生成绩 学号 姓名 课程名 成绩 ASSELECT学生 学号 学生 姓名 课程 课程名 选课 成绩FORM学生 课程 选课WHERE学生 学号 选课 学号AND程 课程名 选课 课程号AND学生 所在系 计算机系 3 视图的删除 查询和维护 视图删除语句的一般格式为 DROPVIEW 视图名 视图可以和基本表一样被查询 其使用方法与基本表相同 但利用视图进行数据增 删 改操作 会受到一定的限制 5 3SQL的数据查询功能 5 3 1SELECT语句介绍1 SELECT语句的语法SELECT 目标列组 FROM 数据源 WHERE 元组选择条件 GROUPBY 分列组 HAVING 组选择条件 ORDERBY 排序列1 排序要求1 n 语法说明 1 SELECT子句 指明目标列 字段 表达式 函数表达式 常量 基本表中相同的列名表示为 表名 列名 2 FROM子句 指明数据源 表间用 分割 数据源不在当前数据库中 使用 数据库名 表名 表示 一表多用 用别名标识 定义表别名 表名 别名 3 WHERE子句 元组选择条件 4 GROUPBY子句 结果集分组 当目标列中有统计函数 则统计为分组统计 否则为对整个结果集统计 子句后带上HAVING子句表达组选择条件 带函数的表达式 5 ORDERBY子句 排序 当排序要求为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 去掉重复值 在结果集中去掉重复值 或在统计函数中不计重复值 格式为 DISTINCT 字段 或DISTINCT 字段组 5 3 2SQL的查询实例及分析 学生课程库结构为 学生 学号 姓名 年龄 所在系 课程 课程号 课程名 先行课 选课 学号 课程号 成绩 1 简单查询 查询过程中只涉及到一个表的查询语句 例5 9 求数学系学生的学号和姓名 SELECT学号 姓名FROM学生WHERE所在系 数学系 例5 10 求选修了课程的学生学号 SELECTDISTINCT学号FROM选课 例子 例5 11 求选修C1课程的学生学号和成绩 并要求对查询结果按成绩的降序排列 如果成绩相同则按学号的升序排列 SELECT学号 成绩FROM选课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子句表达 连接条件和元组选择条件之间用AND 与 操作符衔接 1 等值连接和非等值连接 表名1 列名1 比较运算符 表名2 列名2 比较运算符 和 列名称为连接字段 例5 15 查询每个学生的情况以及他 她 所选修的课程 SELECT学生 选课 FROM学生 选课WHERE学生 学号 选课 学号 例子 例5 16 求学生的学号 姓名 选修的课程名及成绩 SELECT学生 学号 姓名 课程名 成绩FROM学生 课程 选课WHERE学生 学号 选课 学号AND课程 课程号 选课 课程号 例5 17 求选修C1课程且成绩为90分以上的学生学号 姓名及成绩 SELECT学生 学号 姓名 成绩FROM学生 选课WHERE学生 学号 选课 学号AND课程号 C1 AND成绩 90 例子 2 自身连接例如 课程表中的先行课是在上学期应开设的 先行课的先行课 即间接先行课应提前一学年开设 如果求查询某门课的间接先行课或全部课程的间接先行课 就需要对课程表进行自身连接 课程的先行关系链为 C5 C4 C3 C2 C1 课程的间接关系链为 C5 C3 C1 例5 18 查询每一门课的间接先行课 SELECTA 课程号 A 课程名 B 先行课FROM课程A 课程BWHEREA 先行课 B 课程号 A B 结果 3 外部连接 左外部连接操作是在结果集中保留连接表达式左表中的非匹配记录 右外部连接操作是在结果集中保留连接表达式右表中的非匹配记录 外部连接符号为 右外部连接符号为 外部连接中不匹配的分量用NULL表示 职工表部门表 连接的结果集 内连接的结果集 左外部连接的结果集 例5 19 用SQL表达职工和部门之间的内连接 左外部连接和右外部连接的语句 内连接 SELECT职工 部门名称 电话FROM职工 部门WHERE职工 所在部门 部门 部门号 左外部连接 SELECT职工 部门名称 电话FROM职工 部门WHERE职工 所在部门 部门 部门号 右外部连接 SELECT职工 部门名称 电话FROM职工 部门WHERE职工 所在部门 部门 部门号 3 嵌套查询 1 使用IN操作符的嵌套查询 例5 20 求选修了高等数学的学生学号和姓名 SELECT学号 姓名FROM学生W
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号