第六章 数据查询

26
第第第 第第第第 第第第 2011.3.

Upload: kevin-long

Post on 01-Jan-2016

52 views

Category:

Documents


0 download

DESCRIPTION

第六章 数据查询. 金丽霞 2011.3. 目标:. 知识目标. 掌握 SELECT 语句对单表内容进行查询。 掌握 SELECT 语句对多表进行连接查询。 掌握嵌套查询的方法。. 目标:. 技能目标. 能够灵活应用 SELECT 语句对单表内容进行查询。 能够灵活应用 SELECT 语句对多表进行连接查询。 能够灵活应用嵌套查询进行相应的操作。. 一、单表查询 之一 查询指定列的信息. 查询指定列的记录信息 —— 语法. ……. ,. 列名2. AS 别名. SELECT. 列名1. AS 别名. FROM 表名. 学号. - PowerPoint PPT Presentation

TRANSCRIPT

第六章 数据查询第六章 数据查询

金丽霞2011.3.

目标:

知识目标

① 掌握 SELECT 语句对单表内容进行查询。② 掌握 SELECT 语句对多表进行连接查询。③ 掌握嵌套查询的方法。

目标:

技能目标

① 能够灵活应用 SELECT 语句对单表内容进行查询。② 能够灵活应用 SELECT 语句对多表进行连接查询。③ 能够灵活应用嵌套查询进行相应的操作。

一、单表查询 之一 查询指定列的信息

1. 查询指定列的记录信息——语法

FROM 表名 SNO SNAME SEX SAGE SDEPT

99001 张岩 男 20 信息技术

99002 李诚 女 19 网络技术

99003 周敏 女 18 信息技术

99004 陈立 男 19 信息技术

学号 姓名 性别 年龄 专业

AS 别名 AS 别名SELECT 列名1

, 列名2

……

2. 实验:例6.1 、 6.2

3. 练习

4. 实验:例6.3

单表查询练习 1 :查询 STUDENT 表的 sname 、 sage

字段

例 1 : select sname,sage from student

SNO SNAME SEX SAGE SDEPT

99001 张岩 男 20 信息技术

99002 李诚 女 19 网络技术99003 周敏 女 18 信息技术99004 陈立 男 19 信息技术

SNAME SAGE

张岩 20

李诚 19

周敏 18

陈立 19

单表查询练习 2 : 查询 student 表中的所有数据

例 2 : select * from student

SNO SNAME SEX SAGE SDEPT

99001 张岩 男 20 信息技术

99002 李诚 女 19 网络技术99003 周敏 女 18 信息技术99004 陈立 男 19 信息技术

一、单表查询 之二 查找指定列的前 N 条记录

1. 查询前 N 条记录——语法

FROM 表名

SELECT TOP n

2. 实验:例 6.7 、 6.8

列名 1 ,列名2

……

3. 练习:查询

练习 -- 查找指定列的前 N 条记录

SNO SNAME SEX SAGE SDEPT

99001 张岩 男 20 信息技术99002 李诚 女 19 网络技术99003 周敏 女 18 信息技术99004 陈立 男 19 信息技术

查询 student 表的所有记录

查询 student 表前 3 条记录

查询 student 表前 3 条记录的 sno , sname,sex 字段

一、单表查询之三 WHERE 子句

1.WHERE 子句——语法

FROM 表名

SELECT

2. 练习:

列名 1 ,列名2

……

WHERE 条件表达式

WHERE 子句练习

1. 查询信息技术专业的所有学生记录

2. 查询年龄是 19 岁的学生的学号、姓名,性别,年龄

SNO SNAME SEX SAGE SDEPT

99001 张岩 男 20 信息技术99002 李诚 女 19 网络技术99003 周敏 女 18 信息技术99004 陈立 男 19 信息技术

3. 查询年龄是 19 岁且性别是女的学生的学号、姓名,性别,年龄

WHERE 子句练习

4. 查询 CJ 表中成绩在 [56,78] 范围内的学生

select *

from cj

where

5. 查询 CJ 表中成绩在 [56,78] 范围外的学生

成绩 >=56 and 成绩<=78

成绩 between 56 and 78

select *

from cj

where 成绩 <56 or 成绩 >78 成绩 not between 56 and 78

WHERE 子句练习

6. 查询 XS 表中专业是计算机网络和电子商务的学生

select *

