SQL Server数据库:视图

视图: 视图是从一个或多个表或其他视图中导出的表。
视图的优点:
  1). 为用户集中数据,简化用户的数据查询和处理。
  2). 简化操作,屏蔽了数据库的复杂性。
  3). 重新定制数据,使数据便于共享。
  4). 合并分割数据,便于数据输出到应用程序中。
  5). 简化用户权限的管理,增加安全性。

1.创建视图
Book(BookID,BookName,TypeID,AuthorID,…),BookType(TypeID,TypeName),创建一个视图,查询每本书的书名和图书类型。

CREATE VIEW VIEW_BOOK_INFO(BookID,BookName,BookType)/*指定视图中包括的基本表的列*/
AS
SELECT BookID,BookName,TypeName
FROM Book, BookType
WHERE Book.TypeID = BookType.TypeID

语句执行后可以看到视图下看到 dbo.VIEW_BOOK_INFO 表示视图创建成功。
在这里插入图片描述
2.查询视图
视图创建成功后就可以像查询表一样查询视图了。

SELECT * FROM VIEW_BOOK_INFO

在这里插入图片描述

SELECT * FROM VIEW_BOOK_INFO
WHERE BookName LIKE 'C语言%'

在这里插入图片描述
3.更新视图

UPDATE VIEW_BOOK_INFO
SET BookName = 'C#程序设计'
WHERE BookID = 2
SELECT * FROM VIEW_BOOK_INFO

在这里插入图片描述
查看原表Book会发现表中BookID=2的BookName变成了“C#程序设计”。但并不是所有的数据都可以通过视图来更新。要想视图表修改基本表的数据,要满足以下条件:

  1. 任何修改(包括UPDATE,INSERT,DELETE语句)都只能引用一个基本表的列。
  2. 在视图函数中修改的列必须直接引用表列中的基础数据。
  3. 被修改的列不受GROUP BY、TOP、HAVING和DISTINCT子句的影响。

4.修改视图定义

ALTER VIEW VIEW_BOOK_INFO(BookID,BookName)
AS
SELECT BookID,BookName
FROM Book, BookType
WHERE Book.TypeID = BookType.TypeID

在这里插入图片描述
虽然视图和表从查询结果看差不多,但修改视图定义与修改基本表结构不一样。修改视图定义并不会修改基本表的结构。

  • 2
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
SQL Server 数据库中,可以使用视图来简化复杂的查询,并将多个表中的数据组合成一个逻辑上的表。关联视图是一种特殊的视图,它基于多个表之间的关联关系创建。使用关联视图可以提高查询效率,减少查询语句的复杂性。 创建关联视图的语法如下: ``` CREATE VIEW view_name AS SELECT column1, column2, ... FROM table1 JOIN table2 ON table1.column = table2.column WHERE condition; ``` 其中,`table1` 和 `table2` 是要关联的表,`JOIN` 关键字用于指定关联类型(如 `INNER JOIN`、`LEFT JOIN` 等),`ON` 关键字用于指定关联条件,`condition` 是查询条件。 例如,假设有两个表 `orders` 和 `customers`,它们之间有一个关联字段 `customer_id`,要查询每个订单的客户信息,可以创建一个关联视图: ``` CREATE VIEW order_customer AS SELECT orders.order_id, orders.order_date, customers.customer_name FROM orders JOIN customers ON orders.customer_id = customers.customer_id; ``` 然后就可以使用这个视图来查询每个订单的客户信息: ``` SELECT * FROM order_customer; ``` 注意,视图只是一个查询,不存储数据,因此在使用视图时,实际上是执行了该视图的查询语句。视图的优点是可以将复杂的查询封装起来,方便查询和维护。但是,视图也有一些限制,如不能使用 `ORDER BY` 子句对视图进行排序,不能使用 `GROUP BY` 子句进行分组等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值