目录
一,关于视图
- 视图是一个特殊的表,也包含一系列有名称的列和行数据
- 但是视图是一个虚拟的表,其中的数据不会单独存储在数据库中,其数据来自创建视图时查询所引用的表,在每次引用视图时动态生成
- 视图和基表用的是同一份数据,所以只要二者有任意一者修改了数据,对另一方的数据也有影响
二,视图操作
2.1 准备测试表
我们还是用之前的员工表来当作测试表,如下:
emp员工表,其中ename表示姓名,deptno表示该员工所在的部门号:

dept部门表,其中dname表示部门名,deptno表示部门的部门号:

2.2 创建视图
创建视图的SQL为:
CREATE VIEW view_name AS SELECT ...;
创建视图时是先执行的select语句,然后根据select查询到的表来创建视图
①查询每个员工及其对应的部门名

②如果该查询结果会被经常用到,那么我们可以给上述结果创建视图,创建完后可以在当前库列表下看到这个视图

2.3 修改视图影响基表
①查询员工CLARK的部门名

②将我们上面生成的视图中的CLARK所在部门改为123后,其他一些员工所在部门的部门名也会发生变化

原因就是视图和基表用的同一份数据,修改一个会影响另一个:
2.4 修改基表影响视图
我们可以将上面的部门123再次改回ACCOUNTING,我们这次不在视图表修改,直接在dept表修改:

然后查询视图,可以看到视图中也会发生变化:

2.5 删除视图
删除视图的步骤和删除表一样,直接drop view即可:

三,视图规则
-
与普通表一样,视图的命名也必须是唯一的,不能出现同名视图或表名。
-
创建视图的数目无限制,但要考虑复杂查询创建为视图之后的性能影响。
-
视图不能添加索引,也不能有关联的触发器或者默认值。
-
视图可以提高安全性,在访问视图时必须具有足够的访问权限。
-
创建视图时可以使用order by子句,但如果从该视图检索数据时也含有order by子句,那么该视图中的order by将被覆盖。
-
视图可以和普通表一起使用,比如进行多表查询,内外连接等。
—— 视图特性&spm=1001.2101.3001.5002&articleId=147273734&d=1&t=3&u=937dc1c1981342b39565a21aa401d7b9)
1150

被折叠的 条评论
为什么被折叠?



