SQL VIEW 视图语法
SQL 视图(Views)
在 SQL 中,视图是基于 SQL 语句的结果集的可视化表。
视图包含行和列,就像真正的表一样。视图中的字段是一个或多个数据库中真实表中的字段。
您可以添加 SQL 函数,在哪里添加,并将语句连接到视图,或者您可以呈现数据,就像数据来自单个表一样。
CREATE VIEW 语法
CREATE [OR REPLACE] [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}] [DEFINER = user] [SQL SECURITY { DEFINER | INVOKER }] VIEW view_name [(column_list)] AS select_statement [WITH [CASCADED | LOCAL] CHECK OPTION]
CREATE VIEW 语句将创建一个新的视图,如果给定 OR REPLACE 子句,也可以替换现有的视图。如果视图不存在,则 CREATE OR REPLACE VIEW 等同于 CREATE VIEW。如果视图确实存在,则 CREATE OR REPLACE VIEW 替换它。
注释:视图总是显示最新数据!每当用户查询视图时,数据库引擎就使用视图的 SQL 语句重新构建数据。
视图定义遵守以下约束:
● SELECT 语句不能引用系统变量或用户定义的变量。
● 在存储程序中,SELECT 语句不能引用程序参数或局部变量。
● SELECT 语句不能引用预编译语句参数。
● 定义中引用的任何表或视图都必须存在。如果在创建视图之后,定义引用的表或视图被删除,那么使用视图会导致错误。若要检查视图定义是否存在此类问题,请使用 CHECK TABLE 语句。
● 定义不能引用 TEMPORARY 表,也不能创建 TEMPORARY 视图。
● 不能将触发器与视图关联。
● SELECT 语句中列名的别名最大长度64个字符(而不是256个字符的最大别名长度)。
在视图定义中允许使用 ORDER BY,但是如果使用 ORDER BY 语句从视图中进行选择,则会忽略视图自己的 ORDER BY。
对于定义中的其他选项或子句,它们被添加到引用视图的语句的选项或子句中,但效果是不确定的。例如,如果视图定义包含 LIMIT 子句,使用 LIMIT 子句从视图中进行查询,则应用哪个限制是不确定的。同样的原则也适用于 SELECT 关键字后面的 ALL、DISTINCT 或 SQL_SMALL_RESULT 等选项,以及 INTO、FOR UPDATE、FOR SHARE、LOCK IN SHARE MODE 和 PROCEDURE 等子句。
SQL CREATE VIEW 实例
"Current Product List"(当前产品列表)视图从"Products"表中列出了所有正在使用的产品(未停产的产品)。这个视图使用下面的 SQL 创建:
CREATE VIEW [Current Product List] AS SELECT ProductID,ProductName FROM Products WHERE Discontinued=No
我们可以像这样查询上面这个视图:
SELECT * FROM [Current Product List]
Northwind 样本数据库的另一个视图会选取 "Products" 表中所有单位价格高于平均单位价格的产品:
CREATE VIEW [Products Above Average Price] AS SELECT ProductName,UnitPrice FROM Products WHERE UnitPrice>(SELECT AVG(UnitPrice) FROM Products)
我们可以像这样查询上面这个视图:
SELECT * FROM [Products Above Average Price]
Northwind 样本数据库的另一个视图会计算在 1997 年每个种类的销售总数。请注意,这个视图会从另一个名为 "Product Sales for 1997" 的视图那里选取数据:
CREATE VIEW [Category Sales For 1997] AS SELECT DISTINCT CategoryName,Sum(ProductSales) AS CategorySales FROM [Product Sales for 1997] GROUP BY CategoryName
我们可以像这样查询上面这个视图:
SELECT * FROM [Category Sales For 1997]
我们也可以向查询添加条件。现在,我们仅仅需要查看 "Beverages" 类的销售总数:
SELECT * FROM [Category Sales For 1997] WHERE CategoryName='Beverages'
SQL 更新视图
您可以使用下面的语法来更新视图:
SQL CREATE OR REPLACE VIEW 语法
CREATE OR REPLACE VIEW view_name AS SELECT column_name(s) FROM table_name WHERE condition
现在,我们希望向 "Current Product List" 视图添加 "Category" 列。我们将通过下列 SQL 更新视图:
CREATE OR REPLACE VIEW [Current Product List] AS SELECT ProductID,ProductName,Category FROM Products WHERE Discontinued=No
SQL 撤销视图
您可以通过 DROP VIEW 命令来删除视图。
SQL DROP VIEW 语法
DROP VIEW view_name
原文链接: https://www.yukx.com/moran/article/details/996.html 优科学习网SQL VIEW 视图语法
-
mysql只支持一种join算法:Nested-LoopJoin(嵌套循环连接),但Nested-LoopJoin有三种变种:SimpleNested-LoopJoin,IndexNested-LoopJoin,BlockNested-LoopJoin(简单-索引-缓冲区)原理:1.SimpleNe
-
redis是一个内存数据库,一旦断电或服务器进程退出,内存数据库中的数据将全部丢失,所以需要redis持久化 redis持久化就是把数据保存在磁盘上,利用永久性存储介质将数据保存,在特定的时间将保存的数据进行恢复的工作机制redis提供两种持久化机制RDB:存储数据结果,关注点在数据AOF:存储操作
-
通过SQL的执行过程来介绍MySQL的基础结构. 首先有一个user_info表,表里有一个id字段,执行下面这条查询语句:Select * form user_info where i
-
索引(Index)是帮助MySQL高效获取数据的数据结构,索引的目的在于提高查询效率,就像字典和书籍的目录一样,有了目录,可以帮助你快速查找你需要的内容。可以理解为一个排好序的快速查找数据结构。也就是
-
说到数据库事务,大家脑子里一定很容易蹦出一堆事务的相关知识,如事务的ACID特性,隔离级别,解决的问题(脏读,不可重复读,幻读)等等,但是可能很少有人真正的清楚事务的这些特性又是怎么实现的,为什么要有四个隔离级别。今天我们就先来聊聊MySQL中事务的隔离性的实现原理,后续还会继续出文章分析其他特性的
-
前面我们系统了解了一个查询语句的执行流程,并介绍了执行过程中涉及的处理模块。相信你还记得,一条查询语句的执行过程一般是经过连接器、分析器、优化器、执行器等功能模块,最后到达存储引擎。那么,一条更新语句