连接查询——sql92

本文详细介绍了SQL92标准中的等值连接、非等值连接和自连接,包括它们的特点、语法示例及各种操作,如筛选、分组、排序。通过实例展示了如何在多表查询中有效避免笛卡尔乘积问题,提高查询效率。
摘要由CSDN通过智能技术生成

进阶6:连接查询

含义:又称多表查询,当查询的字段来自于多个表时,就会用到连接查询
笛卡尔乘积现象:表1 有m行,表2有n行,结果=m*n行
发生原因:没有有效的连接条件
如何避免:添加有效的连接条件

分类

按年代分类:

  • sql92标准:仅仅支持内连接(等值、非等值、自连接)
  • sql99标准【推荐】:支持内连接+外连接(左外和右外)+交叉连接

按功能分类:

  1. 内连接:等值连接、非等值连接、自连接
  2. 外连接:左外连接、右外连接、全外连接
  3. 交叉连接

sql92标准

1、等值连接

特点:
①多表等值连接的结果为多表的交集部分
②n表连接,至少需要n-1个连接条件
③多表的顺序没有要求
④一般需要为表起别名
⑤可以搭配前面介绍的所有子句使用,比如排序、分组、筛选

案例1 :查询女神名和对应的男神名

SELECT 
  NAME,
  boyName 
FROM
  boys,
  beauty 
WHERE beauty.`boyfriend_id` = boys.`id` ;

结果:
在这里插入图片描述
案例2:查询员工名和对应的部门名

SELECT 
  last_name,
  department_name 
FROM
  employees,
  departments 
WHERE employees.`department_id` = departments.`department_id` ;

结果:
在这里插入图片描述

(1)为表起别名

  • 提高语句的简洁度
  • 区分多个重名的字段
    注意:如果为表起了别名,则查询的字段就不能使用原来的表名去限定

案例:查询员工名、工种号、工种名

SELECT 
  last_name,
  e.job_id,
  job_title 
FROM
  employees AS e,
  jobs AS j 
WHERE e.`job_id` = j.`job_id` ;

结果:

(2)两个表的顺序是可以调换
案例:查询员工名、工种号、工种名

SELECT 
  e.last_name,
  e.job_id
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值