美文网首页
Oracle学习day-28:多表查询

Oracle学习day-28:多表查询

作者: 开源oo柒 | 来源:发表于2019-08-19 21:43 被阅读0次

    一、多表连接查询

    1.多表连接语法

    主要解决目标数据分布在不同的表中(如果目标数据不再一张表,可以通过多表连接查询解决。

    (1)多表链接的语法:
    Select 表名1.列名1,表名2.列名2,...from 表名1,表名2...where子语句;

    (2)多表链接需要注意:

    1)先确定需要查询的列分布那些表中,在确定表之间关联关系(主外键关联关系)。

    2)通过添加where子句限制查询结果,避免笛卡尔乘积。

    (3)笛卡尔积:

    笛卡尔乘积是指在数学中,两个集合X和Y的笛卡尓积,又称直积,表示为X*Y,第一个对象是X的成员而第二个对象是Y的所有可能有序对的其中一个成员。

    2.等值连接

    在连接条件中使用等于号(=)运算符比较被连接列的列值,其查询结果中列出被连接表中的所有列,包括其中的重复列。

    1) 当被连接的多个表中存在同名字段时,须在该字段前加上"表名."前缀。

    2) 使用表别名可以简化查询。

    3)使用表名(表别名)前缀可提高查询效率。

    4)可使用AND 操作符增加查询条件。

    3.使用表别名

    为表起别名,与列别名相似,在from后的表名空格加上别名;

    from 表名  别名,...表名 别名,

    4.非等值连接

    二、自连接、外连接、内链接

    1.自连接

    表示表格自身连接自身(代表父子关系:递归);

    2.外连接

    只限制一张表中的数据必须满足连接条件,而另一张表中的数据可以不满足连接条件的连接方式。

    (1)左连接:两个表在连接过程中除返回满足连接条件的行以外,还返回左表中不满足条件的行。

    实现方法:

    (2)右连接:两个表在连接过程中除返回满足连接条件的行以外,还返回右表中不满足条件的行。

    实现方法:

    (3)全外连接: 两个表在连接过程中除返回满足连接条件的行以外,还返回两个表中不满足条件的所有行,这种连接称为全外连接。

    3.自然链接

    Natural join基于两个表中的全部同名列建立连接。

    1)从两个表中选出同名列的值均对应相等的所有行;

    2)如果两个表中同名列的数据类型不同,则出错;

    3)不允许在参照列上使用表名或者别名作为前缀;

    4)自然连接的结果不保留重复的属性;

    (1)using子句:

    如果不希望参照被连接表的所有同名列进行等值连接,自然连接将无法满足要求,可以在连

    接时使用USING子句来设置用于等值连接的列(参照列)名。

    注意:using子句引用的列在sql任何地方不能使用表名或者别名做前缀。

    4.内连接

    进行连接的两个表对应的相匹配的字段完全相同的连接。只返回满足连接条件的数据。

    5.交叉连接

    交叉连接通过cross产生了一个笛卡尔积,其效果等同于在两个表进行连接时未使用where子句限定连接条件;

    注意:在笛卡尔积中, 有很多数据是无意义的, 所以需要消除,可以通过where子句来消除。

    相关文章

      网友评论

          本文标题:Oracle学习day-28:多表查询

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