zoukankan      html  css  js  c++  java
  • sql多表查询(单表查询略过)

    表library:                                                                                                                            

    表borrow:

    表reader:

    1、等值连接:(常用)

      原理:将多张表组合成一个逻辑大表,即字段相加记录相乘(笛卡尔积)。

      语法:select * from 表A,表B where 表A.主键=表B.外键 and 查询条件。

      步骤:①明确来源于哪几张表;②找到关联字段;③添加条件;④合并语句。

      优点:简单方便。

      缺点:查询效率低,查询记录快速增长。

      适用范围:不适用于海量数据的查询。

      例子:

        找出李某所借图书的所有图书的书名及借书日期。          

        SELECT

          full_name,

          book_name,

          borrowdate

        FROM

          library,

          borrow,

          reader

        WHERE

          library.mastr_serial_number = borrow.mastr_serial_number

          AND borrow.library_card_number = reader.library_card_number

          AND full_name LIKE '李%'

    2、嵌套查询:(常用)

      原理:将多个单表查询结果拼接在一起。

      步骤:①依据需求,拆分多个单表查询;②针对每一个单表查询编写sql语句(每写完一条执行,检查是否正确);③合并sql语句(单表查询结果单个:=、!=、>、<、>=、<=;多个查询结果:in、not in)。

      优点:查询效率高,记录不会增加。

      缺点:复杂、逻辑性强,表结构要清晰

      例子:

        查询1997年10月以后借书的读者借书证号、姓名和单位。

        SELECT

          full_name,

          unit,

               library_card_number

          FROM

          reader

        WHERE

          library_card_number in (

          SELECT

            library_card_number

          FROM

            borrow

          WHERE

            borrowdate > '1997-10-31')

     3.内连接:(不常用)

      特点:先判断再组合

      语法:inner join ... on

                    两张表:select * from 表A inner join 表B on 表A.主键=表B.外键 where 查询条件

                    三张表:select * from 表A inner join 表B on 表A.主键=表B.外键 inner join 表C on 表C.主键=表B.外键 where 查询条件

    4.外连接:(不常用)

      分为左外连接右外连接

  • 相关阅读:
    文件上传
    使用servlet+jdbc+MD5实现用户加密登录
    JDBC入门
    springmvc(三)
    springmvc(二)
    springmvc(一)
    JavaScript总结(一)
    Spring的AOP面向切面编程
    Spring框架(三)
    Spring框架(二)
  • 原文地址:https://www.cnblogs.com/njcb/p/7992194.html
Copyright © 2011-2022 走看看