在数据库的世界里,视图是一个非常重要的概念,它就像一个 “虚拟的表”,能帮助我们更灵活、安全地处理数据。假设你对视图还一知半解,或者想系统梳理视图的相关知识,那么这篇文章会很适合你。接下来,我将结合数据库学习中的核心内容,从视图的概念、创建、查询、更新、修改定义到删除,全方位为你讲解数据库视图。
“真实表”,却很有用就是一、认识视图:它不
先,大家得明确视图到底是什么。视图是一个虚拟表,它由存储的查询构成,输出看起来和真实的表一样,有带名称的列和行信息。但关键区别在于,视图并不在数据库中存储资料值,它的信息都来自定义视图时查询语句所引用的表(这些表被称为基表)。数据库只在数据字典里存储视图的定义信息。
基表中的数据;反过来,基表数据发生变化,也会反映到由它组成的视图里。就是而且,视图的建立来源很灵活:既可以建立在关系表上,也能建立在其他视图上,甚至可以同时基于两者。它的 “伪装性” 很强,看上去和数据库里的表没什么差别,我们甚至能在视图中进行 INSERT、UPDATE 和 DELETE 操作。不过要注意,通过视图修改数据时,实际上修改的
二、创建视图:两种常见方式
想要使用视图,第一步就是创建它。这里有两种常用的创建方式,分别适用于不同的操作习惯。
(一)用SQL Developer创建
如果你习惯图形化执行,SQL Developer 是个不错的选择。具体步骤很简单:
- 打开 SQL Developer,在创建视图的界面中,选择方案(比如常用的 SCOTT 方案);
- 给视图起个名字,比如 “stu_view1”;
- 在 SQL 查询区域编写定义视图的查询语句,例如 “SELECT * FROM stu WHERE zy=' 计算机 '”;
- 可以点击 “测试语法” 检查语句是否正确,没问题的话点击 “确定”,视图就创建完成了。
(二)用CREATE VIEW语句创建
如果更偏爱用 SQL 命令,那么 CREATE VIEW 语句就是你的工具。它的语法结构如下:
其中,“or replace” 表示如果视图已经存在,就用新的定义替换它;“view_name” 是视图的名字;“alias” 是为视图的列指定的别名;“subquery” 是定义视图的查询语句;“with check option” 用于限制通过视图修改数据时,必须满足查询语句中的条件;“with read only” 则指定视图为只读,不能通过它修改数据。
三、查询视图:和查普通表一样简单
创建好视图后,查询管理就特别轻松了。我们可以像查询普通数据表那样,运用 SELECT 语句查询视图的信息。
比如在 SCOTT 模式下,要查询名为 “emp_view” 的视图,只需要执行以下 SQL 语句:
四、示例
(一)示例1
题目如下图,首先要创建Transactions表,然后插入信息,再创建视图,最后查询视图
1、创建Transactions表
创建表的方法有两种,这里用编译器来创建,在 Navicat 中,打开 Oracle 数据库的查询编辑器,执行以下建表语句:
2、插入示例数据
继续在查询编译器中,执行插入数据的语句:
3、创建视图
创建查询视图的办法有两种,这里以上面提到的“CREATE VIEW”为例,继续在查询编译器中,执行以下语句:
4、查询视图
创建视图后,直接执行以下查询语句查看结果:
到这里,该示例就已经完成了。
(二)示例2
题目如下图,首先要创建Accounts表,然后插入数据,再创建视图,结果查询视图
1、创建Accounts表
在 Navicat 中,打开 Oracle 数据库的查询编辑器,执行以下建表语句:
定义了表的两个列,account_id
为主键,确保其唯一性
2、插入示例数据
继续在查询编译器中,执行插入数据的语句:
3、新建视图并且查询
继续在查询编译器中,执行插入数据的语句:
输出了想得到的结果,到这里,示例展示结束。
五、更新视图:有条件,需注意
所有视图都能更新,可更新视图需要满足一系列条件:就是并不
- 没有使用连接函数、聚合函数和组函数;
- 创建视图的 SELECT 语句中没有聚合函数,也没有 GROUP BY、CONNECT BY、START WITH 子句以及 DISTINCT 关键字;
- 创建视图的 SELECT 语句不包括从基表列通过计算得到的列;
- 创建视图时没有设置只读属性。
如果视图满足这些条件,我们就可以运用 UPDATE 语句通过视图修改基表的数据。举个例子,要将 “emp_view_complex” 视图中员工编号为 7566 的员工工资改为 3000,执行相应的 UPDATE 语句即可(具体语句需结合视图实际定义编写)。
六、修改视图定义:两种方法任你选
当业务需求变化,需要修改视图的定义时,也有两种常用方法。
(一)用 SQL Developer 修改
- 在 SQL Developer 中找到要修改的视图(比如 “EMP_VIEW”),进入编辑视图界面;
- 在 SQL 查询区域修改查询语句,比如原本视图查询的是部门编号为 20 的记录,现在行改成 “select empno, ename, job, sal, deptno from emp where deptno =30”;
- 点击 “测试语法” 检查修改后的语句是否正确,确认无误后点击 “确定”,视图定义就修改好了。
(二)用 SQL 命令修改
使用 CREATE OR REPLACE VIEW 语句可以修改视图定义,相当于用新的查询语句重新创建视图(如果视图已存在则替换)。
比如要修改 “emp_view_union” 视图,让它查询部门编号为 30 的记录(原本查询部门编号为 20 的记录),可以执行以下语句:
七、删除视图:不用了就及时清理
,用户只能直接删除自己模式中的视图;假如要删除其他用户模式中的视图,必须拥有 DROP ANY VIEW 系统权限。就是当视图不再需时,我们允许执行 DROP VIEW 语句删除它。需要注意的
比如要删除 “emp_view” 视图,只需执行:
通过删除视图后,数据库中就不再存储该视图的定义信息了,但不会影响到它所基于的基表素材,这一点能够放心。
总结
视图作为数据库中的 “虚拟表”,在数据处理中发挥着重要作用。从理解它的概念,到掌握创建、查询、更新、修改和删除的技巧,每一步都很关键。希望通过这篇文章,你能对数据库视图有更清晰的认识,并且在实际工作或学习中灵活运用视图,让数据处理变得更高效、更安全。