1 视图是什么?
首先,视图是虚拟的表,是不存在的。若使用jdbc连接它,是会报错的,它本质上是sql语句
其次,物理表是真实存在的表,占用内存空间。视图没有实际的物理记录。而表有。
视图(view)是在基本表之上建立的表,它的结构(即所定义的列)和内容(即所有数据行)都来自基本表,它依据基本表存在而存在。一个视图可以对应一个基本表,也可以对应多个基本表。视图是基本表的抽象和在逻辑意义上建立的新关系。
如果操作视图中的数据,有的时候基表的数据也会被修改的。如果加了某些特定限制,则不会修改原表的数据,甚至不能修改视图。
作用
1.1 简化查询,如果需要经常执行某项复杂查询,可以基于这个复杂查询建立视图,此后查询此视图即可,简化复杂查询
1.2 视图本质上就是一条SELECT语句,所以当访问视图时,只能访问到所对应的SELECT语句中涉及到的列,对基表中的其它列起到安全和保密的作用,可以限制数据访问。
2 创建视图
对于视图emp_list_view_single而言,如果修改这个视图中的记录,那么基表的数据也随着修改
对于视图emp_list_view而言,是无法修改视图中的数据的。修改时会报错。但是如果修改基表数据,则这张视图的数据也会变化。
or replace 有同名的就替换掉
use test01; CREATE OR REPLACE VIEW emp_list_view AS SELECT e.deptno,e.ename,e.hiredate,e.sal,d.deptname from emp AS e ,dept AS d WHERE e.deptno =d.deptno;
use test01; CREATE OR REPLACE VIEW emp_list_view_single AS SELECT e.deptno,e.ename,e.hiredate,e.sal from emp AS e ;
3 查看视图 ,其实和查看表的命令一样
show create view emp_list_view \G;
show table status like 'emp' \G; show table status like 'emp_list_view' \G;
4 删除视图
DROP VIEW emp_list_view_single;