任务6-1 简单数据查询 课件(共52张PPT)-《数据库应用技术-SQL Server》同步教学(人民邮电版)

资源下载
  1. 二一教育资源

任务6-1 简单数据查询 课件(共52张PPT)-《数据库应用技术-SQL Server》同步教学(人民邮电版)

资源简介

(共52张PPT)
查询与维护学生信息管理数据表
任务6-1 简单数据查询
目录
Contents
任务6-2 多表连接查询
任务6-3 嵌套查询
任务6-4 集合查询
任务6-5 学生信息浏览、查询、统计
任务6-6 数据更新
任务6-7 学生基本信息维护、信息导出
任务6-1 简单数据查询
PART 1
(一)单表无条件查询
任务
assignments
(二)使用WHERE子句实现条件查询
(三)使用常用聚集函数查询
(四)分组筛选数据
(五)对查询结果进行排序
简单数据查询
任务6-1
任务1-1 数据处理
【任务分析】
数据查询是数据库中最常见的操作,Transact-SQL是通过SELECT语句来实现查询的,接下来就通过简单查询来认识SELECT语句的基本语法结构。
【课堂任务】
掌握并理解SELECT语句的基本语法结构,并通过其解决实际查询问题。
单表无条件查询
使用WHERE子句实现条件查询
使用常用聚集函数查询
分组筛选数据
对查询结果进行排序
简单数据查询
任务6-1
任务1-1 数据处理
简单数据查询
任务6-1
任务1-1 数据处理
功能及说明如下。
(1)SELECT子句:指定查询结果中需要返回的值。
(2)FROM子句:指定从其中检索行的表或视图。
(3)WHERE表达式:指定查询的搜索条件。
(4)GROUP BY子句:指定查询结果的分组条件。
(5)HAVING表达式:指定分组或集合的查询条件。
(6)ORDER BY子句:指定查询结果的排序方法。
简单数据查询
任务6-1
任务1-1 数据处理
(一)单表无条件查询
1.语法格式
SELECT [ALL|DISTINCT] [TOP N[PERCENT]] <选项> [AS <显示列名>]
[,<选项> [AS <显示列名>][,...]]
FROM <表名|视图名>
2.说明
(1)ALL:表示输出所有记录行,包括重复记录。默认值为ALL。
DISTINCT:表示去掉查询结果中的重复行。
(2)TOP N:返回查询结果集中的前N行。
加[PERCENT]:返回查询结果集中的前N%行。N的取值范围为0~100。
简单数据查询
任务6-1
任务1-1 数据处理
(3)选项:查询结果集中的输出列。选项可为字段名、常量、表达式或函数。用“*”表示输出表中的所有字段。
(4)显示列名:在输出结果中,设置选项显示的列名。用AS重命名,AS可以省略。显示列名可用引号定界或不定界。未定义显示列名时,若选项为字段名,则系统将自动给出系统的列名为原字段名,若选项为常量、表达式或函数,系统自动给出输出的列名为“无列名”。
(5)表名|视图名:要查询的表或视图。表无需打开,到当前路径下寻找表对应的文件。
简单数据查询
任务6-1
任务1-1 数据处理
3.例题
【例6.1】 查询全体学生的学号和姓名。
USE grademanager
SELECT sno,sname
FROM student
查询结果如图6.1查询学号和姓名的结果所示。
【例6.2】 查询全体学生的学号、姓名、性别。
SELECT sno,sname,ssex
FROM student
查询结果如图6.2查询学号、姓名、性别的结果所示。
简单数据查询
任务6-1
任务1-1 数据处理
简单数据查询
任务6-1
任务1-1 数据处理
简单数据查询
任务6-1
任务1-1 数据处理
【例6.4】 查询全体学生的详细记录。
SELECT *
FROM student
上面的语句等价于:
SELECT sno,sname,ssex,sbirthday,sid,saddress,spostcode,sphone,spstatus,
sfloor,sroomno,sbedno,tuixue,xiuxue,smemo,sphoto,classno
FROM student
查询结果如图6.4所示。
简单数据查询
任务6-1
任务1-1 数据处理
简单数据查询
任务6-1
任务1-1 数据处理
【例6.5】 输出学生表中的前5条记录。
SELECT TOP 5 *
FROM student
【例6.6】 查询全体学生的姓名、出生日期,并为“姓名”列指定别名为“姓名”,为“出生年份”列指定别名为“日期”,在此列前增加一列“出生日期:”,“常量”列的列名为“生日”。
SELECT sname 姓名,'出生日期:' AS 生日, sbirthday 日期
FROM student
查询结果如图6.5所示。
简单数据查询
任务6-1
任务1-1 数据处理
简单数据查询
任务6-1
任务1-1 数据处理
简单数据查询
任务6-1
任务1-1 数据处理
简单数据查询
任务6-1
任务1-1 数据处理
(二)使用WHERE子句实现条件查询
1.语法格式
SELECT [ALL|DISTINCT] [TOP N[PERCENT]] <选项> [AS <显示列名>]
[,<选项> [AS <显示列名>][,...]]
FROM <表名|视图名>
WHERE <条件表达式>
2.说明
(1)条件表达式:定义要返回的行应满足的条件,条件表达式是通过运算符连接起来的逻辑表达式。
(2)WHERE条件中的运算符。
简单数据查询
任务6-1
任务1-1 数据处理
简单数据查询
任务6-1
任务1-1 数据处理
3.例题
(1)比较运算符
使用比较运算符限定查询条件,其语法格式如下。
WHERE 表达式1 比较运算符 表达式2
【例6.10】 查询所有女生的学号、姓名和性别。
SELECT sno,sname,ssex
FROM student
WHERE ssex='女'
查询结果如图6.8所示。
简单数据查询
任务6-1
任务1-1 数据处理
【例6.11】 查询所有成绩大于80分的学生的学号和成绩。
SELECT sno AS '学号',degree '成绩'
FROM sc
WHERE degree>80
【例6.12】 查询全体团员的名单。
SELECT sname
FROM student
WHERE spstatus='共青团员'
【例6.13】 查询1990年9月1日后出生的学生的姓名及出生日期。
SELECT sname, sbirthday
FROM student
WHERE sbirthday>'1990-9-1'
简单数据查询
任务6-1
任务1-1 数据处理
【例6.14】 查询年满18岁的学生的学号、姓名及出生日期。
SELECT sno, sname, sbirthday
FROM student
WHERE DATEPART(year,sbirthday)>=18
提示 WHERE子句中比较运算符的两端是表达式,表达式可以由列名、常量、函数等组成,运算符两边表达式的数据类型必须一致。
简单数据查询
任务6-1
任务1-1 数据处理
简单数据查询
任务6-1
任务1-1 数据处理
【例6.15】 查询住在3号楼的男生的姓名及班号。
SELECT sname,classno
FROM student
WHERE sfloor='3'AND ssex='男'
【例6.16】 查询成绩在90分以上或不及格的学生的学号和课程号信息。
SELECT sno,cno
FROM sc
WHERE degree>90 or degree<60
【例6.17】 查询非团员的学生的学号、姓名及年龄。
SELECT sno,sname,YEAR(GETDATE())-YEAR(sbirthday)
FROM student
WHERE NOT spstatus='共青团员'
简单数据查询
任务6-1
任务1-1 数据处理
(3)范围运算符
在WHERE子句中可以使用BETWEEN关键字查找某一范围内的数据,或使用NOT BETWEEN关键字查找不在某一范围内的数据。其语法格式如下。
WHERE 表达式 [NOT] BETWEEN 初始值 AND 终止值
提示 初始值表示范围的下限(最小值),终止值表示范围的上限(最大值)。绝对不允许初始值大于终止值。
如果表达式的值大于等于初始值的值,并且小于等于终止值的值,则BETWEEN返回TRUE。
表达式的数据类型必须与初始值和终止值的数据类型相同。
简单数据查询
任务6-1
任务1-1 数据处理
【例6.18】 查询成绩为60~70分的学生的学号及成绩。
SELECT sno, degree
FROM sc
WHERE degree BETWEEN 60 AND 70

