视图的定义与删除问题

“任何不是逻辑模型的一部分但作为虚关系而对用户可见的关系称为视图。”在操作数据库过程中,视图是一个较为常用的关系集合,它能够向用户隐藏一些特定的数据,提高安全性能;同时,视图比逻辑模型更加符合特定用户的直觉感受。我们在sql中用create view命令定义视图。create view命令格式为: create view v as<查询表达式>,其中<查询表达式>可以是任何有效的查询表达式,v表示视图名称。

例如,有这样一个视图,它包含每本书的销量,我们将这个视图命名为book_sales,我们定义视图如下:

create view book_sales as

select books.title as title, sum(sales.qty) as qfrom books, sales
where books.title_id = sales.title_id
group by books.title

定义了视图之后,我们就可以用book_sales指代视图生成的虚关系。例如,我们要查出书名为'The art of Code'的销量:

select q

from book_sales

where title = 'The art of Code'

以上是对视图的定义和使用操作。而我们在定义视图时,会遇到这样一个问题,在查询分析器中sql被多次重复运行时,系统会提示“数据库中已存在名为 'book_sales' 的对象。”,即该视图被重复创建了。因此,在定义一个视图之前,要首先判断视图book_sales是否已经存在。如果存在,将其删除,然后才能开始定义视图。我们以sql server 中的pubs数据库为例。

use pubs;
go
if object_id('dbo.book_sales', 'v')is not null
drop view dbo.book_sales;
go

总结起来,在定义一个视图时,应该首先判断是否已经存在该视图,若存在,则将其drop掉,再创建新视图。

use pubs;
go
if object_id('dbo.book_sales', 'v')is not null
drop view dbo.book_sales;
go

create view book_sales as

select books.title as title, sum(sales.qty) as qfrom books, sales
where books.title_id = sales.title_id
group by books.title

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值