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

  分为左外连接右外连接

转载于:https://www.cnblogs.com/njcb/p/7992194.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值