SQL查询教学PPT

上传人:lcm****20 文档编号:125351550 上传时间:2020-03-17 格式:PPT 页数:56 大小:184.50KB
返回 下载 相关 举报
SQL查询教学PPT_第1页
第1页 / 共56页
SQL查询教学PPT_第2页
第2页 / 共56页
SQL查询教学PPT_第3页
第3页 / 共56页
SQL查询教学PPT_第4页
第4页 / 共56页
SQL查询教学PPT_第5页
第5页 / 共56页
点击查看更多>>
资源描述

《SQL查询教学PPT》由会员分享,可在线阅读,更多相关《SQL查询教学PPT(56页珍藏版)》请在金锄头文库上搜索。

1、查 询 数据查询 l语句格式 SELECT ALL DISTINCT FROM WHERE GROUP BY HAVING ORDER BY ASC DESC 单表查询 l查询仅涉及一个表 n一 选择表中的若干列 n二 选择表中的若干元组 n三 ORDER BY子句 n四 聚集函数 n五 GROUP BY子句 1 选择表中的若干列 l查询指定列 查询全体学生的学号与姓名 SELECT Sno Sname FROM Student 查询全体学生的姓名 学号 所在系 SELECT Sname Sno Sdept FROM Student 2 查询全部列 l选出所有属性列 n在SELECT关键字后面

2、列出所有列名 n将指定为 查询全体学生的详细记录 SELECT Sno Sname Ssex Sage Sdept FROM Student 或 SELECT FROM Student 3 查询经过计算的值 lSELECT子句的可以为 算术表达式 字符串常量 函数 列别名 查全体学生的姓名及其出生年份 SELECT Sname 2004 Sage 假定当年的年份为 2004年 FROM Student 输出结果 Sname 2004 Sage 李勇 1984 刘晨 1985 王敏 1986 张立 1985 查询经过计算的值 续 查询经过计算的值 续 查询全体学生的姓名 出生年份和所有系 要求用

3、小 写字母表示所有系名 SELECT Sname Year of Birth 2004 Sage LOWER Sdept FROM Student 输出结果 Sname Year of Birth 2004 Sage ISLOWER Sdept 李勇 Year of Birth 1984 cs 刘晨 Year of Birth 1985 is 王敏 Year of Birth 1986 ma 张立 Year of Birth 1985 is 查询经过计算的值 续 l使用列别名改变查询结果的列标题 SELECT Sname NAME Year of Birth BIRTH 2000 Sage B

4、IRTHDAY LOWER Sdept DEPARTMENT FROM Student 输出结果 NAME BIRTH BIRTHDAY DEPARTMENT 李勇 Year of Birth 1984 cs 刘晨 Year of Birth 1985 is 王敏 Year of Birth 1986 ma 张立 Year of Birth 1985 is 单表查询 l查询仅涉及一个表 n一 选择表中的若干列 n二 选择表中的若干元组 n三 ORDER BY子句 n四 聚集函数 n五 GROUP BY子句 选择表中的若干元组 l1 消除取值重复的行 如果没有指定DISTINCT关键词 则缺省为

5、ALL 查询选修了课程的学生学号 SELECT Sno FROM SC 等价于 SELECT ALL Sno FROM SC 执行上面的SELECT语句后 结果为 Sno 200215121 200215121 200215121 200215122 200215122 消除取值重复的行 续 l指定DISTINCT关键词 去掉表中重复的行 SELECT DISTINCT Sno FROM SC 执行结果 Sno 200215121 200215122 2 查询满足条件的元组 查 询 条 件谓 词 比 较 NOT 上述比较运算符 确定范围BETWEEN AND NOT BETWEEN AND 确

6、定集合IN NOT IN 字符匹配LIKE NOT LIKE 空 值IS NULL IS NOT NULL 多重条件 逻辑 运算 AND OR NOT 表3 4 常用的查询条件 1 比较大小 查询计算机科学系全体学生的名单 SELECT Sname FROM Student WHERE Sdept CS 查询所有年龄在20岁以下的学生姓名及其年龄 SELECT Sname Sage FROM Student WHERE Sage 20 查询考试成绩有不及格的学生的学号 SELECT DISTINCT Sno FROM SC WHERE Grade 60 2 确定范围 l谓词 BETWEEN A

7、ND NOT BETWEEN AND 查询年龄在20 23岁 包括20岁和23岁 之间的学生的 姓名 系别和年龄 SELECT Sname Sdept Sage FROM Student WHERE Sage BETWEEN 20 AND 23 查询年龄不在20 23岁之间的学生姓名 系别和年龄 SELECT Sname Sdept Sage FROM Student WHERE Sage NOT BETWEEN 20 AND 23 3 确定集合 l谓词 IN NOT IN 查询信息系 IS 数学系 MA 和计算机科学系 CS 学生的姓 名和性别 SELECT Sname Ssex FROM

8、Student WHERE Sdept IN IS MA CS 查询既不是信息系 数学系 也不是计算机科学系的学生的姓名和性 别 SELECT Sname Ssex FROM Student WHERE Sdept NOT IN IS MA CS 4 字符匹配 谓词 NOT LIKE ESCAPE l匹配串为固定字符串 查询学号为200215121的学生的详细情况 SELECT FROM Student WHERE Sno LIKE 200215121 等价于 SELECT FROM Student WHERE Sno 200215121 字符匹配 续 2 匹配串为含通配符的字符串 SQL S

