Presentation is loading. Please wait.

Presentation is loading. Please wait.

数据库技术 实践.

Similar presentations


Presentation on theme: "数据库技术 实践."— Presentation transcript:

1 数据库技术 实践

2 3.4.2 SQL数据查询功能 数据查询是指从数据库中检索满足需要的数据。查 询是数据库的核心操作。
数据查询使用SQL中的SELECT语句,其一般形式 如下: SELECT [ALL|DISTINCT] <目标列表达式1> [, <目标列表达式2>] … FROM <基表名或视图名1> [, <基表名或视图名2>] … [WHERE <记录过滤条件>] [GROUP BY <列名1>[,<列名2>] … [HAVING <小组过滤条件>] ] [ORDER BY <列名1> [ASC|DESC] [,<列名2> [ASC|DESC]]… ] ;

3

4 1. 单表查询 (1)选择表中的若干列(投影) 【例3-17】查询STU表中全体学生的全部信息。 SELECT * FROM STU; 等价于: SELECT 学号,姓名,性别,系别,生日 【例3-18】查询学生的学号和性别。 SELECT 学号,性别 【例3-19】查询学生的姓名、性别和年龄。 SELECT 姓名,性别,Year(Now())-Year(生日) AS 年龄

5 (2)选择表中的若干行(选择) 选择表中的指定元组通过在SQL中的WHERE子句中设定记录过滤条件 实现 记录过滤条件是由逻辑运算符AND、OR、NOT连接的关系表达式

6 【例3-20】查询所有女生信息。 SELECT * FROM STU WHERE 性别=“女”; 【例3-21】查询年龄在18岁以上的女生信息。 WHERE 性别=“女” AND (Year(Now())-Year(生日))>18; 【例3-22】查询学时数在40~60之间的课程编号和课程名称。 SELECT 课程编号,课程名称 FROM CLASS WHERE 学时 BETWEEN 40 AND 60; 等价于: WHERE 学时>40 AND 学时<60;

7 【例3-23】查询学时数大于40或小于60的课程编号和课程名称。 SELECT 课程编号,课程名称 FROM CLASS WHERE 学时 NOT BETWEEN 40 AND 60; 等价于: WHERE 学时<40 OR 学时<60; 【例3-24】查询至少选修了1号、3号或5号课程中任意一门课程的学生的 学号。 SELECT 学号 FROM SGRADE WHERE 课程编号 IN(“1”,”3”,”5”); WHERE 课程编号=“1” OR课程编号=“3” OR课程编号=“5”;

8 【例3-25】查询既不是计算机系也不是物理系和电子系的学生的学号和 姓名。 SELECT 学号,姓名 FROM STU WHERE 系别<>’物理’ AND系别<>’电子’ AND系别<>’计算机’; 等价于: WHERE 系别 NOT IN(’物理’,’电子’,’计算机’); 思考: 查询没有选修1号、3号或5号课程中任何一门的学生的学号,能用下面 的语句选择么? SELECT 学号 FROM SGRADE WHERE 课程编号 NOT IN(‘1’,’3’,’5’);

9 【例3-26】查询系别中含有“理”字的学生的学号、姓名和 系别。
SELECT 学号,姓名,系别 FROM STU WHERE 系别 LIKE '*理*'; 说明: 在SQL语句中用LIKE运算符进行模糊查找,一般结合通配 符使用。在Access中的通配符有两种: ?(问号)匹配任意单个字符。 *(星号)匹配任意长度字符。 【例3-27】查询无需先修课程的课程的编号和名称。 SELECT 课程编号,课程名称 FROM CLASS WHERE 先修课程编号 IS NULL;

10 (3)排序查询 【例3-28】:查询选修了4号课程的学生的学号和成绩, 查询结果按成绩降序排列。 SELECT 学号,成绩 FROM SGRADE WHERE 课程编号=’4’ ORDER BY 成绩 DESC; (4)屏蔽重复项查询 【例3-29】:查询所有被选修了的课程的课程编号。 SELECT DISTINCT 课程编号 FROM SGRADE;

11 (5)数据常量使用说明 在Access系统中: ① 字符类型的数据常量在使用时两端加英文单引号或双引号皆可; ② 日期型和时间型常量使用时两段加#号。例如:# #, #18:15:00#; ③ 货币类型常量使用时和数值型常量相同,不需添加标记。

12 2. 使用集函数和分组查询 (1)集函数

13 【例3-30】:查询男生总人数。 SELECT COUNT(
【例3-30】:查询男生总人数。 SELECT COUNT(*) AS 男生人数 FROM STU WHERE 性别=’男’; 【例3-31】:查询4号课程的最高分、最低分和平均分。 SELECT MAX(成绩), MIN(成绩), AVG(成绩) FROM SGRADE WHERE 课程编号=’4’;

14 (2)分组查询 【例3-32】:查询男生和女生的人数。 SELECT 性别,COUNT(*) AS 人数 FROM STU GROUP BY 性别; 【例3-33】:查询不同系别的男、女生人数。 SELECT 系别,性别, COUNT(*) AS 人数 GROUP BY 系别,性别;

15 (3)HAVING小组筛选 【例3-34】:查询选修了2门以上课程的学生的学号。 SELECT 学号 FROM SGRADE GROUP BY 学号 HAVING COUNT(课程编号)>=2; 【例3-35】:查询平均分在90以上且每门功课的成绩都在80分以上的学生的学号。 HAVING AVG(成绩)>90 AND MIN(成绩)>=80; 【例3-36】:查询不及格门数在2门以上的学生的学号。 WHERE 成绩<60

16 实践和作业 实验 单表查询

17 实践和作业


Download ppt "数据库技术 实践."

Similar presentations


Ads by Google