厦门网站代理沈阳市住房和城乡建设厅网站
厦门网站代理,沈阳市住房和城乡建设厅网站,wordpress新写文章会卡死,广告版面设计图片简单查询、复杂查询 简单查询: 单表 复杂查询: 1. 子查询(嵌套查询) 2. 连接查询 ************************连接查询**************************** 一.什么是连接查询 把多张表连接在一起,一块查 二.什么时候使用 数据来自于多张表的时候,要使用连接查询 三.连接查询的分类 1. …简单查询、复杂查询 简单查询: 单表 复杂查询: 1. 子查询(嵌套查询) 2. 连接查询 ************************连接查询**************************** 一.什么是连接查询 把多张表连接在一起,一块查 二.什么时候使用 数据来自于多张表的时候,要使用连接查询 三.连接查询的分类 1. 内连接 2. 外连接 3. 交叉连接 4. 自然连接 ****************************************内连接****************************** --需求:查询部门编号为10的员工姓名、薪水、部门名称 --数据来自多张表的时候 使用连接查询 --sql1999 select e.ename,e.sal,d.deptno,d.dname from dept d inner join emp e on(d.deptno e.deptno) where e.deptno10 执行过程: 先拿着左表的第一条记录 和右表的所有记录进行匹配,如果满足 连接条件, 左表的记录和右表记录首尾相连...第一趟 第二趟 拿着左表的第二条记录 和右表的所有记录进行匹配,如果满足连接条件 首尾相连..依次类推 --sql1992 select e.ename,e.sal,d.deptno,d.dname from dept d ,emp e where d.deptno e.deptno and d.deptno10 ****************************************外连接****************************** 分类: 1.左外连接 2.右外连接 3.全外连接 一.左外连接 --需求:查询员工姓名、薪水、部门名称 --保证左表的数据都有,要使用左外连接 --左外连接: 在内连接的基础上,保证左表的数据都有 select d.dname,e.ename,e.sal,d.deptno from dept d left outer join emp e on(d.deptno e.deptno) outer 可以省略 sql1992 select d.dname,e.ename,e.sal,d.deptno from dept d,emp e where d.deptno e.deptno() 二.右外连接 在内连接的基础上,保证右表的数据都有如果左表以空补齐 select d.dname,e.ename,e.sal,d.deptno from emp e right outer join dept d on(d.deptno e.deptno) --sql1992 select d.dname,e.ename,e.sal,d.deptno from dept d,emp e where d.deptno e.deptno() 三.全外连接 左外连接的查询结果 并上 右外连接的查询结果 --sql1999select d.dname,e.ename,e.sal,d.deptno from dept d full outer join emp e on(d.deptno e.deptno) --sql1992select d.dname,e.ename,e.sal,d.deptno from dept d,emp e where d.deptno e.deptno() UNION select d.dname,e.ename,e.sal,d.deptno from dept d,emp e where d.deptno() e.deptno ************************交叉连接 cross join (笛卡尔积)**************************** 左表中的每一条记录 和右表中的 每一条记录 收尾相连 左边4条 右表14条 查询结果 一共 56条记录 sql 1999 select * from dept cross join emp sql1992 select * from dept,emp ************************自然连接 natural join**************************** 有点类似于 内连接,它和内连接的区别有两个 select * from dept natural join emp (1) 不需要写连接条件 把两张表中 相同的字段(名称相同、类型相同) 自动作为连接条件 给你加上 (2) 会自动的把重复的字段去掉 ******************************等值连接和非等值连接***************************** 一.等值连接 连接条件相等的为等值连接,刚才学的都属于等值连接 select ename,dname from emp join depton (emp.deptnodept.deptno);//1999sql select ename,dname from emp join deptusing (deptno);--等同于上面 二.非等值连接 连接条件不相等 例如 ! between 时 连接两张表的数据 连接第三张表 --需求: 姓名、薪水、部门名称 、薪水等级 select e.ename,e.sal,d.dname,s.grade from dept d inner join emp e on (d.deptno e.deptno) inner join salgrade s on (e.sal between s.losal and s.hisal) ******************************集合操作***************************** 1.UNION 并集 重复的只显示一次 第一张表的查询结果 UNION 第一张表的查询结果 2.UNION ALL 重复的显示多次 3. INTERSECT 交集 4. MINUS 差集 *****************--演示需求1:按照部门进行分组之后 每个部门赚钱最多的那个人******************** select t.deptno,e.ename,t.max_sal from emp e inner join (select deptno,max(sal) max_sal from emp group by deptno) t on(e.deptno t.deptno and e.sal t.max_sal) *****************************演示需求2:求每个部门的平均薪水的等级******************** --演示需求2:求每个部门的平均薪水的等级 select t.deptno,t.avg_sal,s.grade from (select deptno,avg(sal) avg_sal from emp group by deptno) t inner join salgrade s on(t.avg_sal between s.losal and s.hisal) *******************特殊的连接查询---自关联************************ 需求: SMITH的上司叫什么 --需求: SMITH的上司叫什么 --1. 先查SMITH上司的编号 select mgr from emp where enameSMITH --2.7902这个员工的姓名 select ename from emp where empno7902 --合并 现在的需求: 把所有员工的姓名 和它的上司叫什么同时显示出来 自关联: 一张表当两张表使用,自己和自己进行连接查询,叫做自关联 select employee.ename,manager.ename from emp manager right join emp employee on(manager.empno employee.mgr)转载于:https://www.cnblogs.com/MrTanJunCai/p/9907393.html
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/91872.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!