SELECT sno, degree
FROM sc
WHERE degree>=60 AND degree<=70
简单数据查询
任务6-1
任务1-1 数据处理
(4)字符匹配符
在WHERE子句中使用字符匹配符LIKE或NOT LIKE可以比较表达式与字符串,确定特定字符串是否与指定模式相匹配,模式可以包含常规字符和通配符,从而实现对字符串的模糊查询。其语法格式如下。
WHERE 表达式 [NOT] LIKE '字符串' [ESCAPE '换码字符']
其中,[NOT]为可选项,表达式为任何有效的字符数据类型的表达式。
简单数据查询
任务6-1
任务1-1 数据处理
简单数据查询
任务6-1
任务1-1 数据处理
【例6.19】 查询所有姓李的学生的学号、姓名和性别。
SELECT
FROM student
WHERE sname LIKE '李%'
查询结果如6.8所示。
【例6.20】 查询生源地不是山东省的所有学生的信息。
SELECT *
FROM student
WHERE saddress NOT LIKE '%山东%'
【例6.21】 查询名字中第2个字为“小”字的学生的姓名和学号。
SELECT sname,sno
FROM student
WHERE sname LIKE '_小%'
查询结果如图6.9所示。
简单数据查询
任务6-1
任务1-1 数据处理
简单数据查询
任务6-1
任务1-1 数据处理
【例6.22】 查询学号为2005010102学生的姓名和性别。
SELECT sname,ssex
FROM student
WHERE sno LIKE '2005010102'
以上语句等价于:
SELECT sname,ssex
FROM student
WHERE sno= '2005010102'
提示 如果LIKE后面的匹配串中不含通配符,则可以用“=”(等于)运算符取代LIKE,用“<>”(不等于)运算符取代NOT LIKE。
简单数据查询
任务6-1
任务1-1 数据处理
【例6.23】 查询DB_Design课程的课程号。
SELECT cno
FROM course
WHERE cname LIKE 'DB\_Design' ESCAPE'\’
提示 其中,ESCAPE'\'短语表示“\”为换码字符,这样匹配串中紧跟在“\”后面的字符“_”不再具有通配符的含义,转义为普通的“_”字符。
简单数据查询
任务6-1
任务1-1 数据处理
5)列表运算符
在WHERE子句中,如果需要确定表达式的取值是否属于某一列表值之一,就可以使用关键字IN或NOT IN来限定查询条件。其语法格式如下。
WHERE 表达式 [NOT] IN 值列表
其中,NOT为可选项,当值不止一个时,需要将这些值用括号括起来,各列表值之间使用逗号(,)隔开。
简单数据查询
任务6-1
任务1-1 数据处理
【例6.24】 查询计算机文化基础、数据库技术与应用、电子信息技术3门课程的课程名及开课学期。
SELECT cname ,cterm
FROM course
WHERE cname IN('计算机文化基础', '数据库技术与应用', '电子信息技术')
以上语句等价于:
SELECTcname ,cterm
FROM course
WHERE cname='计算机文化基础' OR cname='数据库技术与应用'
OR cname='电子信息技术'
简单数据查询
任务6-1
任务1-1 数据处理
6)涉及空值的查询
要确定指定的表达式是否为NULL时,可以在WHERE子句中使用IS NULL关键字查询,反之要查询数据表的值不为NULL时,可以使用IS NOT NULL关键字。其基本语法格式如下。
WHERE 表达式IS [NOT] NULL
【例6.25】 某些学生选修课程后没有参加考试,所以有选修记录,但没有考试成绩。查询缺少成绩的学生的学号和相应的课程号。
SELECT sno,cno
FROM sc
WHERE degree IS NULL
简单数据查询
任务6-1
任务1-1 数据处理
(三)使用常用聚集函数查询
SQL Server的聚集函数是综合信息的统计函数,也称为聚合函数或集函数,包括计数、求最大值、求最小值、求平均值和求和等。聚集函数可作为列标识符出现在SELECT子句的目标列或HAVING子句的条件中。
SQL查询语句中如果有GROUP BY子句,则语句中的函数为分组统计函数;否则,语句中的函数为全部结果集的统计函数。
简单数据查询
任务6-1
任务1-1 数据处理
简单数据查询
任务6-1
任务1-1 数据处理
简单数据查询
任务6-1
任务1-1 数据处理
简单数据查询
任务6-1
任务1-1 数据处理
【例6.29】 计算002号课程的平均成绩。
SELECT AVG(degree)平均成绩
FROM sc
WHERE cno='002'
【例6.30】 查询002号课程的最高分和最低分。
SELECT MAX(degree) 最高分,MIN(degree) 最低分
FROM sc
WHERE cno='002'
简单数据查询
任务6-1
任务1-1 数据处理
【例6.31】 查询学号为2005010101的学生的总成绩及平均成绩。
SELECT SUM(degree) AS 总成绩,AVG(degree) AS 平均成绩
FROM sc
WHERE sno='2005010101'
【例6.32】 查询有考试成绩的学生人数。
SELECT COUNT(DISTINCTsno)人数
FROM sc
WHERE degreeIS NOT NULL
简单数据查询
任务6-1
任务1-1 数据处理
(四)分组筛选数据
使用GROUP BY子句可以将查询结果按照某一列或多列数据值进行分类,换句话说,就是对查询结果的信息进行归纳,以汇总相关数据。其语法格式如下。
[GROUP BY 列表达式]
[HAVING 条件表达式]
列表达式是指定列或列上的非聚合计算。GROUP BY子句把查询结果集中的各行按列表达式分组,在这些列表达式上,对应值都相同的记录分在一组。若无HAVING子句,则各组分别输出;若有HAVING子句,则只有符合HAVING条件的组才输出。
简单数据查询
任务6-1
任务1-1 数据处理
简单数据查询
任务6-1
任务1-1 数据处理
【例6.34】 统计学生表中男、女生人数。
SELECT ssex,COUNT(*)人数
FROM student
GROUP BY ssex
【例6.35】 统计各生源地男、女生人数。
SELECT saddress,ssex,COUNT(*)
FROM student
GROUP BY saddress,ssex
简单数据查询
任务6-1
任务1-1 数据处理
【例6.36】 统计各生源地女生人数。
SELECT saddress,COUNT(*)
FROM student
WHERE ssex='女'
GROUP BY saddress

