Java数据库之SQL server数据查询(一)

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
思考:以下的SQL语句: SELECT * FROM 数据表 WHERE 编号 LIKE '00[^8]%[A,C]%‘
可能会查询出的编号值为( )。
A、9890ACD B、007_AFF C、008&DCG D、KK8C
模糊查询—IS NULL
把某一字段中内容为空的记录查询出来
select * from Students where SEmail is null
聚合函数
MAX
select max(Score) from Score where CourseID=2
MIN
select min(Score) from Score where CourseID=2
注意:聚合函数不能直接用在WHERE后面作为查询条件,如下 的语句是错误的: select StudentID from Students where Score=max(Score)
问题
如果不是统计所有人所有课程的总成绩,而是想求 每一门课的平均绩或者每个人的所有课的总成绩 怎么办?
分组汇总
第一门课6个成绩取平均值
第二门课6个成绩取平均值
第三门课5个成绩取平均值
分组查询—GROUP BY
SELECT CourseID, AVG(Score) AS 课程平均成绩 FROM Score GROUP BY CourseID
….
001 002 003
张明全 李菲 于寄谦
湖南长沙 湖北宜昌 甘肃天水
S201 S202 S204
004
005 006
刘国正
周接轮 巩小妹
山东荷泽
台湾新竹 香港龙湾
S201
S204 S203
007
008 009 010
002 011 008 010
巩大妹
张明敏 矛十八 罗林光
香港龙湾
北京顺义 四川棉阳 陕西临潼
SELECT SCode + ‘:’ + SName AS ‘学员信息’ FROM Students 使用=来命名列 SELECT ‘学员信息’ = SCode+’:’+SName FROM Students
数据查询-TOP限制行数
限制固定行数
SELECT TOP 5 SCode,SName,SAddress FROM Students WHERE SGrade = ‘3’
聚合函数 聚合函数是SQL中很重要的一部分,聚合函数不 是对某个记录进行操作,而是对表中或查询到的 所有记录进行操作。 SQL支持的聚合函数如下表:
聚合函数 count(*) count() sum() avg() max() min() 含义 统计选择的记录的个数 统计特定列中值的个数 计算总和 计算平均值 求最大值 求最小值
把Students表中某些行的SEmail字段值删掉后,使用 IS NULL能查询出来这些数据行吗?
模糊查询—BETWEEN
把某一字段中内容在特定范围内的记录查询出来
SELECT StudentID, Score FROM SCore WHERE Score BETWEEN 60 AND 80
上题中如果不使用“BETWEEN”可以实现吗?
查询学生表中有多少个不同的年级: select distinct SGrade from Students
查询学生来自哪些不同的城市该如何实现?
模糊查询—LIKE
查询时,字段中的内容并不一定与查询内容完全匹配,只 要字段中含有这些内容 SELECT SName AS 姓名 FROM Students WHERE SName LIKE '张%'
模糊查询—IN
把某一字段中内容与所列出的查询内容列表匹配的记录查 询出来 SELECT SName AS 学员姓名,SAddress As 地址 FROM Students WHERE SAddress IN ('北京','广州 ','上海')
上题中如果不使用“IN”该如何实现?
小结
1.查询电子邮件中带有”w”的学生信息 2.查询地址是“武汉”或“上海”的学生信息 3.查询课程号为1的所有成绩信息 4.查询成绩表中分数最高的前三个分数
预习检查
1. ORDER BY语句有什么作用? 2. 常用的聚合函数有哪些?
本章任务
使用SQL语句对学生数据库进行各项查询操作
本章目标
理解查询的机制 使用SELECT语句进行基本查询 使用LIKE、BETWEEN、IN进行模糊查询 使用TOP语句限制返回行数 使用ORDER BY 对数据进行排序 使用DISTINCT消除重复项 使用聚合函数 使用GROUP BY进行分组查询
1、将ORDER BY后面的CourseID和Score的位置换 一下,查询结果显示的方式相同吗? 2、要按课程号升序、成绩降序排列该怎么实现?
数据查询-DISTINCT
DISTINCT 关键字可从 SELECT 语句的结果中除去重复 的行。如果没有指定 DISTINCT,那么将返回所有行,包 括重复的行。
问题:只显示课程平均成绩大于75分的数据怎么办?
分组查询—HAVING
SELECT CourseID, AVG(Score) AS 课程平均成绩 FROM Score GROUP BY CourseID HAVING AVG(Score)>=75
注意:在 GROUP BY 子句中,必须指定列的名称,而且必须是 出现在select之后除聚合函数外的所有列。 如下的语句是错误 的:
聚合函数
SUM
select sum(Score) as 总成绩 from Score where StudentID=10004
AVG
select avg(Score) as 平均成绩 from Score where CourseID=2
COUNT(*)
select count(*) as 人数 from students
WHERE
GROUP BY
HAVING
小结
1.统计来自上海的有多少个学生 2. 统计有多少学生目前没有Email 3.统计每门课程的最高分数 4.统计Students表中每个城市的学生人数
总结 要对结果进行排序需要使用什么关键字?
top语句有什么作用?
举例说明何时需要使用聚合函数,何时需要使用 GROUP BY。 WHERE和HAVING各自的作用是什么?
返回百分之多少行
SELECT TOP 20 PERCENT SCode,SName, SAddress FROM Students WHERE SGrade=‘3’
数据查询-排序
升序排列
按年级从小到大对学生进行排列: select * from Students order by SGrade
降序排列
SELECT StudentID,CourseID, AVG(Score) AS 课程平均成绩 FROM Score GROUP BY CourseID
分组查询—对比
WHERE子句从数据源中去掉不符合其搜索条件的数据
GROUP BY子句搜集数据行到各个组中,统计函数为 各个组计算统计值
HAVING子句去掉不符合其组搜索条件的各组数据行
SELECT SCode,SName,SAddress FROM Students WHERE SAddress = ‘襄樊'
SELECT SCode,SName,SAddress FROM Students WHERE SAddress <> ‘襄樊'
数据查询-列名
使用AS来命名列 SELECT SCode AS 学员编号,SName AS学员姓名,SAddress AS 学 员地址 FROM Students WHERE SAddress <> ‘襄樊’
表名 FFra Baidu bibliotekOM Students
查询条件 WHERE SGrade = ‘5’
排序条件 ORDER BY SCode
SELECT FROM WHERE ORDER BY
SCode,SName,SAddress Students SGrade = ‘5’ SCode
数据查询-基础
查询全部的行和列
SELECT * FROM Students 查询部分行
S203
S202 S204
S202 S202 S201 李菲司马坡 湖北宜昌 … 新疆喀什
张明敏 罗林光 北京顺义 陕西临潼 S202 S202
查询的基本语法
SELECT <列名> FROM <表名> [WHERE <查询条件表达式>] [ORDER BY <排序的列名>[ASC或DESC]]
列名称 SELECT SCode, SName, SAddress
按年级从大到小对学生进行排列: select * from Students order by SGrade desc
数据查询-排序
按多列排序 SELECT StudentID As 学员编号, CourseID as 课程编号,Score As 成绩 FROM Score ORDER BY CourseID,Score
第四章
数据查询(一)
回顾
以下代码有什么错误?
1、INSERT INTO Students (SName,SAddress,SGrade,SEmail) VALUES (‘张无忌’,‘上海’,6) 2、INSERT INTO Students (SCode, SName,SAddress,SGrade,SEmail) VALUES (100,‘张三丰’,‘杭州',6,'ZSF@Sohu.com') 3、 INSERT INTO StudentsInfo ('姓名', '地址', '电子邮件') SELECT SName,SAddress,SEmail FROM Students 4、Update Students Set SName = ‘胡斐’ Set SSex = ‘女‘ Where SName = ‘胡非‘ 5、Delete SName from Students
什么是查询
SELECT * FROM SALES
查询请求
查询结果集 客户程序
A B C D E F G
SQL SERVER
查询产生一个虚拟表,看到的是表形式显示的结果,但结果并不真正存储 ,每次执行查询只是现从数据表中提取数据,并按照表的形式显示出来
如何查询
学员编号 学员姓名 地址 * FROM StudentsH 所在班级 SELECT … WHERE 所在班级 = ‘S202’
相关文档
最新文档