数据库的建立视图、视图的作用

视图在数据库中的应用
本文详细介绍了数据库中视图的概念及其作用,包括视图的创建、更新、删除及简化操作、提供数据视角、增强安全性等功能。同时,文章还解释了如何通过视图对数据进行查询、更新和定义。

特点

  • 视图是虚表,是从一个或几个基本表(或视图)中导出的表
  • 只存放了视图的定义,并不存放视图对应的数据
  • 基表中的数据发生变换,视图中的数据也发生变换

视图可以和基本表一样进行查询、删除、定义新视图、受限更新

视图的建立
create view <视图名> ([<列名>[,<列名>]]) as 子查询 [with check option];

其中属性列名全部指定或全部省略
with check option:表示对视图进行 增、删、改时保证更新、插入、删除的行满足视图定义要求
例:

create view is_student (sno,sname,ssex,sage) as select sno,sname,ssex,sage from student where sdept like 'is' with check option;
行列子集视图:

一个视图从单个表中导出,只去掉了部分行和部分列,但是保留了主码。
行列子集视图一般都是可以更新的

视图删除
drop view <视图名> [cascade]

cascade表示联级删除,可以删除该视图和它导出的所有视图

删除基表时,由基表导出的所有视图都必须显式的使用drop view语句删除

视图的作用
  1. 简化用户的操作
  2. 使用户能以多种角度看待同一数据
  3. 对重构数据库提供了一定程度的逻辑独立性
  4. 对机密数据提供安全保护
  5. 更清晰的表达查询
### 如何在数据库创建视图 #### 创建视图的基础概念 视图(View)是一种虚拟,其内容由查询定义。与包含数据的物理不同,视图只存储查询本身,并不保存实际的数据[^2]。当查询视图时,数据库引擎会动态执行视图所基于的查询语句并返回结果。 #### CREATE VIEW 语法结构 以下是标准 SQL 中 `CREATE VIEW` 的通用语法: ```sql CREATE VIEW 视图名称 AS SELECT 列1, 列2, ... FROM 名 WHERE 条件; ``` 在此语法中: - **视图名称**:指定新创建视图的名字。 - **AS**:明后面跟着的是用于定义视图的 SELECT 查询语句。 - **SELECT 查询**:这是定义视图的核心部分,决定了视图将显示哪些列和行[^2]。 #### 示例:创建简单视图 假设有一个名为 `Employees` 的,我们想创建一个仅显示员工姓名和部门的视图: ```sql CREATE VIEW EmployeeNamesAndDepartments AS SELECT Name, Department FROM Employees; ``` #### 使用 OR REPLACE 子句 有时可能需要更新现有的视图而不是删除再重新创建它。这时可以使用 `OR REPLACE` 子句: ```sql CREATE OR REPLACE VIEW EmployeeNamesAndDepartments AS SELECT Name, Department, Position FROM Employees WHERE Status = 'Active'; ``` 这将在不中断应用程序的情况下修改现有视图的定义[^3]。 #### 高级选项:带参数的视图和其他特性 某些数据库系统允许更复杂的视图定义,比如带有检查选项的视图以确保通过视图插入或更新的数据满足特定条件。例如,在 openGauss 数据库中可以通过以下方式设置 CHECK OPTION: ```sql CREATE VIEW ActiveEmployees AS SELECT * FROM Employees WHERE Status = 'Active' WITH CHECK OPTION; ``` 这里 `WITH CHECK OPTION` 确保任何通过此视图进行的操作都不会违反 `Status='Active'` 的约束[^5]。 #### 特定数据库系统的差异 不同的数据库管理系统可能会有不同的扩展和支持水平。例如,在 GBase 8a MPP 数据库集群中,创建视图不仅需要相应的权限,而且还可以明确指定所属数据库;而在 Room 框架下的 SQLite 实现,则提供了面向对象的方式来管理视图,使得开发者能够更容易地集成视图逻辑到应用层面上去[^4]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值