CREATEOR REPLACE VIEW v_emp_basic AS SELECT empno, ename FROM emp;
3. 创建一个视图,此视图要包括以下信息:员工编号,员工姓名,部门编号,部门名称。
1 2 3 4
CREATEOR REPLACE VIEW v_emp_dept AS SELECT e.empno, e.ename, e.deptno, d.dname FROM emp e JOIN dept d ON e.deptno = d.deptno;
4. 创建一个视图,此视图要包括以下信息:员工编号,员工姓名,经理编号,经理姓名。
1 2 3 4
CREATEOR REPLACE VIEW v_emp_manager AS SELECT e.empno AS emp_no, e.ename AS emp_name, m.empno AS mgr_no, m.ename AS mgr_name FROM emp e JOIN emp m ON e.mgr = m.empno;
5. 创建一个视图,此视图要包括以下信息:部门编号,员工个数。
1 2 3 4
CREATEOR REPLACE VIEW v_dept_emp_count AS SELECT deptno, COUNT(empno) AS emp_count FROM emp GROUPBY deptno;
6. 创建一个视图,此视图要包括以下信息:部门编号,部门名称,员工个数。
1 2 3 4 5
CREATEOR REPLACE VIEW v_dept_emp_details AS SELECT d.deptno, d.dname, COUNT(e.empno) AS emp_count FROM dept d LEFTJOIN emp e ON d.deptno = e.deptno GROUPBY d.deptno, d.dname;
CREATEOR REPLACE VIEW v_dept_salary_summary AS SELECT d.deptno, d.dname, COUNT(e.empno) AS emp_count, SUM(e.sal) AS total_salary, MAX(e.sal) AS max_salary, MIN(e.sal) AS min_salary, AVG(e.sal) AS avg_salary FROM dept d LEFTJOIN emp e ON d.deptno = e.deptno GROUPBY d.deptno, d.dname;
8. 视图的优缺点
优点:
简化查询:将复杂查询封装在视图中,简化 SQL 语句。
数据安全:通过视图限制用户访问敏感数据。
逻辑独立性:视图可以屏蔽底层表结构的变化。
重用性:视图可以被多个查询或应用程序重复使用。
缺点:
性能问题:视图是基于查询的虚拟表,每次访问视图时都会执行底层查询,可能导致性能下降。
更新限制:某些视图(如包含聚合函数或连接的视图)不可更新。
维护成本:视图的定义需要维护,尤其是在底层表结构发生变化时。
9. 查询员工表中,第 5 至第 9 条记录。
1 2 3 4
CREATEOR REPLACE VIEW v_emp_pagination AS SELECT* FROM (SELECT ROWNUM AS rn, e.*FROM emp e) WHERE rn BETWEEN5AND9;