SQL 视图(Views)


视图是可视化的表。

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


SQL CREATE VIEW 语句

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

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

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

SQL CREATE VIEW 语法

  1. CREATE VIEW view_name AS
  2. SELECT column_name(s)
  3. FROM table_name
  4. WHERE condition

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


SQL CREATE VIEW 实例

样本数据库 Northwind 拥有一些被默认安装的视图。

视图 "Current Product List" 会从 "Products" 表列出所有正在使用的产品(未停产的产品)。这个视图使用下面的 SQL 创建:

  1. CREATE VIEW [Current Product List] AS
  2. SELECT ProductID,ProductName
  3. FROM Products
  4. WHERE Discontinued=No

我们可以像这样查询上面这个视图:

  1. SELECT * FROM [Current Product List]

Northwind 样本数据库的另一个视图会选取 "Products" 表中所有单位价格高于平均单位价格的产品:

  1. CREATE VIEW [Products Above Average Price] AS
  2. SELECT ProductName,UnitPrice
  3. FROM Products
  4. WHERE UnitPrice>(SELECT AVG(UnitPrice) FROM Products)

我们可以像这样查询上面这个视图:

  1. SELECT * FROM [Products Above Average Price]

Northwind 样本数据库的另一个视图会计算在 1997 年每个种类的销售总数。请注意,这个视图会从另一个名为 "Product Sales for 1997" 的视图那里选取数据:

  1. CREATE VIEW [Category Sales For 1997] AS
  2. SELECT DISTINCT CategoryName,Sum(ProductSales) AS CategorySales
  3. FROM [Product Sales for 1997]
  4. GROUP BY CategoryName

我们可以像这样查询上面这个视图:

  1. SELECT * FROM [Category Sales For 1997]

我们也可以向查询添加条件。现在,我们仅仅需要查看 "Beverages" 类的销售总数:

  1. SELECT * FROM [Category Sales For 1997]
  2. WHERE CategoryName='Beverages'

SQL 更新视图

您可以使用下面的语法来更新视图:

SQL CREATE OR REPLACE VIEW 语法

  1. CREATE OR REPLACE VIEW view_name AS
  2. SELECT column_name(s)
  3. FROM table_name
  4. WHERE condition

现在,我们希望向 "Current Product List" 视图添加 "Category" 列。我们将通过下列 SQL 更新视图:

  1. CREATE VIEW [Current Product List] AS
  2. SELECT ProductID,ProductName,Category
  3. FROM Products
  4. WHERE Discontinued=No

SQL Server

  1. ALTER VIEW [ schema_name . ] view_name [ ( column [ ,...n ] ) ]
  2. [ WITH <view_attribute> [ ,...n ] ]
  3. AS select_statement
  4. [ WITH CHECK OPTION ] [ ; ]
  5.  
  6. <view_attribute> ::=
  7. {
  8. [ ENCRYPTION ]
  9. [ SCHEMABINDING ]
  10. [ VIEW_METADATA ]
  11. }
  • schema_name: 视图所属架构的名称。
  • view_name: 要更改的视图。
  • column: 将成为指定视图的一部分的一个或多个列的名称(以逗号分隔)。

SQL 撤销视图

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

SQL DROP VIEW 语法

  1. DROP VIEW view_name

