数据库学习-第三章(后半部分)

接着上一个博客的第三章(SQL语言)。

(5)聚集函数(在分组查询中会使用到,在这里做个介绍)

         count(*);表示统计元组个数

         count([distinct|all]<列名>);表示统计一列中值的个数

         sum([distinct|all]<列名>);表示计算一列值的总和

         avg([distinct|all<列名>);计算一列值的平均值

         还有一部分聚集函数,我只介绍了我常用的几个函数,要是有需求的话,可以上网百度查询。

(6)分组查询(group by)(查询课程学分值最大、最小、平均值的课程编号)(where子句不可以出现在聚合函数中)

在这个表中,因为每一行课程编号对应的课程的学分都一样,所以导出的最大,最小,平均值都一样。当你使用成绩表时,数据会有所不同。这里我就不一一列举了。

select 课程编号,max(学分) 最大值,min(学分) 最小值,avg(学分) 平均值
from 课表
group by 课程编号

 在分组查询中,若要实现按照条件过滤分组时,需要使用Having子句来实现。比如在上面的表中实现输出平均值大于3的课程,就直接在group by 子句后加上having avg(学分)>3就行了。结果如下图所示:

注意:Having子句和where子句作用其实差不多,都是用来筛选条件进行查询表信息的。但是where子句不能和聚集函数一起使用,Having子句必须跟在group by 子句之后。

7、权限管理

授予权限(使用grant  on语句)。将位于学生信息表上的查询,修改学生名字信息权限授予胡晶

grant select,update(姓名)
on 学生信息表
to 胡晶

收回权限(使用revoke  on语句)。将位于学生信息表上的修改学生名字信息权限从胡晶处收回

revoke update(姓名)
on 学生信息表
to 胡晶

8、多表查询(两个表以上的连接)

9、集合查询(并(UNION)、交(INTERSECT)、差(EXCEPT))

例如:将满足专业是'生物2005'的学生信息和性别为'女'的学生信息查询。

select*from 学生信息表
where 专业班级 = '生物2005'
union
select*from 学生信息表
where 性别 = '女'

结果如下图:

 对于交、差操作读者可自行练习。

10、表的修改(使用update语句)

基本格式:update 表名 set 字段1 = 值1,字段2 = 值2,...... where 条件;

最后,对于视图做个介绍(视图主要是为了能够在大量的数据中更醒目地查询到你想要的信息,但是要注意的是:视图本身是不存在的,只是为了简化操作而提出来的)

视图:被称为虚表,是一组数据的逻辑表示,其本质是对应一条select语句,结果集被赋予另一个名字。视图本身并不包含任何数据,他只包含映射到基表的一个查询语句(使用视图的目的主要是为了方便和简化数据操作)

比如:创建一个软件2005学生的视图

--创建一个软件2005学生的视图
use 学生管理数据库
go
create view 软件2005的视图
as
select 姓名,专业班级,出生日期,联系电话 from 学生信息表 where 专业班级='软件2005'
Go

创建视图后,截图:

需要注意的是,对于视图进行更新时,因为视图本身是并不存在的,所以最终要反映到对基本表的操作(更新视图时,字表也要进行对应的更新操作)。

猜你喜欢

转载自blog.csdn.net/m0_57714421/article/details/127540568