MySQL sql92连接查询——内连接

连接查询

  • 含义:又称多表查询,当查询的字段来自于多个表时,就会用到连接查询

  • 笛卡尔乘积现象:表1有m行,表2有n行,结果=m*n行

  • 发生原因:没有有效的连接条件

  • 如何避免:添加有效的连接条件

分类:

  1. 按年代分类:
    sql92标准:仅仅支持内连接
    sql99标准[推荐]:支持内连接+外连接( 左外和右外) +交叉连接

  2. 按功能分类:

    • 内连接:
      等值连接
      非等值连接
      自连接
    • 外连擦:
      左外连接
      右外连接
      全外连接
    • 交叉连接

sql92标准

一.等值连接

  1. 多表等值连接的结果为多表的交集部分
  2. n表连接,至少需要n-1个连接条件
  3. 多表的顺序没有要求
  4. 一般需要为表起别名

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

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

#案例2:查询员工名和对应的部门名

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

#1.为表起别名

  1. 提高语句的简洁度
  2. 区分多个重名的字段

注意:如果为表起了别名,则查询的字段就不能使用原来的表名去限定

#2.查询员工名、工种号、工种名

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

#3.条件筛选
#查询有奖金的员工名、部门名

SELECT last_name,department_name,commission_pct
FROM employees,departments
WHERE employees.`department_id` = departments.`department_id`
AND employees.`commission_pct` IS NOT NULL;

#4.加分组:查询每个城市的部门个数

SELECT city 城市,COUNT(*) 部门个数
FROM locations l,departments d
WHERE l.`location_id` = d.`location_id`
GROUP BY city;

#5.可以加排序
#查询每个工种的工种名和员工的个数,并且按员工个数降序

SELECT COUNT(*)
FROM employees e,jobs j
WHERE e.`job_id` = j.`job_id`
GROUP BY job_title
ORDER BY COUNT(*) DESC;

#6.三表连接
#查询员工名、部门名和所在城市

SELECT last_name,department_name,city
FROM employees e,departments d,locations l
WHERE e.`department_id` = d.`department_id`
AND d.`location_id` = l.`location_id`;

二.非等值连接

SELECT salary, grade_level
FROM employees e, job_ grades g
WHERE salary BETWEEN g. lowest_sal AND g.highest_sal;

三.自连接

#查询员工名和上级的名称

SELECT e.`last_name` 员工,m.`last_name` 上级
FROM employees e,employees m
WHERE e.`manager_id` = m.`employee_id`;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值