ImageVerifierCode 换一换
格式:PPT , 页数:39 ,大小:561KB ,
资源ID:8798318      下载积分:10 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.docduoduo.com/d-8798318.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数据库语言SQL——数据查询1.ppt)为本站会员(myw993772)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

数据库语言SQL——数据查询1.ppt

1、第4章 数据查询,4.1 基本查询 4.2 嵌套查询 4.3 连接查询,在“学生学籍数据库”中创建了以下三个关系模式:学生信息表(学号,姓名, 性别,年龄,系别)课程信息表(课程号,课程名, 学分)选修信息表(学号,课程号,成绩),SQL数据查询语句是SELECT语句,语法: SELECT FROM WHERE GROUP BY HAVING ORDER BY ,SELECT语句说明 SELECT语句中必须有:SELECT子句、FROM子句其余子句可选:WHERE子句、GROUP BY子句、 HAVING子句、ORDER BY子句,SELECT语句说明 (1)SELECT ,称为SELECT子

2、句。用于指定整个查询结果表中包含的列。假定已经执行完FROM、WHERE、GROUPBY、HAVING子句,SELECT子句指定的目标列组成表就为整个查询的结果表。 (2) FROM ,称为FROM子句。是整个查询语句的数据来源,通常称为数据源表。,单表查询单表查询指的是在一个源表中查找所需的数据。,下面首先说明单表查询SELECT语句中的各个子句,3.3.2 单表查询,1. SELECT子句 (1)查询表中若干列在SELECT子句的中指定整个查询结果 表中出现的若干个列名,各列名之间用逗号分隔。【例3.3.1】,查询全体学生的学号与姓名,SELECT 学号,姓名 FROM Students,

3、(2)查询表中所有的列可以用 * 来代替表的所有列。【例3.3.2】,查询全部课程的基本信息,Select * from 表名,Select * from 课程信息表,(2)选择表中所有列可以用*来代替表的所有列。【例】查询全体学生的学号、姓名、性别、年龄、所在系。SELECT * FROM 学生信息表,(3)查询经过计算的值,例: 查询全体学生的姓名及其出生年份。SELECT 姓名,2011-年龄 FROM 学生信息表 输出结果:,( 4)设置列的别名所谓别名,就是给另一个名字,主要是为了方便阅读。设置列别名的方法有:原列名 AS 列别名,【例】查询全体学生的学号、姓名,并为原来的中文列名设

4、置英文别名:,Select 学号 as sno, 姓名 as sname, 年龄 as sagefrom 学生信息表,例: 查询全体学生的姓名及其出生年份。输出结果:,SELECT 姓名 , 2010-年龄 as 出生年份 FROM 学生信息表,( 4)使用DISTINCT消除结果表中完全重复的行 【例】显示所有选课学生的学号,并去掉重复行。解: SELECT DISTINCT 学号FROM 选修信息表与DISTINCT相反的是ALL,ALL表示保留结果表中的重复行。默认情况下是ALL,表示保留重复行。,练习1:,1、 查询全体课程的课程号、课程名,并为其设置别名CNO,CNAME。3、 查询

5、选修了课程的学生的学号。(去掉结果中重复的行),3. WHERE子句,WHERE 中常用的运算符:比较运算符和逻辑运算符。 比较运算符用于比较两个数值之间的大小是否相等。常用的比较运算符有:=、=、 !、!共9种。 逻辑运算符主要有:范围比较运算符:BETWEEN AND ,NOT BETWEEN AND集合比较运算符:IN ,NOT IN字符匹配运算符:LIKE,NOT LIKE空值比较运算符:IS NULL,IS NOT NULL条件连接运算符:AND,OR,NOT,( 1)基于比较运算符的查询 【例】查询学生选课成绩大于80分的学生学号、课程号、成绩。解:SELECT * FROM 选修

