6G-SQL查询语句.ppt_第1页
6G-SQL查询语句.ppt_第2页
6G-SQL查询语句.ppt_第3页
6G-SQL查询语句.ppt_第4页
6G-SQL查询语句.ppt_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1 第六章SQL查询语句 教学目标 掌握通过SQL查询语句取出存储在数据库里的数据 2 SELECT语句 1 1 语句格式 SELECT ALL DISTINCT FROM WHERE GROUPBY HAVING ORDERBY ASC DESC 2 语句说明 SELECT 语句的基本格式是由 SELECT 子句 FROM 子句和 WHERE 子句组成的查询块 3 SELECT语句 2 整个 SELECT 语句的含义 根据 WHERE 子句的 筛选条件表达式 从 FROM 子句指定的表 查询中找出满足条件的记录 再按 SELECT 子句中指定的 字段 次序 选出记录中的字段值构造一个显示结果表 如果有 GROUP 子句 则将结果按 分组表达式 的值进行分组 该值相等的记录为一个组 如果 GROUP 子句带 HAVING 短语 则只有满足指定条件的组才会输出 如果有 ORDER 子句 则显示结果表还要按值的升 降序进行排序 3 实例 显示所有学生的学号和姓名 Select学号 姓名from学生表 4 SELECT语句 基于单表的查询 单表查询就是指所处理的问题 仅仅涉及到一个表的记录 数据 查询指定的字段 显示全部学生的班级名 姓名和所在院系 Select班级名 姓名 所在院系From学生表通配符 的使用列出学生表的清单 Select From学生表基于字段的表达式显示所有学生的学号 姓名和出生年份 Select班级名 姓名 year getdate 年龄as 出生年份 From学生表 5 SELECT语句 使用 DISTINCT 短语去掉重复的记录列出学生的姓名 重名的记录自动去掉 Selectdistinct姓名from学生表用 WHERE 子句过滤记录SQL是一种集合处理语句 所以数据修改及数据检索语句会对表中的所有记录 行 起作用 除非使用WHERE子句来限制查询的范围 WHERE 子句必须紧跟在 FROM 子句之后 基本格式SELECTFROMWHERE 6 关系运算符与逻辑运算符 关系运算符 等于大于 大于或等于 或者不等于 逻辑运算符Or或And与Not非 7 特殊运算符 1 8 特殊运算符 2 列出年龄在18岁到20岁之间的所有学生名单 SELECT FROM学生表WHERE年龄BETWEEN18AND20列出所有没有先修课的课程名SELECT课程名FROM课程表WHERE先修课ISNULL列出计算机系和国际贸易系学生的学号 姓名 性别和所在院系 SELECT学号 姓名 性别 所在院系FROM学生表WHERE所在院系IN 计算机 国际贸易 列出所有姓 苏 的教师SELECTDISTINCT教师FROM授课表WHERE教师名LIKE 苏 9 ORDERBY 子句 基本格式 SELECTFROM WHERE ORDERBY DESC 注 ORDERBY 子句默认值为升序 ASC ORDERBY 子句必须写在查询块的最后 例 显示学生的清单 要求查询结果的入学年份按降序排列 若入学年份相同 则按学号升序排列 Select from学生表orderby入学年份desc 学号 10 SQL的集合函数 1 11 SQL的集合函数 2 1 COUNT 函数的应用功能 主要是用作计数器 统计满足某种条件的行数 注 COUNT 函数通常与 DISTINCT 子句一起使用例 统计学生表中一共有多少名19岁以上的女同学 SELECTCOUNT FROM学生表WHERE性别 女 AND年龄 192 MAX 和 MIN 函数的应用例 查找年龄最大和最小的学生年龄 SELECTMAX 年龄 MIN 年龄 FROM学生表 12 SQL的集合函数 3 AVG 函数的应用与 MIN 和 MAX 的表达式格式一样 SelectAVG 年龄 from学生表4 SUM 函数的应用 SUM 函数对指定的字段列求和 例 列出所有学生的年龄总和 并且列出所有学生加1岁后的结果 SelectSum 年龄 Sum 年龄 1 from学生表 13 GROUPBY 子句 1 功能 能够快速而简便地将查询结果表按照指定的字段进行分组 值相等的记录分为一组 注 GROUPBY 子句一般和SQL的集合函数一起使用 基本格式 SELECTFROMGROUPBY 14 GROUPBY 子句 2 例1 统计每一届学生的人数 SELECT入学年份 COUNT FROM学生表GROUPBY入学年份例 统计男 女学生各自的人数和平均年龄 SELECT性别 COUNT 年龄 AVG 年龄 FROM学生表GROUPBY性别 15 HAVING 子句 功能 对分组后的结果表按某种条件再进行筛选 输出满足用户指定条件的记录 WHERE 子句与 HAVING 子句的区别在于作用对象不同 WHERE 子句的作用对象是表 Table SELECT 语句是从 WHERE子句 指定的表中 筛选出满足条件的记录 HAVING 子句的作用对象是 GROUPBY 子句所产生的组 Group 16 HAVING 子句 例 写出选修了一门以上课程的学生名单及其选修门数 Select学号 count from成绩表groupby学号havingcount 1 17 基于多表的查询 在关系型数据库中 将一个查询同时涉及两个以上的表 称为连接查询 连接查询主要包括以下几种类型 等值连接查询 非等值连接查询自然连接查询自身连接查询外连接查询复合条件连接查询 18 多表查询的连接条件 用来连接多个表的条件称为连接条件 1 基本格式 2 运算符说明运算符可以是比较运算符运算符可以是逻辑运算符可以是 BETWEEN AND 19 自然连接 等值连接 若连接条件中的运算符是关系相等符 则称为等值连接 非等值连接 若连接条件中的运算符是 或 之一时 称为非等值连接 连接字段 连接条件中的字段称为连接字段 连接条件中的各连接字段 其数据类型必须是可比的 但不必是相同的 例 列出每个学生及其选修课程的详细清单 Select学生表 成绩表 from学生表 成绩表where学生表 学号 成绩表 学号自然连接 若在等值连接中 把结果表中重复的字段去掉 则这样的等值连接称为自然连接 在自然连接的条件表达式中 往往是将各表的主键和外键进行等值连接 20 自身连接 定义 将自己和自己进行连接 这种连接称为自身连接 例 列出每一门课程的间接先修课 即先修课的先修课 SELECTF 课程号 S 先修课FROM课程表asF 课程表asSWHEREF 先修课 S 课程号注 这里分别为 课程表 取了两个别名 一个是F 另一个是S 21 复合条件连接 定义 在 WHERE 子句中 若有多个连接条件 则称为复合条件连接 例 列出所有学生的学习成绩 要求 输出姓名 课程名称 课程号 成绩 授课教师和该课程的学时数 SelectA 姓名 D 课程名称 B 课程号 B 成绩 C 教师名 C 学时数from学生表A 成绩表B 授课表C 课程表Dwhere A 学号 B 学号 AND A 班级名 C 班级名 AND B 课程号 C 课程号 AND D 课程号 C 课程号 22 嵌套查询 1 在SQL语言中 一个 SELECT FROM WHERE 查询块 可以嵌套在另外一个查询块的 From 或 WHERE 子句中 称这种查询为嵌套查询 求解过程 嵌套查询的求解是由里向外处理 23 嵌套查询 2 带有 IN 的子查询在嵌套查询中 因为一个子查询的结果往往是一个集合 因此特殊运算符 IN 在嵌套查询中 经常被使用 例 列出与 刘成锴 同学在同一个系的所有女学生的名单 SELECT学号 姓名 性别 年龄 所在院系 班级名FROM学生表WHERE所在院系IN SELECT所在院系FROM学生表WHERE姓名 刘成锴 AND性别 女 24 嵌套查询 3 带有 ANY 或 ALL 的子查询P110表6 10ALL和ANY运算符的含义例 列出所有院系中比计算机系某个学生年龄大的学生清单 SELECT学号 姓名 年龄 所在院系FROM学生表WHERE年龄 ANY SELECT年龄FROM学生表WHERE所在院系 计算机 AND所在院系 计算机 例 列出所有院系中比计算机系所有学生年龄大的学生清单 SELECT学号 姓名 年龄 所在院系FROM学生表WHERE年龄 ALL SELECT年龄FROM学生表WHERE所在院系 计算机 AND所在院系 计算机 25 嵌套查询 4 带有 EXISTS 的子查询功能 只查找满足条件的那些记录 一旦找到第一个匹配的记录后 则马上停止查找 注 带 EXISTS 的子查询不返回任何记录 只产生逻辑值 真 TRUE 或者逻辑值假 FALSE 26 UNION 查询 功能 将两个或多个结果表进行逻辑联合 列出在各个结果表中返回的记录 注 各个结果表的字段个数必须相同 对应的数据类型也必须兼容 使用 UNION 时 SQLServer会自动将重复的记录去掉 例 显示计算机系的学生以及性别为女的学生名单 27 INTO 子句 使用 SELECT 和 INTO 子句可以使 SELECT 语句在运行过程中 创建一个永久表或临时表 基本格式 SELECT INTO FROM WHERE 例 创建计算机系学生表 Select into计算机学生From学生表Where所在院系 计算机 28 数据更新 1 插入记录删除记录修改字段 29 数据更新 2 插入子查询结果基本格式 INSERTINTO SELECT FROM WHERE 30 数据更新 3 带子查询的修改语句在SQL中 子查询也可以嵌套在 UPDATE 语句中 用来指定修改的条件 例 将电子系全体学生的成绩加8分 UPDATE成绩表SET成绩 成绩 8WHERE学号in SELECT学号FROM学生表WHERE所在院系 电子学 31 数据更新 4 带子查询的删除语句子查询可以嵌套在 DELETE 语句中 用来指定删除的条件 例 删除电子系所有学生的选修课程记录DELETEFROM成绩表WHERE学号in SELECT学号FROM学生表WHERE所在院系 电子学 32 小结 查询记录时 需要在 SELECT 语句中指定查询的字段 FROM 子句中指定

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论