MySQL数据库(12)—— 视图特性

目录

一,关于视图

二,视图操作

2.1 准备测试表

2.2 创建视图

2.3 修改视图影响基表

2.4 修改基表影响视图

2.5 删除视图

三,视图规则


一,关于视图

  • 视图是一个特殊的表,也包含一系列有名称的列和行数据
  • 但是视图是一个虚拟的表,其中的数据不会单独存储在数据库中,其数据来自创建视图时查询所引用的表,在每次引用视图时动态生成
  • 视图和基表用的是同一份数据,所以只要二者有任意一者修改了数据,对另一方的数据也有影响

二,视图操作

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将被覆盖。

  • 视图可以和普通表一起使用,比如进行多表查询,内外连接等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值