SQL基础系列(六)——视图

 

目录

1.视图是什么 

2.为什么使用视图

3.视图的用法

3.1创建视图

3.2使用视图

3.3删除视图

3.4视图数据增和改


1.视图是什么 

从SQL的角度来看,视图就是一张表,存在表名、字段列。在SQL语句中,也并不区分实体表和视图。

视图和实体表的区别就在与:是否保存了实际数据。

视图本身是一个不含任何数据的虚拟表,数据库中存放视图的定义(保存好的SELECT语句),而不存放视图对应的数据。

实体表中保存实际数据,使用实体表创建视图后,实体表中的数据发生变化,视图查询出的数据就会发生变化。

从视图中读取数据时,视图会在内部执行对应的SELECT语句,并创建出一张临时表。

2.为什么使用视图

视图保存的是SELECT语句,那么为什么需要使用视图,而非在查询的时候直接写SELECT语句?

这就涉及视图的优点:简化用户操作

将频繁使用的查询语句保存成视图,这样就不用每次都重新写。在创建好视图后,可以将视图和其他实体表一样,在SELECT语句中进行调用。

对于常用的联表查询,可将联表的结果创建为视图,后续使用联表结果时,不用重新写select语句,直接调用视图即可。

3.视图的用法

3.1创建视图

CREATE VIEW v_grade

AS

SELECT id,avg(mark) FROM grade

WHERE sex='男'

GROUP BY id

HAVING avg(mark)>80;

创建视图的语句,就是在完整的SELECT语句前,增加“CREATE VIEW 视图名 AS”。

视图是保存的SELECT语句,在SELECT语句中,可以使用WHERE\GROUP BY\HAVING子句,但是不可使用ORDER BY。

上例中,新创建的视图,字段名沿用原表字段名。

需要设置视图的字段名时,可参考如下写法:“CREATE VIEW 视图名 (列名,列名) AS”

CREATE VIEW v_grade (v_id,v_avg)

AS

SELECT id,avg(mark) FROM grade

WHERE sex='男'

GROUP BY id

HAVING avg(mark)>80;

3.2使用视图

对于已经创建的视图v_grade(v_id,v_avg),可以在其他查询语句中使用。

SELECT v_id,v_avg  FROM v_grade

WHERE v_id='001';

使用视图时,同其他实体表的用法一致。只是实体表中是真实的数据,视图代表SELECT查询语句。

使用视图的查询语句,执行时至少有两个步骤:

(1)执行定义视图的SELECT语句(例如本文中创建视图的语句)

(2)根据得到的结果,再执行使用视图的SELECT语句(例如本文中使用视图的语句)

3.3删除视图

DROP VIEW v_grade;

3.4视图数据增和改

视图也可以使用INSERT,UPDATE进行数据的增和改,但是需要符合以下条件:

(1)视图FROM子句只有一张表;

(2)未使用GROUP BY子句,未使用HAVING子句

在对视图新增和修改数据后,视图对应表中的数据同步修改。

如视图在一个实体表的基础上筛选而得,那么给视图增加一条数据的语句执行后,实体表也会同步增加一条数据。以此保证数据的一致性。

  • 16
    点赞
  • 89
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在编写SQL视图语句时,缩进是一种良好的编码习惯,可以提高代码的可读性和可维护性。可以按照以下几点进行缩进: 1. 在SELECT语句中,每个字段应该单独一行,并且缩进一个制表符或一定数量的空格。例如: SELECT field1, field2, field3 FROM table_name 2. 在FROM子句中,每个表名应该单独一行,并且缩进一个制表符或一定数量的空格。例如: SELECT field1, field2, field3 FROM table1 INNER JOIN table2 ON table1.id = table2.id 3. 在WHERE子句中,每个条件应该单独一行,并且缩进一个制表符或一定数量的空格。例如: SELECT field1, field2, field3 FROM table_name WHERE condition1 AND condition2 4. 在GROUP BY和ORDER BY子句中,每个字段应该单独一行,并且缩进一个制表符或一定数量的空格。例如: SELECT field1, field2, field3 FROM table_name GROUP BY field1, field2 ORDER BY field1 通过合理的缩进,可以使SQL视图语句更易于阅读和理解。同时,建议在编写SQL语句时遵循一致的缩进风格,以提高代码的一致性。 #### 引用[.reference_title] - *1* *2* *3* [SQL语句的优化方法](https://blog.csdn.net/Boy_Martin/article/details/126866798)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值