SELECT saddress,COUNT(*)
FROM student
GROUP BY saddress,ssex
HAVING ssex='女'
简单数据查询
任务6-1
任务1-1 数据处理
【例6.37】 查询选修了两门及以上课程的学生的学号。
SELECT sno
FROM sc
GROUP BY sno
HAVING COUNT(*)>=2
【例6.38】 查询各年份出生的学生人数。
select year(sbirthday)AS 年份,count(*) AS 人数
from student
group by year(sbirthday)
简单数据查询
任务6-1
任务1-1 数据处理
(五)对查询结果进行排序
用户可以利用ORDER BY子句对查询结果按指定的列列表进行升序(ASC)或降序(DESC)排列,默认值为升序。其语法格式如下。
[ORDER BY <列或表达式1> [ASC|DESC][,<列或表达式2> [ASC|DESC][,…]
ORDER BY子句对查询结果排序后,SELECT语句的查询结果集中,各记录将按顺序输出。首先按第一列或表达式值排序;前一列或表达式值相同者,再按下一列或表达式值排序,以此类推。若某列或表达式后有DESC,则按该列或表达式值排序时为降序排列,否则,为升序排列。
简单数据查询
任务6-1
任务1-1 数据处理
简单数据查询
任务6-1
任务1-1 数据处理
提示 ① 对于空值,如按升序排列,则含空值的元组将最先显示;如按降序排列,则会空值的元组将最后显示。Null值被视为最低的可能值。
② 中英文字符按其ASCII码大小进行比较。
③ 数值型数据根据其数值大小进行比较。
④ 日期型数据按年、月、日的数值大小进行比较。
⑤ 逻辑型数据false小于true。
简单数据查询
任务6-1
任务1-1 数据处理
简单数据查询
任务6-1
任务1-1 数据处理

展开更多......

收起↑

资源预览