IT评测·应用市场-qidao123.com

标题: 【MySQL】视图 [打印本页]

作者: 滴水恩情    时间: 2024-11-28 13:38
标题: 【MySQL】视图
目录
1.什么是视图
2.视图的基本使用
2.1.预备工作
2.2.创建视图
3.视图与基表的相互影响
3.1.修改视图影响基表
3.2.修改基表影响视图
4.删除视图
 5.关于视图


 
1.什么是视图

        视图(VIEW)也被称作虚表,即虚拟的表,是一组数据的逻辑表现,其本质是对应于一条SELECT语句,效果集被赋予一个名字,即视图名字。
       视图本身并不包罗任何数据,它只包罗映射到基表的一个查询语句,当基表数据发生变化,视图数据也随之变化。
        视图是一种虚拟表,其内容由查询(通常是SQL查询)界说。视图本身不存储数据,而是基于一个或多个基表(现实存储数据的表)天生。当访问视图时,数据库系统会自动实行界说视图的查询,并返回效果集。
特性
视图与基表的关系

2.视图的基本使用

2.1.预备工作

首先我们去这个网站下载一个.sql文件:阿里云盘分享 (alipan.com)


拿到该数据库文件以后,我们可以先打开该文件进行检察其内容:
  1. vim scott_data.sql
复制代码
 

我们会发现其里面都是SQL记载,对于MySQL我们备份其数据库时,其实备份的全部都是一条条有效的SQL记载,通过重新实行这些SQL,我们便可以或许得到和原来一摸一样数据库。
接下来我们就可以在mysql中将这个数据库给创建出来了: 
  1. source 该文件的绝对路径;
复制代码
 例如我这里是:
  1. source /home/zs_113/scott_data.sql
复制代码

然后我们查询我们的数据库,发现数据库中多了一个scott的数据库:
  1. show databases;
复制代码

我们进去看看 
  1. use scott;
  2. show tables;
复制代码

 这三张表是

我们先分别检察一下表结构和表内容:

  1. desc emp;
  2. select * from emp;
复制代码
 


  1. desc dept;
  2. select * from dept;
复制代码


  1. desc salgrade;
  2. select * from salgrade;
复制代码

接下来我们的查询都会基于上面这一个数据库。
2.2.创建视图

语法
  1. create view 视图名 as select语句;
复制代码
阐明


        例如下面的一个场景,当我们要查询每个员工及其对应的部分名称时,需要使用员工表和部分表进行多表查询,并筛选出员工的部分号便是部分的部分号的记载。如下:
  1. select ename, dname from emp inner join dept on emp.deptno=dept.deptno;
复制代码
         当您实行这个查询时,数据库会查找emp表和dept表中所有deptno字段值相匹配的行,并返回这些行的ename和dname字段值。
        例如,假如emp表中有一个员工其deptno为10,而dept表中有一个部分其deptno也为10,那么这个员工的名字和该部分的名字就会被一起返回作为查询效果的一部分。
 
 
 假如该查询效果会被频仍用到,那我们就可以给上述查询效果创建视图,如许我们以后就可以直接访问该视图,而不用每次都先对表进行内连接,然后进行筛选。
  1. create view v_ename_dname as select ename, dname from emp inner join dept on emp.deptno=dept.deptno;
复制代码
 这是是一个创建视图的命令,该视图名为v_ename_dname,它基于emp(员工)表和dept(部分)表的INNER JOIN效果。这个视图将展示每个员工的名字(ename)和他们所属部分的名字(dname)。
 
 
然后我们可以通过show tables命令就能看到这个视图。如下:
  1. show tables;
复制代码
  
 
创建了这张v_ename_dname视图后,我们就可以直接通过查询视图,来检察每个员工及其对应的部分名称了。如下:
  1. select * from v_ename_dname;
复制代码
 
3.视图与基表的相互影响

3.1.修改视图影响基表

例如下面我们要在视图中修改员工SMITH的名称为小写:
  1. update v_ename_dname set ename='smith' where ename='SMITH';
复制代码

 然后我们现在去emp表中检察这个更改是否见效了。
  1. select * from emp;
复制代码

 确实见效了,阐明修改视图会影响基表
3.2.修改基表影响视图

参看部分表:
  1. select * from dept;
复制代码

假设我们现在要将accounting部分改为HR部分。
  1. update dept set dname='HR' where deptno=10;
复制代码

然后我们检察视图v_ename_dname:
  1. select * from v_ename_dname;
复制代码

发现视图中的数据被改变了!阐明修改基表会影响视图
4.删除视图

删除视图的SQL如下:
  1. DROP VIEW view_name;
复制代码
比如将刚才创建的视图删除后,在数据库中就看不到这个视图了。如下:
  1. drop view v_ename_dname;
复制代码

 5.关于视图


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 IT评测·应用市场-qidao123.com (https://dis.qidao123.com/) Powered by Discuz! X3.4