MySQL基础--视图
- 视图的概念:MySQL从5.0.1版本开始提供视图功能。一种虚拟存在的表,行和列的数据来自定义视图的查询中使用的表,并且是在使用视图时动态生成的,只保存了sql逻辑,不保存查询结果
- 应用场景:当我们对同一条sql语句多次使用时,我们不妨将他封装到一个视图中。封装到视图中当我们使用时就像一张表一样方便我们快速查询到我们想要的数据。
- 创建视图:
- 创建(j将查询语句进行封装)
- create view 视图名 as (查询语句);
- create view v1 as select * from a inner join b where a.id=b.id;
- 使用
- select * from v1 where id>10;
- 创建(j将查询语句进行封装)
- 视图的用途:
- 重用了sql语句
- 简化了复杂的sql操作,不必担心他的查询细节
- 保护数据,提高安全性,视图和原表相分离
- 视图的修改
- create or replace view 视图名 as 查询语句;
- alter view 视图名 as 查询语句;
- 视图的删除
- drop view 视图名1,视图名2;
- 查看视图
- desc 视图名
- show create view 视图名;
- 补充:show create table 表名;可以查看表的结构
- 视图的更新
- 创建一个视图:create or replace view v1 as select * from user;
- 查询视图中的数据:select * from v1;
- 对视图进行插入数据:insert into view v1(字段名1,字段名2) values(值1,值2);----》对原始表也会进行修改插入
- 修改视图中数据:update v1 set 字段名=新值 where 筛选条件; 原表也会进行修改
- 删除视图中数据:delect from v1 where 筛选条件;原表也会进行删除操作
- 视图的可更新性和视图中查询的定义有关系,以下类型的视图是不能更新的。.
-
包含以下关键字的sql语句:
- 分组函数、distinct、 group by、having、union 或者union all
- 常量视图
- Select中包含子查询
- join
- from一个不能更新的视图
- where子句的子查询引用了from子句中的表
-
- 视图和表的对比
创建语法的关键字 | 是否实际占用了物理空间 | 使用 | |
视图 | create view | 只保存了sql逻辑 | 增删高改查,一般不能增删改 |
表 | create table | 保存了数据 | 增删改 |