数据的查询与修改(sql)

上传人:mg****85 文档编号:50683804 上传时间:2018-08-09 格式:PPT 页数:51 大小:177.50KB
返回 下载 相关 举报
数据的查询与修改(sql)_第1页
第1页 / 共51页
数据的查询与修改(sql)_第2页
第2页 / 共51页
数据的查询与修改(sql)_第3页
第3页 / 共51页
数据的查询与修改(sql)_第4页
第4页 / 共51页
数据的查询与修改(sql)_第5页
第5页 / 共51页
点击查看更多>>
资源描述

《数据的查询与修改(sql)》由会员分享,可在线阅读,更多相关《数据的查询与修改(sql)(51页珍藏版)》请在金锄头文库上搜索。

1、数据的查询与修改数据的查询与修改 1 数据查询查询功能是SQL语句的核心功能,是数 据库中使用最多的操作,查询语句也是 SQL语句中比较复杂的语句。 1.1 查询语句的基本结构查询语句是从数据库中检索满足条件的数 据。查询的数据源可以是一个表或多个表 或视图,查询结果是由0行(没有满足条件 的数据)或多行记录组成的记录集,并允 许选用一个或多个字段作为输出字段。数据的查询与修改查询语句的基本语句结构:SELECT FROM WHERE GROUP BY HAVINGORDER BY数据的查询与修改1.2 简单查询1.2.1 选择表中的若干列 1.查询指定的列 例1 查询全体学生的学号和姓名。S

2、ELECT Sno,Sname FROM Student 例2 查询全体学生的学号、姓名和所在系。SELECT Sno,Sname,Sdept FROM Student数据的查询与修改2.查询全部列 例3.查询全体学生的详细记录 SELECT * FROM Student 3. 查询经过计算的列 例4.查询全体学生的姓名及出生年份 SELECT Sname,2002-Sage FROM Student 例5.查询全体学生的姓名及出生年份和所在系 ,要求写字母表示所在的系名 SELECT Sname,Year of Birfh,2002- Sage,Lower(Sdept) FROM Stude

3、nt数据的查询与修改改变列标题的语法格式:列名 | 表达式 AS 列标题 或:列标题=列名|表达式 例如: SELECT Sname 姓名,Year of Birfh 出生年月,2002-Sage 年份 ,Lower(Sdept) 所在系 FROM Student数据的查询与修改1.2.2 选择表中的若干元组1.消除取值相同的行例6 在修课表中查询有哪些学生修了课程,要求列 出学生的学号。 SELECT Sno FROM Sc SELECT DISTINCT Sno FROM Sc2.查询满足条件的元组 (1)比较大小 例7 查询计算机系全体学生的姓名 SELECT Sname FROM St

4、udent WHERE Sdept=计算机系数据的查询与修改例8 查询所有年龄在20岁以下的学生姓名 及年龄SELECT Sname ,Sage FROM Student WHERE Sage=20 例9 查询考试成绩不及格的学生的学号SELECT DISTINCT Sno FROM Sc WHERE Grade通配符:(下划线):匹配任何一个字符;(百分号):匹配0个或多个字符;数据的查询与修改:匹配中的任意一个字符。如abcd表示 匹配a或b或c或d,如果中的字符是有序的, 则可以用连字符-来简化中的内容,例如 abcd可以简写为a-d;:不匹配中的任意一个字符。 例14 查询姓“张”的学

5、生的详细信息。SELECT * FROM Student WHERE Sname LIKE 张% 例15 查询学生表中姓“张”姓“李”和姓“刘”的学生 的详细信息。SELECT * FROM Student WHERE Sname LIKE 张李刘%数据的查询与修改例16 查询名字中第二个字为“小”或“大”的学 生的姓名和学号。SELECT Sname,Sno FROM Student WHERE Sname LIKE _大小% 例17 查询不姓“刘”的学生的姓名和学号。SELECT Sname,Sno FROM Student WHERE Sname NOT LIKE 刘% 例18 查询表中

6、学号的最后一位不在2-6的范围 内的学生情况。SELECT * FROM Student WHERE Sno LIKE %2-6数据的查询与修改如果要查找的字符串正好含有通配符的符 号,就需要用一个特殊子句ESCAPE:ESCAPE 转义字符 如WHERE 子句:WHERE 字段名 LIKE %30!% ESCAPE !WHERE 字段名 LIKE %!_% ESCAPE !数据的查询与修改(5)涉及空值的查询在SQL中判断空值的语句格式为:列名 IS NOT NULL 例19 查询无考试成绩的学生的学号和相应的 课程号。SELECT Sno ,Cno FROM Sc WHERE Grade

7、IS NULL数据的查询与修改例20 查询所有考试成绩的学生的学号和相应 的课程号。SELECT Sno ,Cno FROM Sc WHERE Grade IS NOT NULL (6)多重条件的查询 例21 查询计算机系年龄在20岁以下的学生 的姓名。SELECT Sname FROM Student WHERE Sdept=计算机 AND SageASC|DESC,注:为排序的依据列,可以是列名或列 的别名。如果没有指定排序方式,默认是升序。 NULL作为最小值处理。 例22 将学生按年龄的升序排序SELECT * FROM Student ORDER BY Sage数据的查询与修改例23

