点击关注上方“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
语句。
1 我是岳哥,最后给大家分享我写的SQL两件套:《SQL基础知识第二版》和《SQL高级知识第二版》的PDF电子版。里面有各个语法的解释、大量的实例讲解和批注等等,非常通俗易懂,方便大家跟着一起来实操。 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 有需要的读者可以下载学习,在下面的公众号「数据前线」(非本号)后台回复关键字:SQL,就行 26 27 28 29 30 31 32 33 34 35 36 37 数据前线 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73——End—— 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 后台回复关键字:1024,获取一份精心整理的技术干货 89 90 91 92 93 94 95 96 97 98 99 100 后台回复关键字:进群,带你进入高手如云的交流群。 101 102 103 104 105 106 107 108 109 110 111 112 推荐阅读 113 114 115 116 117 118 119 120 121 122 123 124 我的电脑不联网,很安全,黑客:你还有风扇呢。。。 125 126 127 128 129 130 131 132 133 134 135 136 CentOS 已死,“免费”的RHEL没了 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 一套简单实用的SQL脚本,总有你需要的 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 不懂就问:为什么SELECT * 会导致查询效率低? 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 SQL 语法速成手册 197 198 199 200 201 202 203 204 205 206 207 208
本文分享自微信公众号 - SQL数据库开发(sql_road)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。