数据库查询与更新技术

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

如何过滤掉重复的院系名字呢?
第 7 章 数据库查询与更新
使用DISTINCT关键字
前面介绍的最基本的查询方式会返回从表格中搜索 到的所有行的数据,而不管这些数据是否重复,这常常 不是用户所希望看到的。 使用DISTINCT关键字就能够从返回的结果数据集合 中删除重复的行,使返回的结果更简洁。
在使用DISTINCT关键字后,如果表中有多个为 NULL的数据,服务器会把这些数据视为相等。
课程回顾
Transact-SQL语言由几种语言组成?每种语 言的动词有哪些? Transact-SQL语言由数据定义语言(DDL)、 数据操纵语言(DML)、数据控制语言(DCL)组成。 数据定义语言包含动词CREATE、 ALTER、 DROP; 数据操纵语言包含动词SELECT、INSERT、 UPDATE、DELETE; 数据控制语言包含动词GRANT、REVOKE、 DENY。
表达式 [NOT] IN (表达式1 , 表达式2 [,…表达式
n])
第 7 章 数据库查询与更新 Nhomakorabea查询法学院、文学院和经济学院所 有学生的信息
SELECT * FROM Stu WHERE Sd IN (‘ 法 学 院 ’ ,‘ 文 学 院’,‘经济学院’)
第 7 章 数据库查询与更新
使用TOP关键字
【例】从Student数据库的stu表中返回前20名学 生的信息。 Select top 20 * From stu 【例】从Student数据库的stu表中返回前20%学 生的信息。 Select top 20 percent * From stu
第 7 章 数据库查询与更新
第 7 章 数据库查询与更新
查询信息科学与技术学院所有学生 的平均年龄
Select Avg(Sa)
From stu
Where Sd=‘信息科学与技术学院’
第 7 章 数据库查询与更新
查询“20070002”同学的所有科目的 总成绩
Select Sum(Grade)
From SC
Where Sno=‘20070002’
第 7 章 数据库查询与更新
查询法学院、文学院和经济学院所 有学生的信息
SELECT * FROM Stu WHERE Sd=‘法学院’ OR Sd=‘文学 院’ OR Sd=‘经济学院’ 还可以用什么方法实现?
第 7 章 数据库查询与更新
使用IN关键字
同BETWEEN关键字一样,IN的引入也是为了更 方便地限制检索数据的范围,灵活使用IN关键字,可 以用简洁的语句实现结构复杂的查询。 语法格式为:
第 7 章 数据库查询与更新
如何查询信息科学与技术学院所
有学生的平均年龄
第 7 章 数据库查询与更新
函数的使用
为了有效处理用户通过使用SQL查询得到的数据集 合,SQL Server提供了一系列统计函数。
这些函数把存储在数据库中的数据描述为一个整体 而不是一行行孤立的记录,通过使用这些函数可以实现 数据集合的汇总或是求平均值等各种运算。
无数据源检索:使用SELECT语句来检索不在 表中的数据。例如,可以使用SELECT语句检索常 量、全局变量或已经赋值的变量。无数据源检索实 质上就是在客户机屏幕上显示出变量或常量的值。
第 7 章 数据库查询与更新
使用SELECT语句进行无数据源检索
使用SELECT语句查看常量 select ‘sql server 6.5’ select ‘sql server 7.0’ 使用SELECT语句查看全局变量 select @@version select @@language
第 7 章 数据库查询与更新
查询周杰伦同学的所有信息
SELECT * FROM Stu WHERE Sn=‘周杰伦’
第 7 章 数据库查询与更新
查询信息科学与技术学院20岁以上 男同学的姓名
SELECT Sn FROM Stu WHERE Sd=‘信息科学与技术学院’ AND Sa>20 AND Ssex=‘男’
查询在校的20岁—22岁的女同学的 学号和姓名
SELECT Sno, Sn FROM Stu WHERE Ssex=‘女’ AND AND Sa<=22 可以用其他方法实现吗?
Sa>=20
第 7 章 数据库查询与更新
使用BETWEEN关键字
使用BETWEEN关键字可以更方便地限制查询数据 的范围。 语法格式为: 表达式 [NOT] BETWEEN 表达式1 AND 表达式2 使用BETWEEN表达式进行查询的效果完全可以用 含有>=和<=的逻辑表达式来代替,使用NOT BETWEEN 进行查询的效果完全可以用含有>和<的逻 辑表达式来代替。
数据库查询与更新selectsdssexcountfromstugroupsdssex数据库查询与更新查询所有优秀成绩85100对应的学号和课程号查询在校学生的年龄分布即每个年龄各有多少人查询每个学生选修课程的平均成绩数据库查询与更新查询所有优秀成绩85100对应的学号和课程号selectgradesnocnofromscwheregrade85grade100查询在校学生的年龄分布即每个年龄各有多少人selectsacountfromstugroup数据库查询与更新查询每个学生选修课程的平均成绩selectsnoavggradefromscgroup数据库查询与更新select语句的基本结构distinct删除重复行where条件格式统计函数group数据库查询与更新selectfromstu结果是什么样子呢
第 7 章 数据库查询与更新
查询每个学生选修课程的平均成绩
Select Sno, Avg(Grade)
From SC
Group By Sno
第 7 章 数据库查询与更新
课程总结
Select 语句的基本结构
Distinct 删除重复行
Where 条件格式 统计函数 Group By 分组
第 7 章 数据库查询与更新
第 7 章 数据库查询与更新
函数名


