根目录下两个网站怎么做域名解析,抖音搜索关键词排名查询,民房做酒店出租网站app,建设网站最强目录
视图的概念
基本使用
准备测试表
创建视图
修改视图影响基表
修改基表影响视图
删除视图
视图规则和限制 视图的概念
视图是一个虚拟表#xff0c;其内容由查询定义#xff0c;同真实的表一样#xff0c;视图包含一系列带有名称的列和行数据。视图中的数据…目录
视图的概念
基本使用
准备测试表
创建视图
修改视图影响基表
修改基表影响视图
删除视图
视图规则和限制 视图的概念
视图是一个虚拟表其内容由查询定义同真实的表一样视图包含一系列带有名称的列和行数据。视图中的数据并不会单独存储在数据库中其数据来自定义视图时查询所引用的表基表在每次引用视图时动态生成。由于视图和基表用的本质是同一份数据因此对视图的修改会影响到基表对基表的修改也会影响到视图。
基本使用
准备测试表
下面用员工表emp和部门表dept作为测试表
员工表emp中包含如下字段
雇员编号empno雇员姓名ename雇员职位job雇员领导编号mgr雇佣时间hiredate工资月薪sal奖金comm部门编号deptno 部门表dept中包含如下字段
部门编号deptno部门名称dname部门所在地点loc 创建视图
CREATE VIEW view_name AS SELECT ...;
创建视图时会先执行select语句然后用查询得到的结果来创建视图
当我们要查询每个员工及其对应的部门名称时需要使用员工表emp和 部门表dept进行多表查询并筛选出员工的部门号等于部门的部门号的记录。
select ename, dname from emp,dept where emp.deptnodept.deptno; 如果该查询结果会被频繁用到那我们就可以给上述查询结果创建视图创建完毕后通过show命令就能看到这个视图。
create view v_ename_dname as
select ename, dname from emp,dept where emp.deptnodept.deptno; 并且在数据库对应的目录下会增加一个对应的xxx.frm文件但并没有与之对应的xxx.ibd文件这也证明了视图和基表使用的是同一份数据。 创建视图后就可以直接通过查询视图来查看每个员工及其对应的部门名称了。
select * from v_ename_dname; 修改视图影响基表
通过查询员工表emp可以看到员工CLARK所在部门的部门号为10
select * from emp where enameCLARK; 查询部门表dept可以看到10号部门的部门名称为ACCOUNTING
select * from dept where deptno10;在视图中将员工CLARK的名字改为TEST后会看到在员工表emp中的员工CLARK的名字也被改为TEST
update v_ename_dname set enameTEST where enameCLARK;
select * from emp where enameCLARK;
select * from emp where enameTEST; 根本原因就是因为视图和基表使用的是同一份数据将视图中员工CLARK的名字改为TEST后员工表emp中的员工CLARK的名字也被改为TEST
修改基表影响视图
通过查询员工表emp可以看到员工JAMES所在部门的部门号为30。
select * from emp where enameJAMES; 30号部门的部门名为SALES因此查询视图时可以看到JAMES所在的部门名为SALES。
select * from v_ename_dname where enameJAMES; 现在将员工表emp中员工JAMES对应的部门号改为10。
update emp set deptno10 where enameJAMES;
select * from v_ename_dname where enameJAMES; 修改后再查询视图就会发现JAMES所在部门的部门名变成了10号部门的部门ACCOUNTING
select * from v_ename_dname where enameJAMES; 删除视图
DROP VIEW view_name;比如将刚才创建的视图v_ename_dname 删除后在数据库中就看不到这个视图了
drop view v_ename_dname; 并且该视图v_ename_dname 在数据库目录下对应的xxx.frm文件也会被删除。 视图规则和限制
视图与普通表一样视图的命名也必须是唯一的不能出现同名视图或表名。创建视图的数目无限制但要考虑复杂查询创建为视图之后的性能影响。视图不能添加索引也不能有关联的触发器或者默认值。视图可以提高安全性在访问视图时必须具有足够的访问权限。创建视图时可以使用order by子句但如果从该视图检索数据时也含有order by子句那么该视图中的order by将被覆盖。视图可以和普通表一起使用比如进行多表查询内外连接等。