---恢复内容开始---

sql1992
sql分类
    1.笛卡尔积 (表乘表)

  例:select * from emp,dept;
    2.等值连接 表的连接条件使用“=”

  例:select * from emp,dept where emp.deptno = dept.deptno;
    3.非等值连接 表的连接条件使用“>、>=、 <、<=、!=、any等”

  例:select e.ename,sg.grade from emp e,salgrade sg where e.sal between sg.losal and sg.hisal;
    4.自连接 自己连接自己

  例:select e1.ename || ' 的上司是 '|| e2.ename from emp e1,emp e2 where e1.mgr = e2.empno;
    5.外连接:在等值基础上,确保一张表(主表)的记录都存在 从表满足则匹配,不满足补充null
        1.左外连接,“(+)”在等号右边

  例:select * from emp e,dept d where d.deptno = e.deptno(+);
        2.右外连接,“(+)”在等号左边

  例:select * from emp e,dept d where d.deptno(+) = e.deptno;
        3.“(+)”在哪一边的列,该表就补充null

sql1999
sql分类
    1.cross join  交叉连接 (笛卡尔积) ,不需要on关键字

  例: select * from emp cross join dept
    2.natural join  自然连接 (找两个表中相同的列,进行等值匹配),不需要on关键字

  例: select * from emp natural join dept
    3.inner join 内连接
        1)必须有on关键字,on表示连接条件
        2)inner关键字可以省略

  --等值连接
        select e.ename,d.dname from emp e  INNER JOIN  dept d on e.deptno = d.deptno where e.sal > 2000
        --非等值连接
        select e.ename,s.grade from emp e INNER JOIN salgrade s on e.sal between s.losal and s.hisal
        --自连接
        select e1.ename || '的上司是' || e2.ename from emp e1 INNER JOIN emp e2 on e1.mgr = e2.empno

4.outer join 外连接,outer关键字可以省略
        1) left outer join

  例:select * from emp e LEFT OUTER JOIN dept d on e.deptno = d.deptno
        2) right outer join

  例:select * from emp e RIGHT OUTER JOIN dept d on e.deptno = d.deptno
        3) full outer join
  例:select * from emp e FULL OUTER JOIN dept d on e.deptno = d.deptno

--如何进行多表连接

--查询员工的姓名、薪水、部门名称及工资等级
select e.ename, e.sal, d.dname, s.grade
  from emp e, dept d, salgrade s
 where e.deptno = d.deptno
   and e.sal between s.losal and s.hisal

select e.ename, e.sal, d.dname, s.grade
  from emp e
  join dept d
    on e.deptno = d.deptno
  join salgrade s
    on e.sal between s.losal and s.hisal
    
--子查询
--在where中使用的子查询

例:
--查询部门名称为RESEARCH、SALES
select *
  from emp
 where deptno in
       (select deptno from dept where dname in ('RESEARCH', 'SALES'))
--查询有哪些人的薪水是在整个雇员的平均薪水之上的
select ename,empno, sal, sal+nvl(comm,0)
from emp
where sal+nvl(comm,0)>(select avg(sal+nvl(comm,0)) from emp);
--查在雇员中有哪些人是经理人
select empno, ename
from emp
where empno in (
select distinct mgr from emp
);
--找出部门编号为20的所有员工中收入最高的职员
select * from emp
where sal >= all(
select sal
from emp
where deptno = 20)
and
deptno = 20

--在from后面使用子查询

例:
--我们要求每个部门平均薪水的等级
select t1.deptno, t1.savg, s.grade
  from (select deptno, avg(sal) savg from emp group by deptno) t1
  join salgrade s
    on t1.savg between s.losal and s.hisal

--求每个部门薪水的平均等级
select t1.deptno, avg(t1.grade)
  from (select e.deptno, s.grade
          from emp e, salgrade s
         where e.sal between s.losal and s.hisal) t1
 group by t1.deptno

---恢复内容结束---

