第39章 SQL 视图(Views)教程

视图是可视化的表。

本章讲解如何创建、更新和删除视图。


SQL CREATE VIEW 语句

在 SQL 中,视图是基于 SQL 语句的结果集的可视化的表。

视图包含行和列,就像一个真实的表。视图中的字段就是来自一个或多个database中的真实的表中的字段。

阁下可以向视图添加 SQL 函数、WHERE 以及 JOIN 语句,也可以呈现数据,就像这些数据来自于某个单一的表一样。

SQL CREATE VIEW 语法


    CREATE VIEW view_name AS
    
    SELECT column_name(s)
    
    FROM table_name
    
    WHERE condition

**注释:**视图总是显示最新的数据!每当用户查询视图时,database引擎通过使用视图的 SQL 语句重建数据。


SQL CREATE VIEW 实例

样本database Northwind 拥有一些被默认install 的视图。

视图 “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 样本database的另一个视图会选取 “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 样本database的另一个视图会计算在 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 VIEW [Current Product List] AS
    
    SELECT ProductID,ProductName,Category
    
    FROM Products
    
    WHERE Discontinued=No

SQL Server


    ALTER VIEW [ schema_name . ] view_name [ ( column [ ,...n ] ) ] 
    [ WITH <view_attribute> [ ,...n ] ] 
    AS select_statement 
    [ WITH CHECK OPTION ] [ ; ]
    
    <view_attribute> ::= 
    { 
        [ ENCRYPTION ]
        [ SCHEMABINDING ]
        [ VIEW_METADATA ]     
    }

  • schema_name: 视图所属架构的名称。
  • view_name: 要更改的视图。
  • column: 将成为指定视图的一部分的一个或多个列的名称(以逗号分隔)。

SQL 撤销视图

阁下可以通过 DROP VIEW 命令来删除视图。

SQL DROP VIEW 语法


    DROP VIEW view_name

本专栏所有文章

第1章 SQL 教程第2章 SQL 简介教程
第3章 SQL 语法教程第4章 SQL SELECT教程
第5章 SQL SELECT DISTINCT教程第6章 SQL WHERE教程
第7章 SQL AND & OR教程第8章 SQL ORDER BY教程
第9章 SQL INSERT INTO教程第10章 SQL UPDATE教程
第11章 SQL DELETE教程第12章 SQL SELECT TOP教程
第13章 SQL LIKE教程第14章 SQL 通配符教程
第15章 SQL IN教程第16章 SQL BETWEEN教程
第17章 SQL 别名教程第18章 SQL 连接(JOIN)教程
第19章 SQL INNER JOIN教程第20章 SQL LEFT JOIN教程
第21章 SQL RIGHT JOIN教程第22章 SQL FULL JOIN教程
第23章 SQL UNION教程第24章 SQL SELECT INTO教程
第25章 SQL INSERT INTO SELECT教程第26章 SQL CREATE DATABASE教程
第27章 SQL CREATE TABLE教程第28章 SQL 约束教程
第29章 SQL NOT NULL教程第30章 SQL UNIQUE教程
第31章 SQL PRIMARY KEY教程第32章 SQL FOREIGN KEY教程
第33章 SQL CHECK教程第34章 SQL DEFAULT教程
第35章 SQL CREATE INDEX教程第36章 SQL DROP教程
第37章 SQL ALTER教程第38章 SQL Auto Increment教程
第39章 SQL 视图教程第40章 SQL 日期教程
第41章 SQL NULL 值教程第42章 SQL NULL 函数教程
第43章 SQL 通用数据类型教程第44章 SQL DB 数据类型教程
第45章 SQL 函数教程第46章 SQL AVG()教程
第47章 SQL COUNT()教程第48章 SQL FIRST()教程
第49章 SQL LAST()教程第50章 SQL MAX()教程
第51章 SQL MIN()教程第52章 SQL SUM()教程
第53章 SQL GROUP BY教程第54章 SQL HAVING教程
第55章 SQL EXISTS教程第56章 SQL UCASE()教程
第57章 SQL LCASE()教程第58章 SQL MID()教程
第59章 SQL LEN()教程第60章 SQL ROUND()教程
第61章 SQL NOW()教程第62章 SQL FORMAT()教程
第63章 SQL 快速参考教程第64章 SQL 主机教程
第65章 SQL 总结教程

寄语

本文有榴莲酱CSDN原创,欢迎点赞、转载,博客地址:https://blog.csdn.net/qq441540598

  • 你可以疑心星星是火把;你可以疑心太阳会移转;你可以疑心真理是慌话;可是我的爱永没有改变。
  • 读书不要贪多,而是要多加思考,这样的读书使我获益不少。
  • 心是个无形的容器,可以只装一滴水,也可以容纳无边无际的大海,正如小肚鸡肠与海量的差异。海量的人不一定都能成就一番伟业,但他们的人生一定充满着光明和快乐;而小肚鸡肠的人不仅成就不了什么大事业,他们的人生肯定会烦恼重重。
  • 当工作累的时候,告诉自己,要梳理、沉淀面向阳光,不见阴霾。
  • 我从来不屑于做对的事情,在我年轻的时候,有勇气的时候。年轻时并不知道自己要过什么样的生活,但一直清楚地知道我不要过什么样的生活。那些能预知的,经过权衡和算计的世俗生活对我毫无吸引力,我要的不是成功,而是看到生命的奇迹。
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

榴莲酱csdn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值