SQL视图

什么是视图?如何创建、更新和删除视图?

视图是一张虚拟表,帮我们封装了底层与数据表的接口。它相当于是一张表或多张表的数据结果集。视图的这一特点,可以帮我们简化复杂的 SQL 查询,比如在编写视图后,我们就可以直接重用它,而不需要考虑视图中包含的基础查询的细节。

创建视图:

CREATE VIEW view_name AS

SELECT column1,column2

FROM table

WHERE condition;

视图创建之后,可以直接使用。

 

嵌套视图:

当我们创建好一张视图之后,还可以在它的基础上继续创建视图。

CREATE VIEW view_new AS 

SELECT player_id,height

FROM player

WHERE height > (SELECT AVG(height) FROM view_old );

 

修改视图:ALTER VIEW

ALTER VIEW view_name AS

SELECT column1, column2

FROM table

WHERE condition;

修改的语法和创建视图一样,只是对原有视图的更新。

 

删除视图:

DROP VIEW view_name;

 

如何使用视图简化 SQL 操作

利用视图完成复杂的连接,以后我们进行查询的时候,可以直接通过视图查询。

利用视图对数据进行格式化:

当需要输出某种格式的内容时,可以用视图完成数据格式化的操作。

CREATE VIEW view_name AS

SELECT CONCAT(player_name, '(' , team.team_name, ')') AS player_team FROM player JOIN team ON player.team_id = team.team_id;

//CONCAT函数可以将player_name 字段和 team_name 字段以及‘(’, ')'进行拼接。

使用视图计算字段:

eg:统计每位球员在每场比赛中的二分球、三分球和罚球的得分。

CREATE VIEW  view_name AS

SELECT game_id,player_id, (shoot_hits-shoot_3_hits)*2 AS shoot_2_points, shoot_3_hits*3 AS shoot_3_points, shoot_p_hits AS shoot_p_points, score FROM player_score;

 

视图的优缺点:

安全性:虚拟表是基于底层数据表的,我们在使用视图时,一般不会轻易通过视图对底层数据进行修改,即使是使用单表的视图,也会受到限制,比如计算字段,类型转换等是无法通过视图来对底层数据进行修改的,这也在一定程度上保证了数据表的数据安全性。同时,我们还可以针对不同用户开放不同的数据查询权限,比如人员薪酬是个敏感的字段,那么只给某个级别以上的人员开放,其他人的查询视图中则不提供这个字段。

简单清晰:视图是对 SQL 查询的封装,它可以将原本复杂的 SQL 查询简化,在编写好查询之后,我们就可以直接重用它而不必要知道基本的查询细节。同时我们还可以在视图之上再嵌套视图。这样就好比我们在进行模块化编程一样,不仅结构清晰,还提升了代码的复用率。

 

性能差:sql server必须把视图查询转化成对基本表的查询,如果这个视图是由一个复杂的多表查询所定义,那么,即使是视图的一个简单查询,sql server也要把它变成一个复杂的结合体,需要花费一定的时间。 

修改限制:当用户试图修改试图的某些信息时,数据库必须把它转化为对基本表的某些信息的修改,对于简单的试图来说,这是很方便的,但是,对于比较复杂的试图,可能是不可修改的。

 

视图和临时表的区别

视图是虚拟表,临时表是真实存在的数据表,不过它不用于长期存放数据,只为当前连接存在,关闭连接后,临时表就会自动释放。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值