USE myemployees; 例1:查询姓名中包含a字符的员工名、部门名和工种信息 ①:创建 CREATE VIEW myv1 AS SELECT last_name,department_name,job_title FROM employees e JOIN departments d ON e.department_id = d.department_id JOIN jobs j ON j.job_id = e.job_id;
②:使用 SELECT * FROM myv1 WHERE last_name LIKE '%a%';
2:查询各部门的平均工资级别 ①:创建视图查看每个部门的平均工资 CREATE VIEW myv2 AS SELECT AVG(salary) ag,department_id FROM employees GROUP BY department_id;
②:使用 SELECT myv2.`ag`,g.grade_level FROM myv2 JOIN job_grades g ON myv2.`ag` BETWEEN g.`lowest_sal` AND g.`highest_sal`;
3:查询平均工资最低的部门信息 SELECT * FROM myv2 ORDER BY ag LIMIT 1;
4:查询平均工资最低的部门名和工资 CREATE VIEW myv3 AS SELECT * FROM myv2 ORDER BY ag LIMIT 1;
SELECT d.*,m.ag FROM myv3 m JOIN departments d ON m.`department_id`=d.`department_id`;
CREATE OR REPLACE VIEW myv1 AS SELECT MAX(salary) m,department_id FROM employees GROUP BY deparment_id;
# 常量视图: CREATE OR REPLACE VIEW myv2 AS SELECT 'john' NAME;
# Select中包含子查询: CREATE OR REPLACE VIEW myv3 AS SELECT department_id,(SELECT MAX(salary) FROM employees) 最高工资 FROM departments;
# join: CREATE OR REPLACE VIEW myv4 AS SELECT last_name,department_name FROM employees e JOIN departments d ON e.department_id = d.department_id;
# from一个不能更新的视图 CREATE OR REPLACE VIEW myv5 AS SELECT * FROM myv3;
# where子句的子查询引用了from子句中的表 CREATE OR REPLACE VIEW myv6 AS SELECT last_name,email,salary FROM employees WHERE employee_id IN( SELECT manager_id FROM employees WHERE manager_id IS NOT NULL );