(11)视图

什么是视图:
  视图是一个虚拟表,其内容由查询定义
  同真实的表一样,视图包含一系列带有名称的列和行数据
  行和列数据来自定义视图的查询所引用的表,并且在引用视图时动态生成
  简单的说视图是由select结果组成的表

视图的特性:
  视图是对若干张基本表的引用,一张虚表,查询语句执行的结果
  不存储具体的数据(基本表数据发生了改变,视图也会跟着改变)
  可以跟基本表一样,进行增删改查操作(增删改操作有条件限制)

视图的作用:
安全性
  创建一个视图,定义好该视图所操作的数据,之后将用户权限与视图绑定这样的方式是使用到了一个特性:grant 语句可以针对视图进行授予权限

查询性能提高
提高了数据的独立性

视图机制

替换式 将视图公式替换后,当成一个整体sql语句进行处理
具化式 先处理视图结果,后处理外面的查询需求

创建视图

create view 视图命名 as (select 查询结果);
完整过程如下:

CREATE [ALGORITHM] = {UNDEFINED|MERGE|TEMPTABLE} 
		VIEW 视图名 [(属性清单)]
		AS SELECT 语句
		[WITH [CASCADED|LOCAL] CHECK OPTION];

ALGORITHM 参数
   merge 处理方式替换式,可以进行更新真实表中的数据, 视图数据更改,基表数据也会改,但有些情况不能改
   TEMPTABLE 具化式,由于数据存储在临时表中,所以不可以进行更新操作
   UNDEFINED 没有定义 ALGORITHM 参数,MYsQL更倾向于选择替换方式,因为更高效
将如下查询语句查询的结果作为视图
WITH CHECK OPTION
   更新数据时不能插入或更新不符合视图限制条件的记录

SELECT * FROM emp  WHERE salary > 2000;

在这里插入图片描述

CREATE VIEW emp_salary_view AS (SELECT * FROM emp  WHERE salary > 2000);
CREATE ALGORITHM = MERGE VIEW emp_salary2 AS (SELECT ename,salary FROM emp);

基于视图查询内容

SELECT * FROM emp_salary_view WHERE job='经理';

更新视图

CREATE OR REPLACE VIEW 新视图名	AS (SELECT查询结果);

删除视图

drop view 视图名称;

视图不可更新部分

聚合函数
DISTINCT 关键字
GROUP BY 子句
HAVING 子句
UNION 子句
FROM 子句中包含多个表
SELECT 语句中引用了不可更新视图
只要视图当中的数据不是来自基表,就不能直接修改

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值