6、信息表 WHERE 成绩80,练习2:,1、 查询“系别”不是“英语”的所有学生的基本信息。2、 查询所有年龄在20岁以上的学生姓名、系别及其年龄。,( 2)基于BETWEENAND的查询,基本格式:列名 BETWEEN 下限值 AND 上限值等价于:列名=下限值 AND列名= 80 AND 成绩 =90,( 3)基于IN的查询IN用于测试一个列值是否与常量表中的任何一个值相等。IN条件表示格式为:列名 IN (常量1, 常量2, 常量n)当列值与IN中的任一常量值相等时,则条件为TRUE,否则 为FALSE。 【例】查询数学系、计算机系、艺术系学生的学号、姓名。解: SELECT 姓名,学号

7、 FROM 学生信息表 WHERE 系别 IN (数学, 计算机, 艺术)等价于:SELECT 学号,姓名 FROM 学生信息表 WHERE 系别 =数学 OR 系别 = 计算机 OR 系别 =艺术,( 4)基于LIKE的查询 LIKE用于测试一个字符串是否与给定的模式匹配。所谓模式是一种特殊的字符串,其中可以包含普通字符,也可以包含特殊意义的字符,通常叫通配符。 LIKE运算符的一般形式为:列名 LIKE 模式串中可包含如下四种通配符: (1)_:匹配任意一个字符。如 _u_表示第二个字符为u,第一、第三个字符为任意字符的字符串。 (2)%:匹配多个字符。如S%表示以S开头的字符串。 (3)

8、 :匹配 中的任意一个字符,如SDJ 。 (4) :不匹配 中的任意一个字符,如SDJ 。,可以用LIKE来实现模糊查询 【例】查找姓名的第二个字符是晓并且只有三个字符的学生的学号、姓名。解: SELECT 学号,姓名 FROM 学生信息表 WHERE 姓名 LIKE _晓_ 【例】查找姓名以李开头的所有学生的学号、姓名。解: SELECT 学号,姓名 FROM 学生信息表 WHERE 姓名 LIKE 李% 【例】查找姓名以李、张或王开头的所有学生的学号、姓名。解: SELECT 学号,姓名 FROM 学生信息表WHERE 姓名 LIKE 李张王%,( 5)基于NULL空值的查询空值是尚未确定

9、或不确定的值。判断某列值是否为NULL值只 能使用专门判断空值的子句,语句格式如下:判断列值为空的语句格式为:列名 IS NULL 判断列值不为空的语句格式为:列名 IS NOT NULL 【例】查询无考试成绩的学生的学号和相应的课程号。解: SELECT 学号, 课程号 FROM 选修信息表WHERE 成绩 IS NULL不等价于:SELECT学号, 课程号 FROM 选修信息表WHERE 成绩= 0,( 6 )基于多个条件的查询可以使用AND、OR逻辑谓词来连接多个条件,构成一个 复杂的查询条件。使用格式为: AND AND 或 OR OR【例】查询计算机系年龄在18岁以上的学生学号、姓名

10、解: SELECT 学号,姓名 FROM 学生信息表 WHERE 系别=计算机 AND 年龄18【例】求选修了C1课程或C2课程的学生学号、成绩。解: SELECT 学号,成绩 FROM 选修信息表WHERE 课程号=C1 OR 课程号=C2,练习3:,1、查询既不是艺术系、数学系,也不是旅游系的学生的 姓名和 性别 。 2、 查询所有不姓张学生的姓名、学号、和性别。 3、 查询年龄在1719岁(包括17岁和19岁)之间的学生的姓名、系别和年龄。 4、 查询选修1号或2号课程的学生的学号、课程号、成绩。,对查询结果排序,使用ORDER BY子句可以按一个或多个属性列排序升序:ASC; 降序:D

