MySQL视图

视图的理解

  • 视图可以看作是一个虚拟表,本身是不存储数据的,视图的本质就是存储起来的SELECT语句。
  • 视图SELECT语句中涉及到的表称为基表。
  • 针对视图做DML操作会影响到对应的基表中的数据,反之亦然。
  • 视图本身的删除,不会导致基本中的数据被删除。
  • 视图的应用场景:针对小型项目,不推荐使用视图。针对大型项目,可以考虑使用视图。
  • 视图的优点:简化查询,控制数据的访问。

创建视图

精简版

CREATE VIEW 视图名称
AS 查询语句

举例:

CREATE VIEW vu_emp1
AS
SELECT employee_id,last_name,salary
FROM emps;

如果没指定字段的名称,则视图字段中的名字和SELECT中的字段名称相同。

如果SELECT中指定了别名,则视图中的字段名称为指定的别名。

# SELECT语句中的别名会作为视图字段的名称
CREATE VIEW vu_emp2
AS
SELECT employee_id emp_id,last_name lname,salary
FROM emps
WHERE salary > 8000;

也可以使用以下方式指定视图中字段的名称

# 小括号内字段个数与SELECT中字段个数相同
CREATE VIEW vu_emp3(emp_id,NAME,monthly_sal)
AS
SELECT employee_id,last_name,salary
FROM emps
WHERE salary > 8000;

注意:小括号内字段的个数要与SELECT中的字段个数相同。

多表创建视图

CREATE VIEW vu_emp_dept
AS
SELECT e.employee_id, d.department_id, d.department_name
FROM emps e JOIN depts d
ON e.`department_id`=d.`department_id`

基于视图创建视图

CREATE VIEW vu_emp4
AS
SELECT employee_id,last_name
FROM vu_emp1;

查看视图

语法1:查看数据库的表对象、视图对象。

SHOW TABLES;

语法2:查看视图的结构。

DESC vu_emp1;

语法3:查看视图的属性信息。

SHOW TABLE STATUS LIKE 'vu_emp4';

语法4:查看视图的详细定义信息。

SHOW CREATE VIEW vu_emp4;

更新视图中的数据

UPDATE vu_emp1
SET salary = 20000
WHERE employee_id = 101;

更新视图中的数据会改基表中的数据,同理,更改基本中的数据也会更改视图中的数据。

删除视图中的数据,基表中的数据也会被删除掉,反之亦然。

DELETE FROM vu_emp1
WHERE employee_id = 101;

不是所有的视图更新都能成功

例如:集合函数

image-20221022153527537

image-20221022153740510

修改视图

# 方式1
CREATE OR REPLACE VIEW vu_emp1
AS
SELECT employee_id,last_name,salary,email
FROM emps
WHERE salary > 7000;

# 方式2
ALTER VIEW vu_emp1
AS
SELECT employee_id,last_name,salary,email,hire_date
FROM emps;

删除视图

DROP VIEW vu_emp4;
DROP VIEW IF EXISTS vu_emp2,vu_emp3;

更多内容可以访问我的博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值