zoukankan      html  css  js  c++  java
  • 数据库两表联查、多表联查,多重联查

    表连接查询

    【小编用的是Oracle数据库,Oracle数据库区分表名与字段名的大小写,所以大家进行查询的时候记得注意双引号哟~】

    有表
    表名:AAA 字段: id name tag
    表名:BBB 字段: id ban qq
    表名:AABB字段: id area location
    分类:
    1.内连接 inner join
      select 列名 from 主表 inner join 从表
        on 主表和从表关系
      注意:
           (1)必须要有on语句
           (2)关系必须两表中都成立
            主表和从表:
                特点:结果是两表之间的公共数据
                公共数据就是说两表中关系列的值要对应
            比如:

               SELECT * from  AAA INNER JOIN BBB ON AAA."id"=BBB."id"

              查询显示:


                 [只显示条件都成立的数据]
    2.外连接 outer join
     a)左外连接 left outer join
      select 列名 from 主表 left outer join 从表
       on 关系 .....

    SELECT * from  AAA LEFT JOIN BBB ON AAA."id"=BBB."id"

            查询显示:


              [左边为主表,主表全部显示,右边为副表,右边无符合数据时显示null,不符合的数据不会显示]
     b)右外连接 right outer join
      select 列名 from 从表 right outer join 主表
       on 关系 .....

    SELECT * from  AAA RIGHT JOIN BBB ON AAA."id"=BBB."id"

           查询显示:

             [右边为主表,主表全部显示,左边为副表,左边无符合数据时显示null,不符合的数据不会显示]
     c)全外连接 full outer join
      select 列名 from 主表 full outer join 主表
       on 关系 .....

    SELECT * from  AAA  full outer  JOIN BBB ON AAA."id"=BBB."id"

    查询显示:

              [左边为主表,右边为副表,主表和副表全部显示,右边无符合数据时显示null,左边无符合数据时显示null,符合条件的数据会显示在一行]
     
    3.交叉连接 cross join
      select 列名 from 主表 cross join 主表;

    SELECT * from  AAA   cross  JOIN BBB 

    查询显示:


    [左边为主表,右边为副表,显示的数据为乘积形式的数据。]
      交叉连接查询不能带on子语
      结果:两表查询结果的笛卡尔乘积
      左表有3行    右表有3行数
      结果:9行
    附加:另一种连接查询,将多个表用逗号隔开查询

    1.SELECT * from  AAA,BBB where AAA."id"=BBB."id"

    [类似于内连接,只显示条件都成立的数据]


    2.SELECT * from  AAA , BBB ;--不带where关系条件

    [类似于交叉连接,左边为主表,右边为副表,显示的数据为乘积形式的数据。]

    3.SELECT * from  AAA INNER JOIN BBB ON AAA."id"=BBB."id" INNER JOIN AABB ON BBB."id"=AABB."id"
    SELECT * from  AAA INNER JOIN BBB ON AAA."id"=BBB."id" LEFT  JOIN AABB ON BBB."id"=AABB."location"  

     SELECT * from  AAA RIGHT  JOIN BBB ON AAA."tag"=BBB."ban" right  JOIN AABB ON BBB."id"=AABB."id"

    [可以无限连接,想必到这应该懂了吧?想怎么join就怎么join,需要满足条件才显示的则要满足条件才显示,左右连接需要补null的,则要补null。]

     还有就是:on 的时候可以写多个条件,例如:

    SELECT * from  AAA  full outer  JOIN BBB ON AAA."id"=BBB."id" and AAA."name"=BBB."ban" and AAA."tag"=BBB."qq"

    觉得有用的朋友希望可以帮忙“赞”一下哟(赠人玫瑰手有余香),谢谢^_^

  • 相关阅读:
    vs2005视频教程 之 文件管理系统(一)视频教程[视频]
    空间不够了,郁闷!
    一些web开发中常用的、做成cs文件的js代码 搜刮来的
    电子科大实训感想
    深入继承 抽象类和接口
    vs2005视频教程 之 自定义服务器控件(下) [视频]
    vs2005视频教程 之 文件管理系统(二)视频教程[视频]
    功能超强的用户管理系统数据库结构
    vs2005视频教程 之 抽象类和接口 三 [视频]
    vs2005入门 .Net2.0视频教程 之 创建读取文本文件[视频]
  • 原文地址:https://www.cnblogs.com/janesyf/p/7840966.html
Copyright © 2011-2022 走看看