MySQL

26-视图

2022-08-31  本文已影响0人  紫荆秋雪_文

一、常见的数据库对象

二、视图

三、创建视图

CREATE [OR REPLACE] 
[ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}] 
VIEW 视图名称 [(字段列表)] 
AS 查询语句 
[WITH [CASCADED|LOCAL] CHECK OPTION]

1、创建单表视图

CREATE OR REPLACE VIEW view_emp
AS
SELECT id, name
FROM emp;
SELECT *
FROM view_emp;
CREATE OR REPLACE VIEW view_emp_avg
AS
SELECT dep_id, AVG(salary)
FROM emp
GROUP BY dep_id;

小结

2、创建多表联合视图

CREATE VIEW view_emp_dept(emp_id, emp_name, dept_name)
AS
SELECT e.id, e.name, t.name
FROM emp e
         JOIN dept t ON e.dep_id = t.id;

3、基于视图创建视图

CREATE VIEW view_view_emp_dept(id, name, dept_name)
AS
SELECT ve.id, ved.emp_name, ved.dept_name
FROM view_emp ve
         JOIN view_emp_dept ved ON ve.id = ved.emp_id;

四、更新视图的数据

1、新增数据

INSERT INTO view_emp
VALUES (1, 'Raven');
SELECT *
FROM view_emp
ORDER BY id;
通过视图来新增数据.png
SELECT *
FROM emp
ORDER BY id;
通过视图来新增数据从而在基表中新增数据.png

小结

2、更新数据

UPDATE view_emp
SET name = '111'
WHERE id = 1;

3、删除操作

DELETE
FROM view_emp
WHERE id = 1;

小结

虽然可以更新视图数据,但总的来说,视图作为 虚拟表,主要用于 方便查询 不建议更新视图的数据。对视图数据的更改,都是通过对实际数据表里数据的操作来完成的

五、修改、删除视图

1、修改视图

CREATE OR REPLACE VIEW view_emp_dept(emp_id, emp_name, salary, dept_name)
AS
SELECT e.id, e.name, e.salary, t.name
FROM emp e
         JOIN dept t ON e.dep_id = t.id;
ALTER VIEW view_emp_dept(emp_id, emp_name, salary, dept_name)
AS
SELECT e.id, e.name, e.salary, t.name
FROM emp e
         JOIN dept t ON e.dep_id = t.id;

2、删除视图

DROP VIEW IF EXISTS view_view_emp_dept;

六、小结

1、视图的优点

2、视图的不足

七、练习

#1. 使用表employees创建视图employee_vu,其中包括姓名(LAST_NAME),员工号(EMPLOYEE_ID),部门 号(DEPARTMENT_ID)
CREATE VIEW employee_vu(last_name, emp_id, dept_id)
AS
SELECT last_name, employee_id, department_id
FROM employee;

#2. 显示视图的结构
DESC employee_vu;

# 3. 查询视图中的全部内容
SELECT *
FROM employee_vu;

# 4. 将视图中的数据限定在部门号是80的范围内
CREATE OR REPLACE VIEW employee_vu(last_name, emp_id, dept_id)
AS
SELECT last_name, employee_id, department_id
FROM employee
WHERE department_id = 80;

# 准备
CREATE TABLE IF NOT EXISTS employee
AS
SELECT *
FROM atguigudb.employees;
USE test;

上一篇 下一篇

猜你喜欢

热点阅读