【MySQL笔记】视图的创建与使用(VIEW)

视图一方面可以帮我们使用表的一部分而不是所有的表,另一方面也可以针对不同的用户制定不同的查询视图。比如,针对一个公司的销售人员,我们只想给他们看部分数据,而某些特殊的数据,比如采购的价格,则不会提供给他

目录

视图的理解

创建视图

创建单表视图

利用视图对数据进行格式化

基于视图创建视图

查看视图 

更新视图数据

不可更新的视图 

删除视图 

删除视图数据 

删除视图 

视图的优点


视图的理解

1. 视图是一种虚拟表,本身是不具有数据的,占用很少的内存空间,它是 SQL 中的一个重要概念

2. 视图建立在已有表的基础上,视图赖以建立的这些表称为基表

                                  

3. 视图的创建与删除只影响视图本身,不影响对应的基表。但是当对视图中的数据进行增加、删除和修改操作时,数据表中的数据会相应地发生变化,反之亦然

4. 向视图提供数据内容的语句为 SELECT 语句,可以将视图理解为存储起来的 SELECT 语句

创建视图

创建单表视图

#视图中的字段与基表的字段有对应的关系
CREATE VIEW vu_emp
AS
SELECT id,name,salary
FROM emps;

CREATE VIEW vu_emp1(emp_id,emp_name,monthly_sal)
AS
SELECT id,name,salary
FROM emps
WHERE salary > 5000;

#视图中的字段在基表中可能没有对应的字段
CREATE VIEW vu_emp_sal
AS
SELECT id,AVG(salary) avg_sal
FROM emps
WHERE id IS NOT NULL
GROUP BY id;

利用视图对数据进行格式化

我们经常要输出某个格式的内容,比如我们想输出员工姓名和对应的部门名,对应格式为emp_name(department_name),就可以使用视图来完成数据格式化的操作

CREATE VIEW emp_depart
AS
SELECT CONCAT(last_name,'(',department_name,')') AS emp_dept
FROM employees e JOIN departments d
WHERE e.department_id = d.partment_id;

基于视图创建视图

CREATE VIEW vu_emp
AS
SELECT id,name
FROM vu_emp1;

查看视图 

查看数据库的表对象、视图对象

SHOW TABLES;

查看视图的结构 

DESC 视图名称;

查看视图的属性信息

SHOW TABLE STATUS LIKE '视图名称';

 查看视图的详细定义信息

SHOW CREATE VIEW 视图名称;

更新视图数据

更新表中的数据,也会导致视图中的数据更改,反之亦然

UPDATE vu_emp
SET salary = 10000
WHERE id = 101;

UPDATE emps
SET salary = 10000
WHERE id = 101;

CREATE OR REPLACE VIEW vu_emp1
AS
SELECT id,name,salary
FROM emps
WHERE salary > 5000;

ALTER VIEW vu_emp1
AS
SELECT id,name,salary
FROM emps;

不可更新的视图 

删除视图 

删除视图数据 

删除表中的数据,也会导致视图中的数据被删除,反之亦然

DELETE FROM vu_emp
WHERE id = 101;

删除视图 

删除视图只是删除视图的定义,并不会删除基表的数据

DROP VIEW vu_emp;

DROP VIEW IF EXISTS vu_emp2,vu_emp3; #如果存在,才删除

视图的优点

 

  • 4
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

java小白。。

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值