二、数据库视图view

一、视图的定义及作用

定义
视图是从若干基本表和(或)其他视图构造出来的表。

在创建一个视图时,只是存放的视图的定义,也即是动态检索数据的查询语句,而并不存放视图对应的数据。
在用户使用视图时才去求相对应的数据。所以视图被称作“虚表”

作用
可以限制对数据的访问,可以给用户授予表的特定部分的访问权限而不是整个表的访问权限。

可以使复杂的查询变的简单。在编写查询后,可以方便地重用它而不必知道他的基本查询细节提供了对相同数据的不同显示。

二、视图的创建和删除

  1. 创建单表视图
CREATE VIEW MYVIEW1
AS
SELECT * FROM EMP;
  1. 创建或 修改一个单表视图
CREATE OR REPLACE VIEW MYVIEW2
AS
SELECT EMPNO,ENAME,JOB,SAL,DEPTNO
FROM EMP
WHERE DEPTNO >=20
  1. 使用视图添加和修改数据
    INSERT INTO MYVIEW1 (EMPNO,ENAME,SAL)VALUES(9999,'AAAA',3000);
  1. 为视图添加相关权限
CREATE OR REPLACE VIEW MYVIEW2
AS
SELECT EMPNO,ENAME,JOB,SAL,DEPTNO
FROM EMP
WHERE DEPTNO >=20

WITH CHECK OPTION   设置视图只能操作WHERE条件的数据
WITH READ ONLY   设置视图只能读
  1. 删除视图
DROP VIEW MYVIEW4;
  1. 统计视图
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;
  1. 基于其它视图的视图
CREATE OR REPLACE VIEW MYVIEW5
AS
SELECT * FROM MYVIEW4 
WHERE 部门编号=10 
  1. 创建多表视图
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
  1. 用Navicat查看/编辑视图
用Navicat查看/编辑视图

三,视图的总结

  1. 视图对应一个查询语句;
    视图是(从若干基本表和(或)其他视图构造出来的)表

  2. 视图进行查询,添加,修改,删除,其实就是对背后的表进行相应操作

  3. 虚表 在创建一个视图时,只是存放的视图的定义,也即是动态检索数据的查询语句,而并不存放视图对应的数据

  4. 视图的好处
    1.安全 可以只显示部分行部分列的数据;可以对添加的数据进行检查;可以设置为只读视图
    2.操作简单

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • ORA-00001: 违反唯一约束条件 (.) 错误说明:当在唯一索引所对应的列上键入重复值时,会触发此异常。 O...
    我想起个好名字阅读 5,453评论 0 9
  • MYSQL 基础知识 1 MySQL数据库概要 2 简单MySQL环境 3 数据的存储和获取 4 MySQL基本操...
    Kingtester阅读 7,857评论 5 116
  • 包装设计以人与物的“互动”为设计核心,逐渐由之前产品信息的承载物拓展为产品信息传递的载体。此时的“互动”不仅仅是使...
    Stars_Ji阅读 1,195评论 0 1
  • 此时的我应该美美的睡上一觉,然后醒来迎接新的挑战,工作和生活,可是我睡不着,因为放不下,因为牵挂,因为烦恼,并不是...
    林微因阅读 438评论 0 2
  • 什么是CORS? CORS(Cross-Origin Resource Sharing ) 全称“跨域资源共享”,...
    singno阅读 797评论 0 0