基本语法

在CREATE VIEW语句中嵌入子查询

  1. CREATE [OR REPLACE]
  2. [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]
  3. VIEW 视图名称 [(字段列表)]
  4. AS 查询语句
  5. [WITH [CASCADED|LOCAL] CHECK OPTION]
  1. CREATE VIEW 视图名称
  2. AS 查询语句

创建单表视图

  1. # 情况1:视图中的字段与基表中的字段有对应关系
  2. CREATE VIEW vu_emp1
  3. AS
  4. SELECT employee_id,last_name,salary
  5. FROM emps;
  6. SELECT * FROM vu_emp1;
  7. #确定视图中字段名的方式1:
  8. CREATE VIEW vu_emp2
  9. AS
  10. SELECT employee_id emp_id,last_name lname,salary #查询语句中字段的别名会作为视图中字段的名称出现
  11. FROM emps
  12. WHERE salary > 8000;
  13. SELECT * FROM vu_emp2;
  14. #确定视图中字段名的方式2:
  15. CREATE VIEW vu_emp3(emp_id,NAME,monthly_sal) #小括号内字段个数与SELECT中字段个数相同
  16. AS
  17. SELECT employee_id,last_name,salary
  18. FROM emps
  19. WHERE salary > 8000;
  20. SELECT * FROM vu_emp3;
  21. #情况2:视图中的字段在基表中可能没有对应的字段
  22. CREATE VIEW vu_emp_sal
  23. AS
  24. SELECT department_id,AVG(salary) avg_sal
  25. FROM emps
  26. WHERE department_id IS NOT NULL
  27. GROUP BY department_id;
  28. SELECT * FROM vu_emp_sal;

创建多表联合视图

  1. CREATE VIEW vu_emp_dept
  2. AS
  3. SELECT e.employee_id,e.department_id,d.department_name
  4. FROM emps e JOIN depts d
  5. ON e.`department_id` = d.`department_id`;
  6. SELECT * FROM vu_emp_dept;

利用视图对数据进行格式化

我们经常需要输出某个格式的内容,比如我们想输出员工姓名和对应的部门名,对应格式为 emp_name(department_name),就可以使用视图来完成数据格式化的操作:

  1. CREATE VIEW vu_emp_dept1
  2. AS
  3. SELECT CONCAT(e.last_name,'(',d.department_name,')') emp_info
  4. FROM emps e JOIN depts d
  5. ON e.`department_id` = d.`department_id`;
  6. SELECT * FROM vu_emp_dept1;

基于视图创建视图

  1. CREATE VIEW vu_emp4
  2. AS
  3. SELECT employee_id,last_name
  4. FROM vu_emp1;
  5. SELECT * FROM vu_emp4;