点击关注上方“SQL数据库开发”,
设为“置顶或星标****”,第一时间送达干货
视图的定义
视图是可视化的表。
本章讲解如何创建、更新和删除视图。
为什么使用视图
视图在数据库中应用的比较频繁,主要基于以下几点:
重用SQL语句。
化复杂的SQL操作。在编写查询后,可以方便地重用它而不必知道它的基本查询细节。
用表的组成部分而不是整个表。
护数据。可以给用户授予表的特定部分的访问权限而不是整个表的访问权限。
改数据格式和表示。视图可返回与底层表的表示和格式不同的数据。
CREATE VIEW 语句
在 SQL 中,视图是基于 SQL 语句的结果集的可视化表。
视图包含行和列,就像真正的表一样。视图中的字段是一个或多个数据库中真实表中的字段。
您可以添加 SQL 函数,在哪里添加,并将语句连接到视图,或者您可以呈现数据,就像数据来自单个表一样。
CREATE VIEW 语法
CREATE VIEW view_name AS
SELECT column_name(s)
FROM table_name
WHERE condition
注释:视图总是显示最新数据!每当用户查询视图时,数据库引擎就使用视图的 SQL 语句重新构建数据。
CREATE VIEW 实例
我们以表Customers为例
"Customer_GD"(广东客户列表)视图从"Customers"表中列出了所有广东省的客户。这个视图使用下面的 SQL 创建:
CREATE VIEW Customer_GD ASSELECT *FROM CustomersWHERE 省份='广东省'
我们可以像这样查询上面这个视图:
SELECT * FROM Customer_GD
查看一下视图中的结果:
下面的我们以"Products"表为示例
我们选取 "Products" 表中所有价格高于平均价格的产品:
CREATE VIEW [Products_Above_Average_Price] ASSELECT 名称,价格FROM ProductsWHERE 价格>(SELECT AVG(价格) FROM Products)
我们可以像这样查询上面这个视图:
SELECT * FROM [Products_Above_Average_Price]
结果如下:
我们也可以向视图添加条件。现在,我们仅仅需要查看 "大米" 类的价格:
SELECT * FROM [Products_Above_Average_Price]WHERE 名称='大米'
这样就只显示大米的价格了
更新视图
您可以使用下面的语法来更新视图:
CREATE OR REPLACE VIEW 语法
ALTER VIEW view_name AS
SELECT column_name(s)
FROM table_name
WHERE condition
现在,我们希望向 "Products_Above_Average_Price" 视图添加 "规格" 列。我们将通过下列 SQL 更新视图:
ALTER VIEW [Products_Above_Average_Price] ASSELECT 名称,价格,规格FROM ProductsWHERE 价格>(SELECT AVG(价格) FROM Products)
我们重新查询该视图:
SELECT * FROM [Products_Above_Average_Price]
结果如下:
删除视图
可以通过 DROP VIEW 命令来删除视图。
DROP VIEW 语法
DROP VIEW view_name
例如我们要删除刚才新建的视图"Products_Above_Average_Price"
DROP VIEW [Products_Above_Average_Price]
重新查询视图后就会显示该视图无效
证明视图已经不存在了。
视图的规则和限制
视图的使用也有一些规则和限制,主要表现在:
与表一样,视图必须唯一命名(不能给视图取与别的视图或表相同的名字)。
对于可以创建的视图数目没有限制。
为了创建视图,必须具有足够的访问权限。这些限制通常由数据库管理人员授予。
视图可以嵌套,即可以利用从其他视图中检索数据的查询来构造一个视图。
ORDER BY可以用在视图中,但如果从该视图检索数据SELECT中也含有ORDER BY,那么该视图中的ORDER BY将被覆盖。
视图不能索引,也不能有关联的触发器或默认值。
视图可以和表一起使用。例如,编写一条联结表和视图的SELECT
语句。
我是岳哥,最后给大家分享我写的SQL两件套:《SQL基础知识第二版》和《SQL高级知识第二版》的PDF电子版。里面有各个语法的解释、大量的实例讲解和批注等等,非常通俗易懂,方便大家跟着一起来实操。 有需要的读者可以下载学习,在下面的公众号「数据前线」(非本号)后台回复关键字:SQL,就行 数据前线 ——End—— 后台回复关键字:1024,获取一份精心整理的技术干货 后台回复关键字:进群,带你进入高手如云的交流群。 推荐阅读 我的电脑不联网,很安全,黑客:你还有风扇呢。。。 CentOS 已死,“免费”的RHEL没了 一套简单实用的SQL脚本,总有你需要的 不懂就问:为什么SELECT * 会导致查询效率低? SQL 语法速成手册
本文分享自微信公众号 - SQL数据库开发(sql_road)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。