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.外连接:(不常用)

      分为左外连接右外连接

  • 相关阅读:
    冒泡排序
    最长回文子串
    两个排序数组的中位数
    Manacher算法解析
    绕过校园网WEB认证_iodine实现
    绕过校园网WEB认证_dns2tcp实现
    ajax跨域请求
    Vue实例生命周期
    组件化应用构建
    表单输入绑定
  • 原文地址:https://www.cnblogs.com/njcb/p/7992194.html
Copyright © 2011-2022 走看看