SQL 视图(Views)的更多相关文章

  1. Backbone.js 为复杂Javascript应用程序提供模型(models)、集合(collections)、视图(views)的结构

    Backbone.js 为复杂Javascript应用程序提供模型(models).集合(collections).视图(views)的结构.其中模型用于绑定键值数据和 自定义事件:集合附有可枚举函数 ...

  2. SQL视图&触发器

    SQL视图 在 SQL 中,视图是基于 SQL 语句的结果集的可视化的表. 视图包含行和列,就像一个真实的表.视图中的字段就是来自一个或多个数据库中的真实的表中的字段.我们可以向视图添加 SQL 函数 ...

  3. jenkins权限管理,实现不同用户组显示对应视图views中不同的jobs

    如何分组管理权限,如何实现不同用户组显示对应视图views中不同的jobs,建议使用Role Strategy Plugin插件. 1.安装Role Strategy Plugin插件. 2.“系统管 ...

  4. 关于SQL视图的创建和使用方法

    SQL视图的创建和使用 视图这个东西在其他的软件中,我们也经常看得到,例如word中就有视图,我们不难发现,视图似乎是一种显示方式,就像WORD一样,有几种显示版面,这就是视图,那么SQL中的视图又该 ...

  5. ylb:SQL 视图(View)基础

    ylbtech-SQL Server: SQL Server-SQL 视图(View)基础 SQL 视图(View)基础. 1,ylb:视图(View)基础返回顶部 -- ============== ...

  6. GeoServer 查询sql视图

    说明: 最近项目中遇到一个需求,需要统计管网的长度,但管网数据量非常大,前端用openlayers接口统计直接就奔溃了. 后尝试使用调后台接口查数据库的方式,虽然可行但是又要多一层与后台交互的工作. ...

  7. sql 视图的用法

    在一个项目的实际开发过程中牵涉到复杂业务的时候,我们不可避免的需要使用中间表来进行数据连接,有的同学就说了,我可以采用Hibernate进行主外键进行关联啊?多对多,多对一,一对一,等,采用主外键关联 ...

  8. Django基础之视图(views)层、模板层

    目录 Django基础之视图(views)层.模板层 JsonResponse 向前端返回一个json格式字符串的两种方式 重写Django中的json的某个方法 form表单上传文件 FBV与CBV ...

  9. 【Django笔记1】-视图(views)与模板(templates)

    视图(views)与模板(templates) 1,视图(views) ​ 将接收到的数据赋值给模板(渲染),再传递给浏览器.HTML代码可以直接放在views.py(文件名可任意更换),也可以放在t ...

随机推荐

  1. js 根据指定个数切割数组

    Part.1 问题 写项目时,遇到需要前端做 假分页 的问题:后端会将数据全部返回,前端自己做分页 Part.2 思路 拿到后端全部返回的数据后,按照 产品需求  进行分页,如每页显示 10 条数据为 ...

  2. JavaSE-03 Java选择结构

    学习要点 if选择结构 switch选择结构 if选择结构 单分支if选择结构 语法结构 应用场合 问题:如果王小强的Java考试成绩大于98分,小强就能获得一个iphone8作为奖励. 复杂条件下的 ...

  3. CentOS7.4搭建kafka单结点和集群

    操作系统选择 CentOS7.4x86-64(操作系统的x86_64是跟CPU有关的,最早AMD公司开发出了一款向下兼容x86CPU,向上又扩充了指令集,具有了64位CPU的特性,这款CPU后来改名为 ...

  4. mysql5.7配置

    my3306.cnf [client] port = 3306   #端口socket = /data/mysql3306/mysql3306.sock   #mysql以socket方式运行的soc ...

  5. mysql EXPLAIN Join Types 手册解释 及数据实操

     第一部分:名称解释 文档地址 https://dev.mysql.com/doc/refman/5.7/en/explain-output.html EXPLAIN Join Types: The ...

  6. Django框架基础知识05-自定义模板标签与过滤器

    根据一定规则,自己定义出符合需求功能的.用在任何你有需求的地方,因为内置的满足不了我们的需求,不同的东西有不同的定义规则 目前最最重要的就是HOW 一 文件路径配置: templates 存放自定义 ...

  7. C#sql语句如何使用占位符

    背景:在程序中,写sql语句时,可能要根据变量的值不同,SQL语句产生相应的变化.比如说存在变量StuName,根据变量值的不同,检索不同姓名的学生记录,这时需用到占位符的知识. 1,{0}占位符,代 ...

  8. Nginx与python web服务配置(Uwsgi& FastCGI)

    Uwsgi start uswgi uwsgi --harakiri 360000 --body-read-warning=10000 --max-fd=65536 -b 1000000 --http ...

  9. 大数据学习——securecrt同时向多个tab窗口发送相同的命令

    右键选中 然后在下面空白窗口写命令就可以了

  10. [BZOJ3052][UOJ#58][WC2013]糖果公园

    [BZOJ3052][UOJ#58][WC2013]糖果公园 试题描述 Candyland 有一座糖果公园,公园里不仅有美丽的风景.好玩的游乐项目,还有许多免费糖果的发放点,这引来了许多贪吃的小朋友来 ...