8、 查询选修了“C02”号课程的学生的学 号用成绩,查询结果按成绩的降序排列SELECT Sno,Grade FROM Sc WHERE Cno=c02 ORDER BY Grade DESC 例24 查询全体学生的信息,查询结果按所在 的系名升序排列,同一系的学生按年龄降序 排列SELECT * FROM Student ORDER BY Sdept,Sage DESC数据的查询与修改1.2.4 使用计算函数汇总数据计算函数又称为集合函数或聚合函数,其作用是对一 组值进行计算并返回一个值。 COUNT(*):统计表中的元组个数; COUNT(列名):统计本列列值个数; SUM( ):计算列值总

9、和(必须是数值型); AVG( ):计算列值平均值(必须是数值型); MAX( ):求列值最大值; MIN( ):求列值最小值。 COUNT(*)除外,其它函数在计算过程中均忽略NULL 值。数据的查询与修改例25 查询学生总人数SELECT COUNT(*) FROM Student 例26 查询选修了课程的学生的人数SELECT COUNT(DISTINCT Sno) FROM Sc 例27 计算9512101号的学生的考试总成绩 之和SELECT SUM(Grade) FROM Sc WHERE Sno=951210 数据的查询与修改例28 计算c01号课程的学生的平均成绩之和SELEC

10、T AVG(Grade) FROM Sc WHERE Cno=C01 例29 查询选修了c01号课程的学生的最高分 和最低分SELECT MAX(Grade), MIN( Grade) FROM Sc WHERE Cno=C01 数据的查询与修改1.2.5 对查询结果进行分组计算分组语句的格式:GROUP BY , nHAVING 注1:分组依据列不能是text、ntext、 image、bit的类型的列。 注2:有分组时查询列表中的列只能取自分组 依据列(计算函数中的列除外)。数据的查询与修改1.使用GROUP BY 例30 统计每门课程的选课人数,列出课程号 和人数SELECT Cno a

11、s 课程号,COUNT( Sno)as 选课人数 FROM Sc GROUP BY Cno 例31 查询每名学生的选门数和平均成绩 SELECT Sno 学号,COUNT() 选 课门数,ACG(Grade) FROM Sc GROUP BY Sno数据的查询与修改2. 使用HAVING 例32 查询修了3门课程的学生的学号 SELECT Sno 学号 FROM Sc GROUP BY Sno HAVING COUNT(*)3 例33 查询修课门数等于或大于4门的学生的 平均成绩和选课门数SELECT Sno 学号,平均成绩=AVG( Grade),修课门数=COUNT (*) FROM Sc

12、 GROUP BY Sno HAVING COUNT(*)4数据的查询与修改1.3 多表连接查询1.3.1 内连接内连接的格式:SQL-92格式:FROM 表1INNER JOIN 表2 ON SQL-89格式:FROM 表1, 表2 WHERE 连接条件的一般格式: AS 例3 SELECT Sname ,Cno,Grade FROM Student S JOIN SC ON S.Sno=SC.Sno WHERE Sdept=计 算机系数据的查询与修改例4 查询信息系修了VB课程的学生的修课成 绩。SELECT Sname ,Cname,Grade FROM Student S JOIN S

13、C ON S.Sno=SC.Sno JOIN Course C ON C.Cno=SC.Cno WHERE Sdept=信 息系 AND Cname=VB数据的查询与修改例5 查询修了VB课程的学生的修课情况,列 出姓名和所在的系。SELECT Sname , Sdept FROM Student S JOIN SC ON S.Sno=SC.Sno JOIN Course C ON C.Cno=SC.Cno WHERE Cname=VB数据的查询与修改1.3.2 自连表自连接是一种特殊的内连接,它是指相互连接的 表在物理上为同一张表,但可以在逻辑上分为两 张表。注:用自连接时,必须为两个表取别

14、名,使之在 逻辑上成为两张表。 例6 查询与刘晨在同一个系学习的学生姓名和所在 的系。SELECT S2.Sname , S2. Sdept FROM Student S1 JOIN Student S2 ON S1. Sdept =S2. Sdept WHERE S1.Sname= S2. Sname WHERE S1.Sname=刘晨 AND S2.Sname!=刘晨 数据的查询与修改例7数据的查询与修改1.3.3 外连接外连接的语法格式:FROM 表1 LEFT|RIGHT OUTER JOIN 表2 ON LEFT OUTER JOIN称为左外连接, RIGHT OUTER JOIN称

15、为右外连接,左 外连接的含意是不管表1中的记录是否满足 条件,均输出表1的内容;右外连接的含意 是不管表2中的记录是否满足条件,均输出 表2的内容.数据的查询与修改例8 查询学生的选课情况,包括修了课程和 没有修课的学生。SELECT Student.Sno,Sname,Cno,Grade FROM Student LEFT OUTER JOIN SC ON Student.Sno=SC.Sno数据的查询与修改1.4 合并多个结果集可以将两个或多个查询结果组合为一个结 果集,这就是合并多个结果集的含义。格 式:SELECT 语句1UNIONSELECT 语句2UNION ALL数据的查询与修改使用UNION的原则:所有查询语句中的列个数和列的顺序必须相同;所有查询语句中对应列的数据类型必须兼容。 例:将计算机系的学生的查询结果与信息系的 学生的查询结果合并为一个结果。SELECT Sno,Sage,Sdept FROM Student WHERE Sdept=计算机UNIONSELECT Sno,Sage,Sdept FROM Student WHERE Sdept=信息系数据的查询与修改1.5 将查询结果存入表中INTO 子句的格式:INTO 新表名 例1. 将计算机系的学生信息存入 #computer的局部表中。selece sno,sname,ssex,sage into

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

当前位置:首页 > 生活休闲 > 科普知识

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