八、视图

含义

​ 虚拟表,和普通表一样使用。Mysql 5.1版本出的新特性,通过普通表动态生成的数据,只保存了sql逻辑,不保存查询结果。

应用场景

  • 多个地方用到用样的查询结果
  • 该查询结果使用的 sql 比较复杂
简单示例
mysql> select * from account;
+----+----------+---------+
| id | username | balance |
+----+----------+---------+
|  2 | 哈哈哈   |    1000 |
|  3 | 嘿嘿和   |    2000 |
|  4 | 嘻嘻嘻   |    1000 |
|  5 | 拉拉阿拉 |       1 |
|  6 | 哇哇哇   |     545 |
+----+----------+---------+
5 rows in set (0.06 sec)

mysql> SELECT * FROM `account` where username like '%哈%';
+----+----------+---------+
| id | username | balance |
+----+----------+---------+
|  2 | 哈哈哈   |    1000 |
+----+----------+---------+
1 row in set (0.06 sec)

mysql> create view select_like_username as (SELECT * FROM `account` where username like '%哈%');
Query OK, 0 rows affected (0.01 sec)
mysql> select * from select_like_username where username like '%哈%';
+----+----------+---------+
| id | username | balance |
+----+----------+---------+
|  2 | 哈哈哈   |    1000 |
+----+----------+---------+
1 row in set (0.07 sec)

视图好处
  • 重用sql语句
  • 简化复杂的sql操作,不许知道它的查询细节
  • 保护数据,提高安全性
视图的修改
方式一

​ create or replace view 视图名 as 查询语句;

方式二

​ alter view 视图名 as 查询语句;

视图的删除
语法

​ drop view 视图名,视图名,…; # 可删除多个

查看视图
语法

​ desc 视图名;

​ show create view 视图名;

视图的更新
语法
# 创建视图
create or replace view select_all_account as (SELECT * FROM `account`);
# 查看
select * from select_all_account;
# 插入
insert into select_all_account values(null,'张飞',111);
# 修改
update select_all_account set username = '关云长' where id = 7;
# 删除
delete from select_all_account where id = 7;
视图的可更新性和视图中查询的定义有关系,以下类型的视图是不能更新的
  • 包含以下关键字的 sql 语句:分组函数、distinct、group by、having、union或者union all
  • 常量视图
  • Select中包含子查询
  • jion
  • from一个不能更新的视图
  • where子句的子查询引用了from子句中的表
视图和表的对比
创建语法的关键字是否占用物理内存使用
视图create view几乎不占用,保存了 sql 逻辑增删改查
create table占用,保存了数据增删改查
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值