比如在项目中频繁要查询 商品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语句,表不是 ② 视图没有物理记录,表有 ③ 视图是逻辑概念存在,表是物理空间中的实体内容 ④ 视图是查看表的一种方法,从安全方面看,视图可以防止用户接触数据表,因而用户不知道表结构 ⑤ 视图的建立和删除只影响视图本身,不影响对应的基本表