from XS

where

7. 查询 KC 表中选修了 A003 和 J003 课程的老师

专业 =‘ 计算机网络’ or 专业 =‘ 电子商务’专业 IN (‘ 计算机网络’ ,’ 电子商务’ )

select *

from cj

where 课程号 IN (‘A003’,’J003’)

WHERE 子句练习

8. 查询 XS 表中姓张的所有学生信息

select *

from XS

where

9. 查询 xs 表中姓名是两个字,姓张的学生的所有字段信息

姓名 like ‘ 张 %’

select *

from XS

where 姓名 like ‘ 张 _’

思考题:查找 XS 表中姓名张,中间一个字不清楚,第三个字是强或明的姓名

• use xsgl• go • select 姓名• from xs• where rtrim( 姓名 ) like ' 张 _[ 强 , 明 ]'• go

WHERE 子句练习

10. 查询 KC 表中选修了课程却没有成绩的学生的学号

select *

from KC

where 成绩 is NULL

一、单表查询之四 SELECT 语句的统计功能

1 、 SELECT 语句具有哪些统计功能?

求和

求平均

求最大值

求最小值……

一、单表查询之四 SELECT 语句的统计功能

2 、 SELECT 语句实现统计功能的方法

使用集合函数

GROUP BY 子句

COMPUTE 子句

一、单表查询之四 SELECT 语句的统计功能

• 3 、练习• 统计 XS 表中的总人数• 统计 CJ 表中的总课程数• 统计选修了 A001 课程的总人数• 统计选修了 A004 课程的最高分的学生成绩

一、单表查询之四 SELECT 语句的统计功能

• 4 、 GROUP BY

针对整个查询结果,根据条件对数据进行分组

SELECT 列名 1 ,列名 2 ,别名 = 函数计算

FROM 表名

GROUP BY 列名 1 ,列名 2

GROUP BY 子句写在 WHERE 子句之后

SELECT 后所跟的列名要么在集合函数中,要么在 GROUP BY 子句中

一、单表查询之四 SELECT 语句的统计功能

• 5 、练习查询统计 XS 表中男生总人数和女生总人数

查询统计 KC 表中各课程选修的总人数

完成练习:例 6.22

一、单表查询之四 SELECT 语句的统计功能

• 6 、 HAVING

对各组内的记录进行条件筛选

SELECT 列名 1 ,列名 2 ,别名 = 函数计算

FROM 表名

GROUP BY 列名 1 ,列名 2

HAVING 条件

与 WHERE 子句的区别是什么?

一、单表查询之四 SELECT 语句的统计功能

• 7 、练习对 XS 表进行查询统计,统计出各专业性别是女的总人数

完成例 6.23

对成绩表进行查询统计,统计出平均成绩 <80 的学生的学号,平均分

二、多表查询之一 内连接

• SELECT 列名列表 FROM 表名 1 JOIN 表名 2 ON 表名1. 列名 = 表名 2. 列名

• SELECT 列名列表 FROM 表名 1 , 表名 2 WHERE

表名 1. 列名 = 表名 2. 列名

练习• 查询 xs 表中的学号、姓名和 CJ 表中的课程号、

成绩字段的信息。SELECT XS. 学

号XS. 姓名

CJ. 课程号 CJ. 成绩

JOIN

FROM XS

CJ ON XS. 学号 =CJ. 学号

SELECT XS. 学号

XS. 姓名

CJ. 课程号 CJ. 成绩

,

FROM XS

CJ WHERE XS. 学号 =CJ. 学号

练习• 查询 xs 表中的学号、姓名, CJ 表中的成

绩, KC 表中的课程名字段的信息。SELECT XS. 学

号XS. 姓名

KC. 课程名 CJ. 成绩

JOIN

FROMXS

kc ON cj. 课程号 =kc. 课程号

SELECT XS. 学号

XS. 姓名

CJ. 课程号 CJ. 成绩

,

FROM XS

CJ WHERE XS. 学号 =CJ. 学号

JOIN CJ ON XS. 学号 =CJ. 学号

, KC AND CJ. 课程号号 =KC. 课程号

练习• 查询学号是 2006030101 的学生的学号、姓名、选修课程号、及各门功课的

成绩。• 查询选修了英语的学生的学号、姓名、课程名、成绩。

• 查询选修了课程却没有成绩的学生的学号、姓名、课程名