SQL从入门到放弃系列——视图[十]

2019年7月8日08:38:06 发表评论 19
摘要

什么是视图?视图的增删改?
视图和临时表的区别?各自优缺点?

视图是一张虚拟表,相当于一张或多张表的结果集,视图并不在数据库中以存储的数据值集形式存在。行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成。可以简化SQL、重用。

创建视图

CREATE VIEW view_name AS
SELECT column1, column2
FROM table
WHERE condition

嵌套视图

创建视图后还可以在他们的基础上继续创建视图。

修改视图

ALTER VIEW view_name AS
SELECT column1, column2
FROM table
WHERE condition

和创建视图一样,只是对原有视图的更新。比如在原有基础上新增一个player_name字段:

ALTER VIEW player_above_avg_height AS
SELECT player_id, player_name, height
FROM player
WHERE height > (SELECT AVG(height) from player)

删除视图

DROP VIEW view_name

利用视图对数据进行格式化(组装数据)

CREATE VIEW player_team AS 
SELECT CONCAT(player_name, '(' , team.team_name , ')') AS player_team FROM player JOIN team WHERE player.team_id = team.team_id

视图和临时表的区别

视图只是一条预编译的SQL语句,并不保存实际数据;  临时表是保存在tempdb中的实际的表。
(物理空间的分配不一样,视图不分配空间,临时表会分配空间 )。

视图优缺点

优点

1.根据不同用户定制不同数据

2.简化数据库操作,提高复用性

3.安全性,视图仅仅是查询,视图的更新和删除并不会影响基表数据

4.合并分离的数据,更直观

缺点

1.性能差

视图的行列数据是动态生成的,必须把视图查询转化为对基表的查询,性能受影响。

2.修改限制

修改视图信息时,如果视图比较复杂,修改受限。

临时表优缺点

没有对比单说优缺点就是耍流氓,临时表通常和表变量比较。

临时表 与 表变量

1.存储位置:临时表是利用了硬盘(tempdb数据库) ,表名变量是占用内存,因此小数据量当然是内存中的表变量更快。当大数据量时,就不能用表变量了,太耗内存了。大数据量时适合用临时表。

2.性能:不能一概而论,表变量存储数据有个性能临界点,在这个临界点之内,表变量比临时表快,表变量是存储在内存中的。

3.索引:表变量不支持索引和统计数据,但可以有主键;临时表则可以支持索引和统计数据。

我们对于较小的临时计算用数据集考虑使用表变量。如果数据集比较大,如果在代码中用于临时计算,同时这种临时使用永远都是简单的全数据集扫描而不需要考虑什么优化,比如说没有分组或分组很少的聚合(比如说COUNT、SUM、AVERAGE、MAX等),也可以考虑使用表变量。使用表变量另外一个考虑因素是应用环境的内存压力,如果代码的运行实例很多,就要特别注意内存变量对内存的消耗。一般对于大的数据集我们最好使用临时表,同时创建索引。

链接:

 

  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的微信公众号
  • 我的微信公众号扫一扫
  • weinxin
  • A+
所属分类:SQL

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: