视图是一个逻辑上的表格,是由 SELECT 语句定义的虚拟表格,并不真正存在于数据库中。在 SQL 中,视图可以分为简单视图和复杂视图。下面将详细讲解二者的区别。
一、简单视图
1. 定义
简单视图是一个包含基本列的 SELECT 语句,其用于简化复杂 SQL 查询并提高查询效率。简单视图只包含一张基本表格。
2. 特点
- 与基本表格类似,简单视图可以进行增删改查等操作,但对于对视图进行的任何改变都不会对基本表格造成影响。
- 简单视图只能基于同一数据库中的表格创建,不能使用外部表格或自定义函数等资源。
3. 示例
下面是一个简单视图的创建过程示例。创建一个简单视图,用于显示公司的雇员编号、姓名和薪水。
CREATE VIEW employee_info_view AS
SELECT emp_no, first_name, last_name, salary
FROM employees
JOIN salaries
ON employees.emp_no = salaries.emp_no;
二、复杂视图
1. 定义
复杂视图是基于 SQL 查询,视图本身包含多个表格、计算字段、聚合函数和子查询等复杂逻辑的视图。复杂视图是从一个或多个简单视图或表格衍生出来的。
2. 特点
- 复杂视图通常包含多个基本表格或简单视图,其逻辑复杂性较高。
- 与简单视图类似,复杂视图不会影响基本表格的数据,但它们可能会影响视图之间的查询性能。
- 由于复杂视图通常耗费更多的计算资源,建议仅在需要时使用。
3. 示例
下面是一个复杂视图的创建过程示例。创建一个复杂视图,用于显示每个部门的平均薪水和部门经理姓名。
CREATE VIEW department_info_view AS
SELECT departments.dept_name, AVG(salaries.salary) as avg_salary,
(SELECT CONCAT(first_name,' ',last_name) FROM employees WHERE employees.emp_no = dept_manager.emp_no) as manager_name
FROM employees
JOIN salaries ON employees.emp_no=salaries.emp_no
JOIN dept_emp ON employees.emp_no=dept_emp.emp_no
JOIN departments ON departments.dept_no=dept_emp.dept_no
JOIN dept_manager ON dept_manager.dept_no=departments.dept_no
GROUP BY departments.dept_name;
上面的 SQL 查询涉及到了多个表格和计算字段,用子查询获取部门经理姓名,用聚合函数获取每个部门的平均薪水。这个 SQL 查询比较复杂,但创建视图后,我们可以通过简单的视图名查询结果,节省写复杂查询的时间和劳动力。
以上是关于 SQL 中简单视图和复杂视图的区别的攻略,两者在定义、特点和示例上有所不同,但都是 SQL 中非常重要的概念。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SQL中简单视图和复杂视图的区别 - Python技术站