数据表查询操作
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
6.4 单表有条件查询
在单表有条件查询时往往使用where子句, where子句的查询条件如下表所示: 运算符及谓词 =,<,>,<=,>=,!=,<>,!>,!<;NOT+上述运算符
查询条件 比较
确定范围 确定集合
字符匹配 空值 多重条件
BETWEEN AND,NOT BETWEEN AND IN,NOT IN
6.3 单表无条件查询
【例5】查询全体学生的姓名、出生年份和所 在系,要求用小写字母表示所有系名,同时为 姓名列指定别名为NAME,出生年份所在列 指定别名为BIRTHDAY,系别所在列指定别 名为DEPARTMENT。 说明:在列名和新列名之间也可以添加 as来 为列起新列名。
SELECT SNAME NAME,2005-SAGE BIRTHDAY,LOWER(SDEPT) DEPARTMENT FROM STUDENT;
6.4 单表有条件查询
二、查询满足条件的记录 1.比较大小 【例7】查询计算机系全体学生的名单。
SELECT SNAME FROM STUDENT WHERE SDEPT=’CS’;
【例8】查询考试成绩有不及格的学生的学号。
SELECT DISTINCT SNO WHERE GRADE<60; FROM SC
6.5 排序、分组和使用集函数
二、使用集函数 为了进一步方便用户,增强检索功能,SQL提供了 许多集函数,具体参见下表。
集函数 COUNT COUNT SUM 具体用法 COUNT([DISTINCT|ALL]*) 具体含义 统计元组个数
COUNT([DISTINCT|ALL]<列名>) 统计一列中值的个数 SUM([DISTINCT|ALL]<列名>) 计算一列值的总和(此列 必须为数值型)
• • • • • 综合统一 高度非过程化 面向集合的操作方式 以同一种语法结构提供两种使用方式 语言简捷,易学易用
6.1 SQL语言概述
SQL 语言中的动词 SQL功能 数据查询 数据定义 SELECT CREATE,DROP,ALTER 动词
数据操纵 数据控制
INSERT,UPDATE,DELETE COMMIT,ROLLBACK
【教学重点】
• SQL语句进行查询的语句格式 • 利用SQL语言进行查询的方法
【教学难点】
• 带条件查询和多表连接查询
第六章 数据表的查询操作——关系数据库语言SQL
本章小节
• SQL语言概述 • 综合查询语句select语句基本格式 • 单表无条件查询 • 单表有条件查询 • 排序、分组和使用集函数 • 多表连接查询 • 嵌套查询及谓词的使用 • 集合查询
SELECT SNO,GRADE FROM SC WHERE CNO=’ 3’ ORDER BY GRADE DESC;
6.5 排序、分组和使用集函数
一、对查询结果进行排序 【例18】查询全体学生情况,查询结果按所 在系升序排列,同一系中的学生按年龄降 序排列。
SELECT * FROM STUDENT ORDER BY SDEPT,SAGE DESC;
SELECT SNAME FROM STUDENT WHERE SDEPT=‘CS’AND SAGE<20;
【例16】利用OR运算符改写例10(查询信息 系(IS)、数学系(MA)计算机科学系(CS) 学生的姓名和性别。)。
6.5 排序、分组和使用集函数
一、对查询结果进行排序 用户可以利用ORDER BY子句对查询结果按照一个 或多个属性列的升序(ASC)或降序(DESC)排 序,缺省值为升序。 【例17】查询选修了3号课程的学生的学号及其成绩, 查询结果按分数的降序排列。
ESCAPE’\’短语表示\为换码字符,这样匹配串中 紧跟在\后面的字符“_”不再具有通配符的含义, 转义为普通的“_”字符。
6.4 单表有条件查询
二、查询满足条件的记录 5.涉及空值的查询 【例13】某些学生选修课程后没有参加考试,所以有 选修记录,但没有考试成绩。查询缺少成绩的学生 的学号和相应的课程号。
AVG
MAX
AVG([DISTINCT|ALL]<列名>)
MAX([DISTINCT|ALL]<列名>)
计算一列值的平均值(此 列必须为数值型)
求一列值中的最大值
MIN
MIN([DISTINCT|ALL]<列名>)
求一列值中的最小值
6.5 排序、分组和使用集函数
二、使用集函数 为避免重复计算学生人数,必须在 COUNT函数中使用DISTINCT短语。 【例19】查询学生总数。
6.4 单表有条件查询
【例11】查询名字中第2个字为“阳”字的学生的姓 名和学号。 SELECT SNAME,SNO FROM STUDENT WHERE SNAME LIKE ‘_阳%’; 【例12】查询DB_Design课程的课程号和学分。
SELECT CNO,CCREDIT FROM COURSE WHERE CNAME LIKE ‘DB\_Design‘ESCAPE’\’;
LIKE,NOT LIKE IS NULL,IS NOT NULL AND,OR
6.4 单表有条件查询
一、消除取值重复的行 【例6】查询选修了课程的学生学号 SELECT DISTINCT SNO FROM SC; 说明:DISTINCT短语的作用是消除取值 重复的行,如果没有指定DISTINCT短语, 则缺省为ALL,即保留结果表中取值重复 的行。
6.1 SQL语言概述
SQL(Structured Query Language,结构 化查询语言)是一种在关系数据库中定义和操作数 据的标准语言 。 SQL语言之所以能够为用户和业界所接受,并成为 国际标准,是因为它是一个综合的、功能极强同时 又简捷易学的语言。SQL语言集数据查询(Data Query)、数据操纵(Data Manipulation)、 数据定义(Data Definition)和数据控制 (Data Control)功能于一体。主要特点包括:
6.5 排序、分组和使用集函数
三、对查询结果进行分组---group by 分组是按某一列数据的值或某个列组合的 值将查询出的行分若干组。每组在指定列 或列组合上具有相同的值。
【例23】求各个课程号及相应的选课人数。
SELECT CNO,COUNT(SNO) FROM SC GROUP BY CNO;
SELECT SNO,CNO FROM SC WHERE GRADE IS NULL; 注意,这里的“IS”不能用“=”代替。
【例14】查询所有有成绩的学生学号和课程号。 SELECT SNO,CNO FROM SC WHERE GRADE IS NOT NULL;
6.4 单表有条件查询
二、查询满足条件的元组 6.多重条件查询 逻辑运算符AND和OR可用来联结多个查询条件。 【例15】查询计算机系年龄在20岁以下的学生 学号。
6.4 单表有条件查询
二、查询满足条件的记录 2.确定范围 谓词BETWEEN…AND…和NOT BETWEEN…AND…可以用来查找属性值在或 不在指定范围的记录,其中BETWEEN后是范围 的下限(即低值),AND后是范围的上限(即高 值)。 【例9】查询年龄在20到23岁(包括20和23岁) 之间的学生的姓名、系别和年龄。
6.5 排序、分组和使用集函数
四、汇总计算---使用compute子句 用来计算总计并进行分组小计,可使用聚合函数, 总计值或小计值将作为附加的新行出现在检索结果 中。 注意:使用compute子句时必须使用order by对 compute by中的by指定的列进行排序,否则将 出现错误信息。 例如:按学号显示学生成绩,并计算每个人的平均 成绩和总成绩。 select * from sc order by sno compute avg(grade),sum(grade) by sno
6.2综合查询语句select语句基本格式
Βιβλιοθήκη Baidu
数据查询语句的结构 如下: SELECT 子句1 FROM 子句2 [WHERE 表达式1] [GROUP BY 子句3] [HAVING 表达式2] [ORDER BY 子句4] [UNION 运算符]
功能及说明: SELECT 子句 指定查询结果 中需要返回的值; FROM 子句 指定从其中检索 行的表或视图; WHERE 表达式 指定查询的 搜索条件; GROUP BY 子句 指定查询 结果的分组条件; HAVING 表达式 指定分组或 集合的查询条件; ORDER BY 子句 指定查询 结果的排序方法; UNION 运算符 将多个 SELECT语句查询结果组合为 单个结果集,该结果集包含联 合查询中的所有查询的全部行。
SELECT SNAME,SDEPT,SAGE FROM STUDENT WHERE SAGE BETWEEN 20 AND 23;
6.4 单表有条件查询
二、查询满足条件的记录 3.确定集合 谓词IN和NOT IN可以用来查找属性值属于 或不属于指定集合的记录。 【例10】查询信息系(IS)、数学系(MA)、 和计算机科学系(CS)学生的姓名和性别。
SELECT SNAME,SSEX FROM STUDENG WHERE SDEPT IN(‘IS’,‘MA’,‘CS’);
6.4 单表有条件查询
二、查询满足条件的记录 4.字符匹配(LIKE和NOT LIKE) 其一般语法格式如下: [NOT]LIKE‘<匹配串>’[ESCAPE‘<换码字 符>’] 功能:查找指定的属性列值与<匹配串>相匹配 的记录。<匹配串>可以是一个完整的字符串, 也可以含有通配符%和_。其中: %(百分号):代表任意长度(长度可以为0) 的字符串。 _(下划线):代表任意单个字符。
第六章 数据表的查询操作——关 系数据库语言SQL
8学时
第六章 数据表的查询操作——关系数据库语言SQL 【教学目标】
• • • • •
了解SQL语言的作用 巩固前面使用过的SQL语言 熟练掌握利用SQL语言进行基本查询的方法 熟练掌握利用SQL语言进行带条件查询的方法 熟练掌握利用SQL语言进行多表连接查询的方法
6.5 排序、分组和使用集函数
三、对查询结果进行分组 【例24】查询选修了2门以上课程的学生学号。 SELECT SNO FROM SC GROUP BY SNO HAVING COUNT(*)>2;
WHERE子句与HAVING短语的区别在于作用 对象不同。WHERE子句作用于基本表或视图, 从中选出满足条件的元组。HAVING短语作用于 组,从中选择满足条件的组。
6.3 单表无条件查询
一、查询指定列 【例1】查询全体学生的学号和姓名。
SELECT SNO,SNAME FROM STUDENT;
【例2】查询全体学生的姓名、学号、所在系。
SELECT SNAME,SNO,SDEPT FROM STUDENT;
6.3 单表无条件查询
二、查询全部列 【例3】查询全体学生的详细记录。 SELECT * FROM STUDENT; 上面的语句等价于: SELECT SNO,SNAME,SSEX,SAGE,SDEPT FROM STUDENT; 注意:*号代表的是表的全部列。
SELECT COUNT(*) STUDENT; FROM
【例20】查询选修了课程的学生人数。
SELECT COUNT(DISTINCT SNO) FROM SC;
6.5 排序、分组和使用集函数
二、使用集函数 【例21】计算86050101号课程的学生平均成绩。 SELECT AVG(GRADE) FROM SC WHERE CNO=‘86050101’; 【例22】查询选修了86050101号课程的学生最高 分数。 SELECT MAX(GRADE) FROM SC WHERE CNO=‘86050101’;
6.3 单表无条件查询
三、查询经过计算的列 SELECT子句中不仅可以是表中的字段名,也 可以是表达式。 【例4】查询全体学生的姓名及其出生年份。
SELECT SNAME,2005-SAGE, FROM STUDENT;
说明:子句中的第二项不是字段名,而是一个 计算表达式,是用当前的年份(假设为2005 年)减去学生的年龄,这样,所得的即是学生 的出生年份。