视图
常见的数据库对象
视图概述
为什么使用视图
可以帮助我们使用表中的 部分数据,对其修改可以改变原来表中的值
可以简化查询
控制数据的访问(权限)
视图的理解
- 视图是一个本身没有数据且占用内存很少的虚拟表
[En]
View is a virtual table that does not have data itself and takes up very little memory*
- 视图基于已有的表,可以作为视图基础的表称为基表
[En]
the view is based on the existing table, and the table on which we can base the view is called * base table * *
- 视图的创建和删除 只会影响视图本身;但是当对视图进行修改时,数据表中的数据也会变化, 反之亦然
- 可以将视图理解为,存储起来的SELECT语句
- 不推荐小项目;推荐大项目(可考虑)
[En]
small projects are not recommended; large projects are recommended (can be considered)*
创建视图
在 CREATE VIEW 中创建(简化版)
CREATE VIEW 视图名字
AS 查询语句
对于单表
案例1:视图中的数据位于基表中。
[En]
Case 1: the data in the view is in the base table.
CREATE VIEW VU_emp1
AS
SELECT id,name,salary
FROM emp1;
#视图中字段的起名
方式一:别名
CREATE VIEW VU_emp2
AS
SELECT id emp_id,name,salary monthly_sal
FROM emp1;
方式二:直接命名
CREATE VIEW VU_emp2(emp_id,name,monthly_sal)#与查询的字段要一一对应
AS
SELECT id,name,salary
FROM emp1;
情况二:
视图中的数据不在基表中。
[En]
The data in the view is not in the base table.
#创建视图:各个部门的平均工资(基表中没有)
CREATE VIEW VU_emp2
AS
SELECT department_id,AUG(salary) AUG_sal
FROM empolyees
WHERE id department_id ids not null
GROUP BY department_id;
对于多表
#和多表查询是一样的
CREATE VIEW VU_emp3
AS
SELECT t1.id,t1.name,t2.department_name
FROM employees t1 JOIN departments t2
ON t1.name = t2.name;
利用视图对数据进行格式化
CREATE VIEW VU_emp_dept1
AS
SELECT CONCAT(t1.name,'(',t2.department_name,')')
FROM employees t1 JOIN departments t2
ON t1.name = t2.name;
基于视图创建视图
CREATE VIEW VU_emp_dept1
AS
SELECT 要查询的字段
FROM 视图名字;
查看视图
- 查看数据库的表对象和查看对象
[En]
View the table objects and view objects of the database*
SHOW TABLES;
- 查看视图的结构
DESC 视图名字;
- 查看视图的属性信息
SHOW TABLE STATUS LIKE '视图名字';SHOW TABLE STATUS LIKE '视图名字'\G#有的可以执行
- 查看视图详细定义信息
SHOW CREATE VIEW 视图名字;
更新视图的数据(增删改)
一般情况可以更新
#改视图UPDATE vu_emp1SET salary =6000WHERE id = 2;SELECT *FROM emp1;
#改基表
UPDATE emp1
SET salary =15000
WHERE id = 2;
SELECT *
FROM vu_emp1;
二般更新失败(针对于视图是表中没有的数据)
一般不进行更新
修改和删除视图
修改视图
方式一:使用 CREATE OR REPLACE VIEW修改视图
CREATE OR REPLACE VIEW vn_emp1
AS
SELECT employe_id,name,salary,email#添加字段 email
FROM employees
WHERE salary > 5000;
方式二:ALTER VIEW修改视图
ALTER VIEW vu_emp1
AS
SELECT employe_id,name,salary,email,hire_data#继续添加字段 hire_data
FROM employees
WHERE salary > 5000;
删除视图
DROP VIEW IF EXISTS (视图名字1,视图名字2...);
注:若视图c是基于视图a,b创建的,如果删除a或是b,则会影响视图c的查询。这样的视图c我们需要手动删除,否则会影响使用
总结
视图的优点
- 操作简单
- 减少数据冗余
- 数据安全(控制访问权限)
- 适应灵活多变的需求
- 可以分解复杂的查询逻辑
视图的不足
- 表格结构已改变,需要相应地维护我们构建的视图
[En]
the structure of the table has changed, and the view we built needs to be maintained accordingly*
- 维护成本很高
Original: https://www.cnblogs.com/wht-de-bk/p/16014670.html
Author: T,a,o
Title: MySQL视图
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/505556/
转载文章受原作者版权保护。转载请注明原作者出处!