常 用 统 计 函 数
Sum( ) Avg( ) Min( ) Max( ) Count( ) Count(*)
返回一个数字列或计算列的总和 对一个数字列计算平均值 返回一个数字列或数字表达式的最 小值 返回一个数字列或数字表达式的最 大值 返回满足SELECT语句中指定条件 的记录数 返回找到的行数
课程回顾
数据库“学生管理”的结构如何?
数据库名称Student; 数据表Stu(Sno,Sn,Sa,Ssex,Sd), Sno为主键; 数据表Course(Cno,Cn,Ccredit), Cno为主键; 数据表SC(Sno,Cno,Grade),Sno与 Cno的组合为主键。
Stu表内容
Course表内容
第 7 章 数据库查询与更新
可以做哪些查询
信息科学与技术学院所有学生的学号和姓名?
信息科学与技术学院男女学生的人数? 周杰伦同学选修了哪些课程?分数多少? 《SQL Server数据库系统》课程学生的平均分?
第 7 章 数据库查询与更新
SELECT语句的使用方式
有数据源检索:使用SELECT语句来检索表中 的数据。
第 7 章 数据库查询与更新
下面的SELECT语句正确吗
Select Sno, Cno, Avg(Grade)
From SC
Group By Cno
不正确。因为列Sno既不在集合函数中,也不在 Group By子句中。
第 7 章 数据库查询与更新
查询全校各学院男女学生的人数
Select Sd, Ssex, Count(*) From stu Group By Sd, Ssex
第 7 章 数据库查询与更新
使用SELECT语句进行有数据源检索
语法:SELECT 列名1 [,列名2,…列名n] FROM 表名 例:查询在校的所有学生的学号和姓名。 Select Sno , Sn From Stu
第 7 章 数据库查询与更新
查询在校学生的所有信息
Select Sno, Sn, Sa, Ssex, Sd From stu 语法格式:SELECT *
SC表内容
第七章 数据库查询与更新
Demanding and Updating databases
Select Insert Update Delete 查询数据 添加数据 更新数据 删除数据
第 7 章 数据库查询与更新
数据检索
数据检索是数据库系统最重要也是最终的目的。无论是 创建数据库,还是创建数据表,亦或是创建视图等,最终的目 的都是为了利用数据,而利用数据的前提是需要从数据库中检 索出所需要的数据。 SELECT语句具有强大的查询功能,是一种使用频率最 高的语句。可以说SELECT是SQL语言的灵魂。 SELECT语句的作用是让数据库服务器根据客户端的要 求搜寻出用户所需要的信息资料,并按用户规定的格式进行整 理后返回给客户端。
第 7 章 数据库查询与更新
查询信息科学与技术学院男女 同学的平均年龄
Select Ssex, Avg(Sa) From stu Where Sd=‘信息科学与技术学院’
Group By Ssex
第 7 章 数据库查询与更新
查询成绩表里每门课程的课程号和 平均成绩
Select Cno, Avg(Grade) From SC Group By Cno
查询学校前20名学生的信息
Select *
From stu
结果是什么样子呢?
显示出所有学生的信息。
如何只显示前20条记录呢?
第 7 章 数据库查询与更新
使用TOP关键字
TOP关键字让用户指定返回前面一定数量的数据。当 查询到的数据量非常庞大时,但没有必要对所有数据进行 浏览时,使用TOP关键字查询可以减少查询花费的时间。 语法格式如下: SELECT [TOP n | TOP n PERCENT] 列名1[,列名 2,…列名n] FROM 表名 TOP n表示返回最前面的n行,n表示返回的行数。 TOP n PERCENT表示返回前面的n%行。
第 7 章 数据库查询与更新
查询一共有多少位学生选修了课程
Select Count(Sno) From SC
查询结果如何?
正确的SQL语句如何?
第 7 章 数据库查询与更新
查询一共有多少位学生选修了课程
Select Count(distinct Sno)
From SC
在T-SQL中,允许与统计函数如Count( ), Sum( )和Avg( )一起使用DISTINCT关键字来处理 列或表达式中不同的值。
FROM 表名
用“*”表示表中所有的列。 服务器会按用户创建表格时声明列的顺序来显示 所有的列,例如: Select * From stu
第 7 章 数据库查询与更新
查询学校有哪些院系
Select Sd From stu
结果是什么 样子呢?
由于stu表中存在多个院系名字, 所以会有重复的院系名字出现。
第 7 章 数据库查询与更新
请完成以下查询
查询所有优秀成绩(85—100)对应的学号和 课程号 查询在校学生的年龄分布,即每个年龄各有 多少人 查询每个学生选修课程的平均成绩
第 7 章 数据库查询与更新
查询所有优秀成绩(85—100)对应的学号和 课程号 Select Grade, Sno, Cno From SC Where Grade>=85 and Grade<=100 查询在校学生的年龄分布,即每个年龄各有 多少人 Select Sa, Count(*) From stu Group By Sa
例:Select distinct Sd From stu
第 7 章 数据库查询与更新
如何查询周杰伦同学的所有信息
查询条件:姓名=‘周杰伦’
第 7 章 数据库查询与更新
WHERE子句
功能:从表格的数据集中过滤出符合条件的行。 语法格式如下: SELECT 列名1[,列名2,…列名n] FROM 表名 WHERE 条件 WHERE子句可以限制查询的范围,提高查询效率。 在使用时,WHERE子句必须紧跟在FROM后面。SQL Server 对WHERE子句中查询条件的数目没有限制。
如何查询信息科学与技术学院 男女同学的平均年龄
第 7 章 数据库查询与更新
男女同学混坐
第 7 章 数据库查询与更新
男女同学分开坐
第 7 章 数据库查询与更新
分 组
在大多数情况下,使用统计函数返回的是所有行数 据的统计结果。如果需要按某一列数据的值进行分类, 在分类的基础上再进行查询,就要使用GROUP BY子句 了。 格式:GROUP BY [ALL] group_by_expression [,…n] ALL 表 示 包 括 所 有 的 组 和 结 果 , 即 使 是 不 符 合 WHERE子句指定条件的分组也将列出,但并不对这些分 组进行统计。 group_by_expression是进行分组的表达式。
第 7 章 数据库查询与更新
查询在校的20岁—22岁的女同学的学号和 姓名若使用BETWEEN,查询语句如下:
SELECT Sno, Sn FROM Stu WHERE Sa between 20 and 22 AND Ssex=‘女’ 使用BETWEEN限制查询数据范围时同时包 括了边界值,而使用NOT BETWEEN进行查询时 没有包括边界值。
相关文档
最新文档