多表查询——冲鸭儿!

多表查询:

  • 多表连接查询

    • 内连接查询:

      • 隐式内连接:

        • select 字段...(*)
          from 表1,表2
          where 表1.主键=表2.外键
      • 显示内连接:

        • select 字段...(*)
          from 表1 inner join 表2
          on 表1.主键=表2.外键
    • 外连接查询:

      • 左外连接:

        • select 字段...(*)
          from 表1 left outer join 表2
          on 表1.主键=表2.外键
      • 注意:左外连接相当于是以left为关键字,left左边的作为主表,右边的为副表。执行查询操作时主表中的所有数据都查询出来,而副表中只查询出来符合条件的数据。若没有匹配到符合条件的则在主表中用null填充。

      • 右外连接:

        • 用法同左外连接

        • select 字段...(*)
          from 表1 right outer join 表2
          on 表1.主键=表2.外键

子查询:(嵌套查询)

子查询:

  • 在一个查询中包含了另一个查询

  • 根据子查询结果的不同,可以分为一下三类:

    • 单行单列:

      • 子查询的结果可以作为外部查询的条件

      • where条件可以用比较运算符

      • 语法:

      • select *
        from 表
        where 字段 = (select 字段 from 表 [where条件])
    • 多行单列:

      • 子查询的结果可以作为外部查询的条件

      • where条件不可以用比较运算符,只能使用in、all

      • 语法:

      • select *from 表where in (select 字段 from 表 [where条件]);
    • 多行多列:

      • 把子查询的结果用as关键字起一个别名做一个临时表。

      • 语法:

      • select * from 
        (select 字段... from 表 [where 条件])
        as "临时表"
        where 临时表.字段=....

总结:在多表查询时需要把表连接起来,连接起来的条件就是借助外键。

外键是表间的参照,必须是唯一性索引。主键约束和唯一性约束都是唯一性索引。所以,外键不一定参照的是另一个表的主键。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值