📜  oracle sql 创建视图 - SQL (1)

📅  最后修改于: 2023-12-03 15:18:08.775000             🧑  作者: Mango

Oracle SQL 创建视图 - SQL

什么是视图?

在关系型数据库中, 视图是一个虚拟的表, 是通过一个查询语句(SELECT语句)定义的. 它并不实际存储数据, 而是根据基础表的数据来呈现不同的视角.

视图可以简化复杂的查询操作, 只需要向视图查询, 而不需要查询多个关联表. 同时它也可以增强数据的安全性, 可以通过视图来对基础表进行控制, 防止对某些敏感数据的直接访问.

如何创建视图?

创建视图使用CREATE VIEW语句, 语法如下:

CREATE [OR REPLACE] [FORCE|NO_FORCE] [VIEW] view_name
[(column1, column2, ...)] AS subquery
[WITH CHECK OPTION [CONSTRAINT constraint]]
[WITH READ ONLY [CONSTRAINT constraint]]
  • [OR REPLACE]: 如果存在同名的视图, 会被替换掉.
  • [FORCE|NO_FORCE]: FORCE表示以强制模式创建, 即在视图不存在时创建; NO_FORCE表示如果视图已存在, 则会报错.
  • [VIEW]: 表示视图, 可以省略.
  • view_name: 视图名, 必填.
  • [(column1, column2, ...)] : 可以指定视图的列名, 可选.
  • AS subquery: 子查询语句, 必填.
  • WITH CHECK OPTION: 约束选项, 表示插入或更新行时必须符合视图的筛选条件.
  • WITH READ ONLY: 只读选项, 表示视图只能查询, 不能插入, 更新或删除.

示例:

CREATE VIEW employee_v AS
SELECT emp_id, emp_name, salary
FROM employee
WHERE salary > 5000;

以上语句创建了一个名为employee_v的视图, 显示了所有工资大于5000的员工的ID, 姓名和薪水.

视图的使用

使用视图与查询表的语法一致, 只需使用视图名代替表名即可.

SELECT * FROM employee_v;

视图也可以作为其他查询语句的子查询.

示例:

SELECT department, AVG(salary) as avg_salary
FROM employee_v
GROUP BY department;

以上语句计算了每个部门的薪水平均数, 并显示在结果集中.

总结
  • 视图是虚拟表, 通过查询语句定义.
  • 可以简化复杂的查询操作, 以及控制数据访问权限.
  • 使用CREATE VIEW语句创建视图, 使用SELECT语句定义子查询.
  • 使用视图与查询表的语法一致.
  • 视图也可以作为其他查询语句的子查询.