二十一、MySQL基础系列笔记之视图
什么是视图
视图(View)是一种虚拟存在的表,对于使用视图的用户来说基本上是透明的。视图并不在数据库中实际存在,行和列数据来自定义视图的查询中使用的表,且是在使用视图时动态生成的。
相对于普通表而言,视图的优势
- **简单。**使用视图不需要关心对应的表结构、关联条件、筛选条件,视频是已经过滤好的复合条件的结果集;
- **安全。**使用视图,只能访问被允许查询的结果集,对于的权限管理并不能限制某个行和某个列,但通过视图可以实现;
- **数据独立。**视图结构一旦确定,可屏蔽表结构变化对用户的影响,源表增加列对视图无影响;源表修改列名,可通过修改视图来解决。
视图和表的区别
语法 | 实际是否占用物理空间 | 使用 | |
---|---|---|---|
视图 | CREATE VIEW | 只保存sql逻辑 | 增删改查(实际使用查询居多) |
表 | CREATE TABLE | 保存数据 | 增删改查 |
创建视图
准备工作:建表并插入数据
CREATE TABLE test02(
name varchar(20),
email varchar(40)
);
INSERT INTO test02 VALUES ('lisi','lisi@163.com'),('wangwu','wangwu@163.com');
语法
CREATE VIEW 视图名 AS 查询语句;
案例
CREATE VIEW view_test02 AS SELECT * FROM test02;
mysql> select * from view_test02;
+--------+----------------+
| name | email |
+--------+----------------+
| lisi | lisi@163.com |
| wangwu | wangwu@163.com |
+--------+----------------+
查看视图
查看视图结构
语法
DESC/DESCRIBE 视图名;
案例
desc view_test02;
查看视图基本信息
语法
SHOW TABLE STATUS LIKE ‘视图名’;
案例
SHOW TABLE STATUS LIKE 'view_test02' \G;
查看视图详细信息
语法
SHOW CREATE VIEW '视图名';
案例
SHOW CREATE VIEW view_test02;
修改视图
准备工作:为test02表增加nick_name列;
ALTER TABLE test02 ADD nick_name VARCHAR(40) DEFAULT 'word';
语法
# 方式一
CREATE OR REPLACE VIEW 视图名 AS 查询语句;
# 方式二
ALTER VIEW 视图名 AS 查询语句;
案例
# 方式一
CREATE OR REPLACE VIEW view_test02 AS SELECT * FROM test02;
# 方式二
ALTER VIEW view_test02 AS SELECT name FROM test02;
删除视图
语法
DROP VIEW [IF EXISTS] 视图名;
案例
DROP VIEW IF EXISTS view_test02;
增加数据与修改数据的操作与操作表是一致的。
2020-11-01
请登录后再评论