SQL语句02(连表查询)的更多相关文章

  1. 2.1 Oracle之DML的SQL语句之单表查询以及函数

    1.SQL简介 对于不同的数据库来说,SQL语句是相通的,关系型数据库都以SQL语句为操作的标准,只是相应的数据库对应的函数不相同. SQL(Structured Query Language,结构化 ...

  2. 2.2 Oracle之DML的SQL语句之多表查询以及组函数

    一.SQL的多表查询: 1.左连接和右连接(不重要一方加(+)) SELECT e.empno,e.ename,d.deptno,d.dname,d.loc FROM emp e,dept d WHE ...

  3. SQL语句 自连表查询。inner join用法,partition by ,列转行查询

    use mydb1 go -- 表T_Employee2 -- Id Name Position Dept -- 1 张三 员工 市场部 -- 2 李四 经理 销售部 -- 3 王五 经理 市场部 - ...

  4. 惊世骇俗的sql语句之连表查询

    select `product_skus`.id as skuId, `wname` as sku名称, if(`sku_attributes`.`status`=1,'上架','下架') as 状态 ...

  5. hibernate中使用sql语句进行表链接查询,对结果集的遍历方法

    今天做了一个在hibernate中使用sql语句进行表链接查询的功能,得到的属性是来自两个表中的字段.下面对结果集遍历的方法进行记录. sql语句不写了.部分代码如下: List<Course_ ...

  6. SQL语句之 多表管理

    SQL语句之 多表管理 一个数据库内通常会有不止一张表,有时候我们要把多张表联系起来,这就需要用到多表管理的语句. 1.外键约束 一个表中的非主键字段,如果在另外一张表中是主键,那么这个字段我们叫它做 ...

  7. sql语句中----删除表数据drop、truncate和delete的用法

    sql语句中----删除表数据drop.truncate和delete的用法 --drop drop table  tb   --tb表示数据表的名字,下同 删除内容和定义,释放空间.简单来说就是把整 ...

  8. 通过带参数的Sql语句来实现模糊查询(多条件查询)

    #region 通过带参数的Sql语句来实现模糊查询(多条件查询) StringBuilder sb = new StringBuilder("select * from books&quo ...

  9. (转载)用SQL语句创建Access表

    <来源网址:http://www.delphifans.com/infoview/Article_220.html>用SQL语句创建Access表 很久以前弄的,用了一天的时间,没有什么技 ...

  10. 使用sql语句获取数据库表的信息

    下面的sql语句可以查看表的信息.其中modify_date和create_date可以根据表的修改时间来查看.如果不需要删除后,就能看到所有表的字段信息 ) PERCENT d.name AS 表名 ...

随机推荐

  1. HBase 系列(二)安装部署

    HBase 系列(二)安装部署 本节以 Hadoop-2.7.6,HBase-1.4.5 为例安装 HBase 环境.HBase 也有三种模式:本地模式.伪分布模式.分布模式. 一.环境准备 (1) ...

  2. JVM 垃圾回收- 转载 知识碎片

    最近关注了一下垃圾回收的问题,想了解一下JVM 关于方法区的垃圾回收机制,找了几篇文章,不同的文章从不同角度讲述了一下,嗯... 拼凑起来 记录一下, 有些未验证正确性... JVM 方法区 当JVM ...

  3. 一文读懂spark yarn集群搭建

    文是超简单的spark yarn配置教程: yarn是hadoop的一个子项目,目的是用于管理分布式计算资源,在yarn上面搭建spark集群需要配置好hadoop和spark.我在搭建集群的时候有3 ...

  4. Web图片编辑控件开发文档-Xproer.ImageEditor

    版权所有 2009-2014 荆门泽优软件有限公司 保留所有权利 官方网站:http://www.ncmem.com 产品首页:http://www.ncmem.com/webplug/image-e ...

  5. 结巴net 分词 配置文件路径,在网站中的出现问题的解决

    用结巴分词net版,部署到网站上的时候,配置文件的地址为相对路径的时候会出现问题,绝对路径就没有问题. 原因是结巴源码中,取路径是取的应用程序的目录.如果是winform程序当然没有问题,在网站就不行 ...

  6. 算法 - 最小m段和问题

    题目分析 给定n个整数组成的序列,要求将序列分割为m段,每段子序列中的数在原序列中连续排列,求使得子段和的最大值达到最小的分割方法 解题方法 状态转移方程 State[i][j]表示前i个数据分成j段 ...

  7. Unity3d发布的iOS产品中使用GB2312字符编码(CP936)

    最近在开发中要用到GB2312字符编码(CP936),在C#代码中便有了如此代码 System.Text.Encoding.GetEncoding() 这在Unity3d 编辑器下运行没有任何问题,打 ...

  8. Javascript Object.defineProperty()

    转载声明: 本文标题:Javascript Object.defineProperty() 本文链接:http://www.zuojj.com/archives/994.html,转载请注明转自Ben ...

  9. Selenium窗口切换-----Selenium快速入门(六)

    有时候,我们打开多个窗口,进行多窗口操作,那么窗口间该如何切换呢? 切换的方法有两个,一个是通过窗口标题来验证,另一个是通过窗口特定的内容来验证,这两个方法都要求得到的标题或内容是唯一的. 用到的相关 ...

  10. django drf 自定义jwt用户验证逻辑

    新建Backend类 from django.contrib.auth.backends import ModelBackend from django.shortcuts import render ...