sql server语法——多表查询(连接查询)

本文详细介绍了SQL多表查询的不同类别,包括SQL92时代的等值连接、非等值连接和自连接,以及SQL99中更推荐的内连接、外连接(左外、右外、全外),并提供了各自的语法和应用场景。涵盖了连接条件、分组与筛选、排序等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、含义

当查询中涉及到了多个表的字段,需要使用多表查询
select 字段1,字段2,……
from 表1,表2,……

二、分类

按年代分
sql192:

  1. 等值连接
  2. 非等值连接
  3. 自连接

sql199【推荐使用】

内连接

  1. 等值连接
  2. 非等值连接
  3. 自连接

外连接

  1. 左外连接
  2. 右外连接
  3. 全外连接

三、语法

sql92语法
特点:
一般为表起别名
多表的顺序可以调换
n表连接至少需要n-1个连接条件
等值连接的结果是多表的交集部分

  1. 等值连接
    select 查询列表
    from 表1 别名,表2 别名
    where 表1.key = 表2.key
    【and 筛选条件】
    【group by 分组字段】
    【having 分组后的筛选】
    【order by 排序字段】

  2. 非等值连接
    select 查询列表
    from 表1 别名,表2 别名
    where 非等值的连接条件
    【and 筛选条件】
    【group by 分组字段】
    【having 分组后的筛选】
    【order by 排序字段】

  3. 自连接(表自己连接自己)
    select 查询列表
    from 表1 别名1,表1 别名2
    where 表1.key = 表1.key
    【and 筛选条件】
    【group by 分组字段】
    【having 分组后的筛选】
    【order by 排序字段】

sql99语法

  1. 内连接(inner join)
    select 查询列表
    from 表1 别名 inner join 表2 别名 on 连接条件
    【where 筛选条件】
    【group by 分组字段】
    【having 分组后的筛选】
    【order by 排序字段】
    特点:
    表的顺序可以调换
    内连接的结果 = 多表的交集
    n表连接至少需要n-1个连接条件
  2. 外连接
    特点
    查询的结果 = 主表中所有的行,如果从表和它匹配的将显示匹配行,如果从表没有匹配的则显示null
    left join 左边的就是主表
    right join 右边的就是主表
    full join 两边都是主表
    一般用于查询除了交集部分的剩余的不匹配的行
    select 查询列表
    from 表1 别名 left\right\full join 表2 别名 on 连接条件
    【where 筛选条件】
    【group by 分组字段】
    【having 分组后的筛选】
    【order by 排序字段】
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值