1 概念:视图是虚拟的表,本身不存储数据
2 应用场景:表特别多数据量特别大的适用,小项目一般用不到
3 基础语法:
CREATE VIEW (view_name)
AS
SELECT (VALUE1,VALUE2...)
FROM TABLE1
WHERE ...
注意:这里视图创建涉及到的表称为基表,针对视图修改数据会影响基表。
4 创建单表视图
CREATE VIEW v_base
AS
SELECT employee_id, last_name, salary
FROM employees
WHERE department_id = 80;
查询就是select * from v_base;
拓展:重命名
CREATE VIEW v_base2
AS
SELECT employee_id e_id, last_name l_nm, salary
FROM emps
WHERE salary > 5000;
在这里基表的employee_id字段在视图中显示为e_id, last_name显示为l_nm
另一种写法:
CREATE VIEW e_base3(e_id, l_nm, salary)
AS
SELECT employee_id, last_name, salary
FROM emps;
5 视图内添加基表不存在的字段
例子:统计各部门的平均工资运用视图查询
CREATE VIEW e_base4_salary
AS
SELECT department_id, AVG(salary) avg_sal
FROM emps
WHERE department_id IS NOT NULL
GROUP BY department_id;
基表内不存在的avg_sal字段将会显示到视图当中。
6 多表视图
CREATE VIEW v_base_emt
AS
SELECT e.employee_id, e.department_id, d.department_name
FROM emps e JOIN dents d
WHERE e.`department_id` = d.`department_id` # 多表查询定义连接关系的字段
7 使用视图对数据进行格式化
CREATE VIEW vu_emp_dept1
AS
SELECT CONCAT(e.lastname,'(',d.department_name,')') emp_info
FROM emps e JOIN depts d
ON e.`department_id` = d.`department_id`
8 基于视图创建视图
CREATE VIEW v_base4
AS
SELECT employee_id, salary
FROM v_base2;
9 查询视图结构
DESCRIBE v_base
额外的属性信息查询
SHOW TABLE STATUS LIKE v_base
代码最后面添加\G使数据分组可读性提高
详细定义信息则SHOW CREATE VIEW v_base
10 更新视图数据
UPDATE v_base
SET salary = 10000
WHERE employee_id = 101;#这会导致基表中的数据改变,反之亦然
11 删除视图数据
DELETE FROM v_base
WHERE employee_id = 101;
注意不能更新的场景!
引用5中的例子AVG(salary),如果
UPDATE e_base4_salary
SET avg_sal = 5000
WHERE department_id = 30;
以及删除操作,都将不被支持在视图中,对于以上的对象。
12 修改视图
方法一:
CREATE OR REPLACE VIEW e_base
(employee_id, last_name, salary, email)
AS
SELECT employee_id, last_name, salary, email
FROM emps
WHERE salary > 7000;
方法2⃣️:
ALTER VIEW e_base
AS
SELECT employee_id, last_name, salary, hire_date
FROM emps;
13 删除视图
DROP VIEW (IF EXISTS)「」
这不会删除基表中的数据,但是将导致以该视图为基表的视图查询失败。
14 总结
将经常使用的查询操作定义为视图,可以简化查询操作,并使存储查询语句而不是数据来减少数据冗余,
更重要的是,
使用视图查询能够提升数据安全,用户将通过加了一层的视图进行数据访问而不再直接访问表。
不足之处,当实际的数据表进行了修改变更,我们需要及时对视图进行维护。
在实际项目中,视图的过多将提升数据库的维护成本。
文章介绍了视图作为数据库中的虚拟表,主要用于简化复杂查询和提供数据安全性。它不存储数据,而是基于基表生成。视图适用于大数据量的场景,可以进行单表和多表查询、数据格式化,并能基于视图创建新的视图。然而,视图的更新和删除操作受到限制,且需随着基表变化进行维护。视图的使用在提升查询效率和数据安全性的同时,也可能增加数据库的维护成本。
1206

被折叠的 条评论
为什么被折叠?



