sql视图 权限_SQL学习4:四,视图,函数和子查询

4.1SQL视图简介和使用

4ecd909458936bce6794edf674a89f18.png

视图是另一种查看数据的入口,常规视图本身并不存储实际的数据,而仅仅是由SQL语句组成的查询定义的虚拟表 。

从数据库系统内部来看,视图是由一张或多张表中的数据组成的,从数据库系统外部来看,视图就如同一张表一样,对表能够进行的一般操作都可以应用于视图(除插入数据)。

  • 视图隐藏了底层的表结构,简化了数据访问操作,查看者不再需要知道底层表的结构及其之间的关系。
  • 视图提供了一个统一访问数据的接口。(即可以允许用户通过视图访问数据的安全机制,而不授予用户直接访问底层表的权限)
  • 从而加强了安全性,使用户只能看到视图所显示的数据。
  • 视图还可以被嵌套,一个视图中可以嵌套另一个视图。
/*视图创建*/
create view 视图名称(<视图列名1><视图列名2>)
as
<select 查询语句>  

4.2子查询及标量子查询,关联子查询

子查询:在SQL语句中直接查询视图中的表

—— in子查询:对比
—— any子查询:与some一样,对比另一组的任意一个(如:找出A组中的比B组中任意一个高的数据)
—— all子查询:对比全部(如:找出A组中的要比B组中的全部都高的数据)
【注意事项】
不能针对子查询使用运算符
子查询之间不能 互相嵌套
子查询后不能增加子查询别名
在SQL运行顺序中,先运行一级语句中的子查询,后运行二级语句中的子查询

标量子查询:查询单一的值(in,any,all,between)

关联子查询:关联“底层表”与“视图表”中的数据

4.2.1子查询:找出每个课程里,成绩最低的学号

/*查询思路:
SELECT查询结果:学号,成绩
FROM查询地址,从score表中查找数据
WHERE筛选条件:用子查询找*/
select 学号,成绩
from score
where 成绩 in(SELECT MIN(成绩)
FROM score
GROUP BY 课程号);

7580c155a91ead2f5175503420d99dbd.png

4.2.2标量子查询:查找大于平均成绩学生的学号和成绩

/*查询思路:
SELECT查询结果:学号,成绩
FROM查询地址,从score表中查找数据
WHERE筛选条件:成绩>平均成绩(用子查询计算平均成绩)*/
select 学号,成绩
from score
where 成绩>(select avg(成绩)
from score);

5911efea84b2fbdd95bc41a8633c2c7a.png

4.2.3关联子查询:找出每个课程中大于对应课程平均成绩的学生

/*查询思路:
SELECT查询结果:课程号,学号,成绩
FROM查询地址,从score表中查找数据,以S1作为别名
WHERE筛选条件:成绩>平均成绩(用子查询计算平均成绩,并以S2作为别名,关联S1)*/
select 课程号,学号,成绩
from score as S1
where 成绩>(select avg(成绩)
from score as S2
WHERE S1.课程号=S2.课程号
GROUP BY 课程号);

d1865f3ba7340e2602d193619c910561.png

4.3SQL常用函数整理:

c830474966ae990851e86596e715f5a3.png

sqlzoo练习:

77e8d7fda4c43047ca83b9b0198462e0.png

e71e343f9336f6d78e8327f61d3bf8c8.png

20adf90fef8e9b00d416953dae660e2a.png

a8c1be71b92c61931eeb19437dca0a44.png

722c3c1d0c387c8203ab86a18eb5024b.png

b696524d42e6219c8a09f1656985a669.png

2a9d389422720af98f36ec93151a0e66.png

92f1cccce1aeb808e63ac3b8554b7f1e.png

aab5764e98946fcd141e7614dd55a88d.png

a542213c7f29f5cb34f9abd87e82ce9b.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值