CREATEVIEW employee_department_view AS SELECT employees.employee_name, departments.department_name, employees.salary FROM employees JOIN departments ON employees.department_id = departments.department_id;
2. 查询视图(SELECT)
查询视图与查询表的方式相同。你可以像查询表一样查询视图。
示例:
1
SELECT*FROM employee_department_view;
3. 更新视图(UPDATE VIEW)
在某些情况下,你可以通过视图更新底层表的数据。视图必须是可更新的,即视图的定义必须满足一定的条件(如没有 GROUP BY、HAVING、DISTINCT 等)。
示例:
1 2 3
UPDATE employee_department_view SET salary =6000 WHERE employee_name ='Alice';
4. 删除视图(DROP VIEW)
你可以使用 DROP VIEW 语句删除视图。
语法:
1
DROPVIEW view_name;
示例:
1
DROPVIEW employee_department_view;
5. 修改视图(ALTER VIEW)
在某些数据库系统中,你可以使用 ALTER VIEW 语句修改视图的定义。
语法:
1 2 3 4
ALTERVIEW view_name AS SELECT columns FROM tables WHERE conditions;
示例:
1 2 3 4 5
ALTERVIEW employee_department_view AS SELECT employees.employee_name, departments.department_name, employees.salary FROM employees JOIN departments ON employees.department_id = departments.department_id WHERE employees.salary >5000;
6. 视图的优点
简化查询:视图可以将复杂的查询封装起来,简化用户的查询操作。
数据安全:视图可以限制用户只能访问特定的数据,从而提高数据的安全性。
数据独立性:视图可以隐藏底层表的复杂性,使用户无需了解底层表的结构。
逻辑数据分组:视图可以将多个表的数据逻辑上组合在一起,方便用户进行数据分析。
7. 视图的缺点
性能问题:视图的查询性能可能不如直接查询底层表,尤其是在视图定义复杂的情况下。
更新限制:视图的更新操作受到限制,不是所有的视图都可以进行更新操作。
存储开销:虽然视图本身不存储数据,但视图的定义会占用存储空间。
注意
1
CreatEVIEW view_name AS 子查询语句 [WITHCHECK OPTION]
WITH CHECK OPTION是指当创建后,如果更新视图中的数据,是否要满足子查询中的条件表达式,不满足将无法插入,创建后,我们就可以使用SELECT来直接查询视图上的数据,因此还能在视图上的基础导出其他视图