11、ESC; 默认值为升序,注: DESC 是descend 降序意思 ; ASC 是ascend 升序的意思,对查询结果排序(续)按一个属性列排序,查询选修了3号课程的学生的学号及其成绩,查询结果按分数降序排列。SELECT 学号,成绩FROM 选修信息表WHERE 课程号= 3 ORDER BY 成绩 DESC,对查询结果排序(续)按多个属性列排序,查询全体学生情况,查询结果按所在系的系号升序排列,同一系中的学生按年龄降序排列。,SELECT *FROM 学生信息表ORDER BY 系别,年龄 DESC,练习4,查询选修信息表的基本信息,结果按学号升序排列,同一学号按课程号降序排列.查询学生信

12、息表的学号、姓名、年龄,结果按年龄升序排列,同一年龄学生按学号升序排列。,( 7)使用统计函数的查询 统计函数也称为集合函数或聚集函数,其作用是对一组值进行计算并返回一个值。,常用函数,【例】求选修了1号课程的学生的平均成绩。SELECT AVG(成绩) AS 平均成绩 FROM 选修信息表 WHERE 课程号=1【例】选修了1号课程的学生的最高分SELECT MAX(成绩) AS 最高分 FROM 选修信息表 WHERE 课程号=1,【例】求学生的总人数SELECT COUNT(*) AS 学生的总人数 FROM 学生信息表 等价于:SELECT COUNT(学号) AS 学生的总人数 FR

13、OM 学生信息表 【例】查询选修了课程的学生人数。,SELECT COUNT (DISTINCT 学号) FROM 选修信息表 注:用DISTINCT以避免重复计算学生人数,4. GROUP BY 子句,有时我们需要把FROM、WHERE子句产生的表按某种原则分 成若干组,然后再对每个组进行统计,一组形成一行,最后把所有这些行组成一个表 GROUP BY子句在WHERE子句后边。 一般形式为: GROUP BY , n 【例】求选修每门课程的学生人数。解:SELECT 课程号,COUNT(学号) AS 选修人数 FROM 选修信息表 GROUP BY 课程号,注意: 1、select 字句中如

14、果有统计函数,则不允许出现其他的列名,除非是group by 字句的列名 总之:包含GROUP BY子句的查询语句中,SELECT子句的列名,要么是统计函数,要么是包含在GROUP BY子句中的列名 下列语句是错误的:,Select 学号,avg(成绩)from 选修信息表,SELECT 学号, 课程号, COUNT(学号) AS 选修人数 FROM 选修信息表 GROUP BY 课程号,5. HAVING子句,HAVING子句指定GROUP BY生成的组表的选择条件。它的一般形式为:HAVING HAVING子句必须与GROUP BY子句一起使用。WHERE 子句用来筛选 FROM 子句中指

15、定的操作所产生的行。 GROUP BY 子句用来分组 WHERE 子句的输出。 HAVING 子句用来指定选择组的条件,满足条件的组被选。,【例】查询选修课程大于等于2门课的学生的学号、平均成绩、选修的门数。解: SELECT 学号, AVG(成绩) AS 平均成绩,COUNT(*) AS 选修门数 FROM 选修信息表GROUP BY 学号 HAVING COUNT(*) = 2,【例】查询学生的学号、平均成绩、选修的门数。解: SELECT 学号, AVG(成绩) AS 平均成绩,COUNT(*) AS 选修门数 FROM 选修信息表GROUP BY 学号,注意:where子句作用于基本表,从中选出满足条件的行,having字句作用于组,从中选出满足条件的组,例题,查询有3门以上课程是90分以上的 学生的学号及(90分以上的)课程数,SELECT 学号, COUNT(课程号)FROM 选修信息表WHERE 成绩=90GROUP BY 学号HAVING COUNT(课程号)=3,练习5:,列出选修人数小于5的课程号和实际选修人数平均成绩大于80的课程号和实际平均成绩,综合练习,查询学生信息表的基本信息,结果按年龄降序排列,同一年龄按学号升序排列. 统计每位学生的选课情况,列出学号及其选课的门数 查询选修了最高分大于87的学生的学号及其最高分,

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报