一、视图的定义及作用
定义
视图是从若干基本表和(或)其他视图构造出来的表。
在创建一个视图时,只是存放的视图的定义,也即是动态检索数据的查询语句,而并不存放视图对应的数据。
在用户使用视图时才去求相对应的数据。所以视图被称作“虚表”
作用
可以限制对数据的访问,可以给用户授予表的特定部分的访问权限而不是整个表的访问权限。
可以使复杂的查询变的简单。在编写查询后,可以方便地重用它而不必知道他的基本查询细节提供了对相同数据的不同显示。
二、视图的创建和删除
- 创建单表视图
CREATE VIEW MYVIEW1
AS
SELECT * FROM EMP;
- 创建或 修改一个单表视图
CREATE OR REPLACE VIEW MYVIEW2
AS
SELECT EMPNO,ENAME,JOB,SAL,DEPTNO
FROM EMP
WHERE DEPTNO >=20
- 使用视图添加和修改数据
INSERT INTO MYVIEW1 (EMPNO,ENAME,SAL)VALUES(9999,'AAAA',3000);
- 为视图添加相关权限
CREATE OR REPLACE VIEW MYVIEW2
AS
SELECT EMPNO,ENAME,JOB,SAL,DEPTNO
FROM EMP
WHERE DEPTNO >=20
WITH CHECK OPTION 设置视图只能操作WHERE条件的数据
WITH READ ONLY 设置视图只能读
- 删除视图
DROP VIEW MYVIEW4;
- 统计视图
CREATE OR REPLACE VIEW MYVIEW4
AS
SELECT DEPTNO 部门编号,DNAME 部门名称,AVG(SAL) 平均工资,MAX(SAL) 最高工资,COUNT(*)人数
FROM EMP E
JOIN DEPT D USING(DEPTNO)
WHERE DEPTNO IS NOT NULL
GROUP BY DEPTNO,DNAME
ORDER BY AVG(SAL)
WITH READ ONLY;
- 基于其它视图的视图
CREATE OR REPLACE VIEW MYVIEW5
AS
SELECT * FROM MYVIEW4
WHERE 部门编号=10
- 创建多表视图
create view trace_inputview
as
select a.*,b.name as username,
c.company_name as base_name,
c.manage_product as manage_product,
c.record_type as record_type,
d.name as good_name
from trace_input a
left join sys_user b on(a.user_id=b.id)
left join sys_company c on(a.company_code=c.company_code)
left join trace_goods d on(a.code=d.code)
order by a.id
- 用Navicat查看/编辑视图
三,视图的总结
视图对应一个查询语句;
视图是(从若干基本表和(或)其他视图构造出来的)表视图进行查询,添加,修改,删除,其实就是对背后的表进行相应操作
虚表 在创建一个视图时,只是存放的视图的定义,也即是动态检索数据的查询语句,而并不存放视图对应的数据
视图的好处
1.安全 可以只显示部分行部分列的数据;可以对添加的数据进行检查;可以设置为只读视图
2.操作简单