灵明无著,物来顺应,未来不迎,当下不杂,既过不恋,是之谓虚而已矣,是之谓诚而已矣。
8月的处暑渐渐离我们远去,天气一天天的凉了起来,希望我们的心也能跟着这天气渐渐凉下来,真正能做到上面这句话。
接下来由我带领各位读者继续学习MySql的视图部分的内容。
视图的创建视图:MySql从5.0.1版本开始提供视图功能。一种虚拟存在的表, 行和列的数据来定义视图的查询中使用的表,并且是在使用视图的动态生成,只保存了SQL逻辑, 不保存查询结果。应用场景:多个地方用到同样的的查询结果。该查询结果使用的SQL语句教复杂。
先来一个案例领略一下视图的魅力。#正常查询写法查询姓张的同学与学科SELECT s.studentname,m.majornameFROM student sINNER JOIN major m ON s.majorid = m.majoridWHERE s.studentname LIKE '%张%';
#视图封装写法CREATE VIEW shituASSELECT s.studentname,m.majornameFROM student sINNER JOIN major m ON s.majorid = m.majorid;#运用视图(得到与上面图片一样的结果)SELECT * FROM shitu WHERE studentname LIKE '%张%';
在HeiDiSQL中创建视图
查看视图详情
#创建视图语法:CREATE VIEW 视图名AS查询语句优点:重用SQL语句简化复杂的SQL的操作,不必知道它的查询细节保护数据,提高安全性(隐藏原始表的信息)#切换库USE myemployees;#1.查询邮箱中包含a字符的员工名,部门名和工种信息。#1.正常查询方法SELECT e.last_name,d.department_name,j.job_title,e.emailFROM employees eINNER JOIN departments dON e.department_id=d.department_idINNER JOIN jobs jON e.job_id=j.job_idWHERE e.email LIKE'%a%';#视图查询方法 #①创建视图CREATE VIEW ayuan ASSELECT e.last_name,d.department_name,j.job_title,e.emailFROM employees eINNER JOIN departments dON e.department_id=d.department_idINNER JOIN jobs jON e.job_id=j.job_id;
#②使用视图查询SELECT * FROM ayuan WHERE email LIKE '%a%';
#2.查询各部门的平均工资级别#第一步创建视图,查出平均工资CREATE VIEW pjASSELECT ROUND(AVG(salary),2) ag,department_idFROM employeesGROUP BY department_id;
#第二步连接查询SELECT pj.ag,g.grade_levelFROM pjINNER JOIN job_grades gON pj.ag BETWEEN g.lowest_sal AND g.highest_sal;
#3.查询平均工资最低的部门#复用上一题的SQL语句逻辑,查出平均工资。CREATE VIEW pjASSELECT ROUND(AVG(salary),2) ag,department_idFROM employeesGROUP BY department_id;#查出最低工资SELECT * FROM pj ORDER BY ag LIMIT 1;
#4.查询平均工资最低的部门名和工资#思路1.视图也可以套视图#1.第一步CREATE VIEW pj2ASSELECT *FROM pjORDER BY ag LIMIT 1;#2.第二步SELECT d.department_id,d.department_name,p.agFROM pj2 pINNER JOIN departments dON p.department_id=d.department_id;#思路2.复用第二题的SQL语句逻辑,查出平均工资SELECT d.department_name,pj.ag,d.department_idFROM pjINNER JOIN departments dON pj.department_id=d.department_idORDER BY ag LIMIT 1;
视图的修改修改视图: 语法方式一CREATE OR REPLACE VIEW 视图名AS查询语句;视图存在修改,视图不存在创建。#示例:修改视图#1.查看原视图SELECT * FROM pj2;#2.修改视图CREATE OR REPLACE VIEW pj2ASSELECT AVG(salary),job_idFROM employeesGROUP BY job_id;
修改视图语法:方式二ALTER VIEW 视图名AS查询语句;只能修改,不能创建。ALTER VIEW pj2ASSELECT * FROM employees;
删除视图语法:DROP VIEW 视图名,...;可以一次性删除多个。DROP VIEW pj,pj2;
查看视图结构#第一种方式DESC pj2;
#第二种方式: 完整的展示视图创建的语句(LINUX下查看)SHOW CREATE VIEW pj2;
案例:视图的创建#一.创建视图emp_v1,要求查询电话号码以‘011’开头的员工姓名和工资,邮箱。CREATE OR REPLACE VIEW emp_v1ASSELECT last_name,first_name,salary,emailFROM employeesWHERE phone_number LIKE '011%';查看视图SELECT * FROM emp_v1;
#二.创建视图emp_v2,要求查询部门的最高工资高于12000的部.........