sql12——视图

视图是什么

是从基本表(或其他视图)中导出的虚表
是RDBMS提供给用户以多种角度观察数据库中数据的重要机制。在这里插入图片描述
注:外模式:用户定义的基本表和若干视图组成。视图:由基本表或其它视图导出的表,其本身不存在于数据库中,称为虚表。
在这里插入图片描述

为什么使用视图

1、可以重用sql语句,简化复杂的sql操作。比如在编写查询之后可以方便的重通用而不需要知道基本查询细节。
2、保护数据。可以给用户授予表的特定部分访问权限而不是整个表的访问权限。数据安全性得到保障。
3、视图可以更改并返回和底层表的表示和格式不同的数据。
4、不同用户可以从不同角度看待同一数据,支持一定的逻辑数据独立性。

性能问题
因为视图不包含数据,所以每次使用视图的时候,都必须处理查询执行时所需要的任意一个检索。如果用多个联结和过滤创建列复杂的视图或嵌套视图,则可能会发现性能下降很厉害。
视图的规则和限制
1、和表一样,视图必须唯一命名。
2、可创建的视图数目没有限制,可以和表一起使用。
3、order by可以用在视图里,但是如果该视图用select语句检索数据里也有order by,那么该视图的order by会被覆盖。
4、视图不可以被索引,不可以有关联的触发器或默认值。

创建视图

视图是用一个查询块的查询结果来定义的,需要明确视图目标列的列名。
CREATE VIEW <视图名> [(<列名> [,<列名>]…)]AS
<子查询> [WITH CHECK OPTION];

Create View Stu as
Select sNo(学号), sName(姓名) From Student(学生) Where sdept = ‘CS’;

注;WITH CHECK OPTION的视图在对视图进行UPDATE, INSERT和DELETE操作时要保证更新、插入或删除的行满足视图定义中的谓词条件(即子查询中的表达式)。

删除视图

DROP VIEW <视图名>;

DROP VIEW Stu;

该语句从数据字典中删除指定的视图定义。由该视图导出的其他视图定义仍在数据字典中,但已不能使用,必须显式删除。删除基表时,由该基表导出的所有视图定义都必须显式删除。

查看和更新视图

SHOW CREATE VIEW viewname查看创建的视图。

当需要对视图进行更新的时候,可以先使用DROP在重新CREATE。也可以直接CREATE OR REPLACE VIEW,如果视图不存在会直接创建,如果存在就会更新替换原视图。
但是视图里有一下操作就不能 对视图进行更新:
分组、联结、子查询、并、聚集函数、DISTINCT、导出列。

猜你喜欢

转载自blog.csdn.net/matthewchen123/article/details/107843901