比如在项目中频繁要查询 商品id、商品名称、商品品牌名称 三个字段的信息
把经常需要的字段存储到一个视图中,直接到该视图获得信息
视图是从一个或多个表中导出的虚拟表,视图的行为与表相似,但视图是虚拟的,视图包含一系列带有数据的行和名称的列。
在视图中用户可以使用select语句查询数据,也可以使用insert、update和delete修改记录[不推荐]。
创建视图
语法:
create [or replace] view 视图名称[(属性列)] as sql语句
create
表示创建视图,or replace表示替换已经创建的视图,可以不设置
属性列 给数据表字段起别名
视图是已经编译好的sql语句,其执行的速度、效率要比原生的sql语句更高。
视图的操作与数据表完全一致,包括select、insert、update、delete等都可以操作
多表或单表都可以创建视图
单表:把一个表中的几个字段查询出来创建视图
多表:把多个表中的若干个字段查询出来创建视图
更新视图有限制,有如下条件的,更新操作都不能执行:
① 视图中没有把实体表的非空字段包含进来
② 定义视图的select语句查询的字段是一个数学表达式
③ 定义视图的select语句查询的字段有使用聚合函数
④ 定义视图的select语句使用了distinct、union、group by或having子句
⑤ 多表视图只能修改,不能删除和添加
查询视图
① desc 视图名称;
//查看视图字段
② show table status like ‘视图名称’;
//查看视图状态
③show create view
视图名称; //查看视图创建语句的
④ select * from information_schema.views where table_name=’视图名称’\G
删除视图
drop view [if exists] 视图名称;
修改视图
create or replace view 视图名称 as sql语句
视图的好处
- 简单化,视图可以简化用户对数据的理解,也可以简化他们的操作。
- 安全性,通过权限可以对视图的数据行、数据列进行授权访问控制
- 运行速度快,视图是已经编译好的sql语句,运行速度快
视图和表是什么关系
① 视图编译好的sql语句,表不是
② 视图没有物理记录,表有
③ 视图是逻辑概念存在,表是物理空间中的实体内容
④ 视图是查看表的一种方法,从安全方面看,视图可以防止用户接触数据表,因而用户不知道表结构
⑤ 视图的建立和删除只影响视图本身,不影响对应的基本表