欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

SQL 创建、更新和删除视图的方法

程序员文章站 2022-06-24 23:00:36
视图是可视化的表。本章讲解如何创建、更新和删除视图。sql create view 语句在 sql 中,视图是基于 sql 语句的结果集的可视化的表。视图包含行和列,就像一个真实的表。视图中的字段就是...

视图是可视化的表。

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

sql create view 语句

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

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

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

sql create view 语法

create view view_name as
select column_name(s)
from table_name
where condition

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

sql create view 创建实例

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

视图 "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 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