9、erver提 供了四种通配符 代表任意多个字符 下划 线 代表单个字符 代表指定范围内的单个 字符 代表不在指定范围内的单个字符 查询所有姓刘学生的姓名 学号和性别 SELECT Sname Sno Ssex FROM Student WHERE Sname LIKE 刘 查询姓 欧阳 且全名为三个汉字的学生的姓名 SELECT Sname FROM Student WHERE Sname LIKE 欧阳 字符匹配 续 查询名字中第2个字为 阳 字的学生的姓名和学号 SELECT Sname Sno FROM Student WHERE Sname LIKE 阳 查询所有不姓刘的学生姓名 SE

10、LECT Sname Sno Ssex FROM Student WHERE Sname NOT LIKE 刘 字符匹配 续 3 使用换码字符将通配符转义为普通字符 查询DB Design课程的课程号和学分 SELECT Cno Ccredit FROM Course WHERE Cname LIKE DB Design ESCAPE 查询以 DB 开头 且倒数第3个字符为 i的课程的详细情况 SELECT FROM Course WHERE Cname LIKE DB i ESCAPE ESCAPE 表示 为换码字符 5 涉及空值的查询 n谓词 IS NULL 或 IS NOT NULL n

11、 IS 不能用 代替 某些学生选修课程后没有参加考试 所以有选课记录 但没 有考试成绩 查询缺少成绩的学生的学号和相应的课程号 SELECT Sno Cno FROM SC WHERE Grade IS NULL 查所有有成绩的学生学号和课程号 SELECT Sno Cno FROM SC WHERE Grade IS NOT NULL 6 多重条件查询 l逻辑运算符 AND和 OR来联结多个查询条件 l AND的优先级高于OR l 可以用括号改变优先级 l可用来实现多种其他谓词 l NOT IN l NOT BETWEEN AND 多重条件查询 续 查询计算机系年龄在20岁以下的学生姓名 S

12、ELECT Sname FROM Student WHERE Sdept CS AND Sage 20 多重条件查询 续 l改写 查询信息系 IS 数学系 MA 和计算机科学 系 CS 学生的姓名和性别 SELECT Sname Ssex FROM Student WHERE Sdept IN IS MA CS 可改写为 SELECT Sname Ssex FROM Student WHERE Sdept IS OR Sdept MA OR Sdept CS 单表查询 l查询仅涉及一个表 n一 选择表中的若干列 n二 选择表中的若干元组 n三 ORDER BY子句 n四 聚集函数 n五 GRO

13、UP BY子句 ORDER BY子句 lORDER BY子句 n可以按一个或多个属性列排序 n升序 ASC 降序 DESC 缺省值为升序 l当排序列含空值时 nASC 排序列为空值的元组最后显示 nDESC 排序列为空值的元组最先显示 ORDER BY子句 续 查询选修了3号课程的学生的学号及其成绩 查询结果按分数降 序排列 SELECT Sno Grade FROM SC WHERE Cno 3 ORDER BY Grade DESC 查询全体学生情况 查询结果按所在系的系号升序排列 同一系 中的学生按年龄降序排列 SELECT FROM Student ORDER BY Sdept Sag

14、e DESC 嵌套查询 l嵌套查询概述 一个SELECT FROM WHERE语句称为一 个查询块 将一个查询块嵌套在另一个查询块的 WHERE子句或HAVING短语的条件中的查询 称为嵌套查询 嵌套查询 续 SELECT Sname 外层查询 父查 询 FROM Student WHERE Sno IN SELECT Sno 内层查询 子查询 FROM SC WHERE Cno 2 插 入 插入数据 l两种插入数据方式 1 插入元组 2 插入子查询结果 可以一次插入多个元组 一 插入元组 l语句格式 INSERT INTO VALUES l功能 n将新元组插入指定表中 插入元组 续 l IN

15、TO子句 n属性列的顺序可与表定义中的顺序不一致 n没有指定属性列 n指定部分属性列 l VALUES子句 n 提供的值必须与INTO子句匹配 值的个数 值的类型 插入元组 续 例1 将一个新学生元组 学号 200215128 姓 名 陈冬 性别 男 所在系 IS 年龄 18岁 插入到Student表中 INSERT INTO Student Sno Sname Ssex Sdept Sage VALUES 200215128 陈冬 男 IS 18 插入元组 续 例2 将学生张成民的信息插入到Student表中 INSERT INTO Student VALUES 200215126 张成民

16、男 18 CS 插入元组 续 例3 插入一条选课记录 200215128 1 INSERT INTO SC Sno Cno VALUES 200215128 1 RDBMS将在新插入记录的Grade列上自动地赋空值 或者 INSERT INTO SC VALUES 200215128 1 NULL 二 插入子查询结果 l语句格式 INSERT INTO 子查询 l功能 将子查询结果插入指定表中 插入子查询结果 续 l INTO子句 与插入元组类似 l 子查询 nSELECT子句目标列必须与INTO子句匹配 值的个数 值的类型 插入子查询结果 续 例4 对每一个系 求学生的平均年龄 并把 结果存入数据库 第一步 建表 CREATE TABLE Dept age Sdept CHAR 15 系名 Avg age SMALLINT 学生平均年 龄 插入子查询结果 续 第二步 插入数据 INSERT INTO Dept age Sdept Avg age SELECT Sdept AVG Sage FROM Student GROUP BY Sdept 插入子查询结果 续 RDBMS在执行插入

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

当前位置:首页 > 大杂烩/其它

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