美文网首页
Oracle连接_子查询

Oracle连接_子查询

作者: MagicalGuy | 来源:发表于2018-11-27 18:48 被阅读0次

    多表查询:多张表关联在一起进行查询,在多表查询中会频繁的使用表的别名。
    连接:
    内连接(等值连接):
    select 列名 from 表1 别名 inner join 表2 别名[...inner join 表n 别名] on 条件
    select 列名 from 表1 别名,表2 别名....表n 别名 where 条件

    查询学生表和班级表,要求显示学生表中的姓名、年龄、数学成绩、以及每名学生相对应的班级信息:


    image.png

    查询学生表和班级表,要求显示学生表中的姓名、年龄、数学成绩、以及每名学生相对应的班级信息,并且年龄在30岁以上,数学成绩及格:


    image.png

    查询每个班级有多少名同学,并且要显示出班级名称及、班级的地址:


    image.png

    交叉连接:查询后的结果是笛卡尔积
    语法:
    select 列名from 表1 别名cross join 表2 别名 [....cross join 表n 别名]
    select 列名 from 表1 别名, 表2 别名 [,.....表n]

    image.png

    表示两个表中的每一行数据任意组合
    自连接:自己连接自己本身,将一张表当成两张甚至多张表来使用
    语法:
    select 列名 from 表 别名 join 表 别名 [...join 表 别名] on 条件
    select 列名 from 表 别名, 表 别名 [...表 别名] where 条件
    查询t_emp表中每名员工及其领导的姓名:


    image.png

    外连接:左外连接、右外连接、全外连接
    左连接:在两张在进行互相匹配时,如果左表的内容没有匹配项,显示左表的内容,右边显示空值。
    语法:
    select 列名 from 表1 别名 left [outer] join 表2 别名 on 条件
    select 列名 from 表1 别名, 表2 别名 where 条件(+)

    查询student表和class表,如果在student表中没有与class匹配的班级信息,那么同样显示student表中的学生信息:


    image.png

    右连接:
    在两张表进行匹配时,如果右表的内容没有匹配项,显示右表的内容,左边显示空值。
    语法:
    select 列名 from 表1 别名right [outer] join 表2 别名on条件
    select 列名 from 表1 别名, 表2 别名 where 条(+)件

    查询student表和class表,如果在student表中没有与class表中匹配的班级,同样显示class中班级的信息:


    image.png

    全连接:在两张表进行匹配的时候,如果一边有不匹配的项,在另一边显示空值。
    语法:
    select 列名from 表1 别名 full join 表2 别名 on 条件


    image.png

    子查询:在查询中的条件可能是一条select语句,查询的结果也可能不是一张表,有时也可以是一条select语句的查询结果,查询的字段也可能不是某张表的字段,而是一条select语句的查询结果。

    查询student表和class表,查询数学成绩比关羽高的学生的信息及对应的班级信息,查询字段有,姓名、年龄、数学成绩、班级名称、班级地址:


    image.png

    查询student表和class表,查询数学成绩比关羽高,并且年龄比周瑜大的学生的信息及对应的班级信息,查询字段有,姓名、年龄、数学成绩、班级名称、班级地址:


    image.png

    查询数学成绩最高分的学生信息及班级信息:


    image.png

    查询其它班级的数学成绩与一班的数学成绩相同的学生信息:


    image.png

    相关文章

      网友评论

          本文标题:Oracle连接_子查询

          本文链接:https://www.haomeiwen.com/subject/sjjnqqtx.html