【大数据系列之MySQL】(二十四):MySQL中sql99语法连接操作

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
简介: 【大数据系列之MySQL】(二十四):MySQL中sql99语法连接操作

连接查询分类:

  • sql92标准:仅仅支持内连接
  • sql99标准:【推荐使用这种做法】

按功能分类:

  • 内连接:等值连接、非等值连接、自连接
  • 外连接:左外连接、右外连接、全外连接
  • 交叉连接:笛卡尔积

sql99语法:

select 查询列表
from 表1 别名 【连接类型】
from 表2 别名
on 连接条件
【where 筛选条件】
【group by 分组】
【having 筛选条件】
【order by 排序列表】

内连接:inner,拿着主表的每一条记录去次表进行匹配,如果符合连接条件将其连接作为新的记录,如果不符合则舍弃该记录

左外连接:left 【outer】,拿着坐标的每一条记录去词表进行匹配,如果符合将其连接作为新的记录,如果不符合,则将主表信息保留,次表的信息置为null

右外连接:right【outer】,同理

全外连接:full【outer】,主表和次表的数据都保留,就是等于内连接+左外连接+右外连接的并集

交叉连接:cross,做笛卡尔积

1.等值连接

案例:查询名字中包含e的员工名和工种名

下面sql中的inner是可以省略的,join默认是使用内连接

SELECT
  last_name,
  job_title 
FROM
  employees e
  INNER JOIN jobs j ON e.job_id = j.job_id 
WHERE
  last_name LIKE '%e%';

案例:查询部门个数>3的城市名和部门个数

SELECT
  city,
  count(*) 
FROM
  departments
  JOIN locations ON departments.location_id = locations.location_id 
GROUP BY
  city 
HAVING
  count(*)> 3;

案例:查询哪个部门的员工个数>3的部门名和员工个数,并按个数降序

SELECT
  department_name,
  COUNT(*) 
FROM
  departments
  JOIN employees ON departments.department_id = employees.department_id 
GROUP BY
  employees.department_id 
HAVING
  COUNT(*)> 3 
ORDER BY
  COUNT(*) DESC;

2.非等值连接

案例:查询员工的工资级别

SELECT
  salary,
  grade_level 
FROM
  employees
  JOIN job_grades ON employees.salary BETWEEN job_grades.lowest_sal 
  AND job_grades.highest_sal;

3.自连接

案例:查询员工的名字、上级的名字

SELECT
  e.last_name,
  m.last_name 
FROM
  employees e
  JOIN employees m ON e.manager_id = m.employee_id;

4.左、右外连接

案例:查询男朋友不在男神表的女神名

SELECT
  be.NAME 
FROM
  beauty be
  LEFT JOIN boys bo ON be.boyfriend_id = bo.id 
WHERE
  bo.id IS NULL;

案例:查询哪个部门没有员工

SELECT
  d.department_name 
FROM
  departments d
  LEFT JOIN employees e ON d.department_id = e.department_id 
WHERE
  e.employee_id IS NULL;

5.全外连接

对于全外连接相当于:内连接+左外连接+右外连接,但这个语法是在MySQL是报错的,MySQL中没有全外连接概念

6.交叉连接

该种做法相当于做笛卡尔积

SELECT
  be.*,
  bo.* 
FROM
  beauty be
  CROSS JOIN boys bo;


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
2月前
|
消息中间件 分布式计算 关系型数据库
大数据-140 - ClickHouse 集群 表引擎详解5 - MergeTree CollapsingMergeTree 与其他数据源 HDFS MySQL
大数据-140 - ClickHouse 集群 表引擎详解5 - MergeTree CollapsingMergeTree 与其他数据源 HDFS MySQL
48 0
|
19天前
|
SQL 存储 算法
比 SQL 快出数量级的大数据计算技术
SQL 是大数据计算中最常用的工具,但在实际应用中,SQL 经常跑得很慢,浪费大量硬件资源。例如,某银行的反洗钱计算在 11 节点的 Vertica 集群上跑了 1.5 小时,而用 SPL 重写后,单机只需 26 秒。类似地,电商漏斗运算和时空碰撞任务在使用 SPL 后,性能也大幅提升。这是因为 SQL 无法写出低复杂度的算法,而 SPL 提供了更强大的数据类型和基础运算,能够实现高效计算。
|
23天前
|
SQL 存储 关系型数据库
SQL `CREATE DATABASE` 语法
【11月更文挑战第10天】
45 3
|
28天前
|
SQL 关系型数据库 数据库
sql语法
【10月更文挑战第26天】sql语法
32 5
|
2月前
|
SQL 数据库
SQL数据库基础语法入门
[link](http://www.vvo.net.cn/post/082935.html)
|
2月前
|
SQL 存储 关系型数据库
mysql SQL必知语法
本文详细介绍了MySQLSQL的基本语法,包括SELECT、FROM、WHERE、GROUPBY、HAVING、ORDERBY等关键字的使用,以及数据库操作如创建、删除表,数据类型,插入、查询、过滤、排序、连接和汇总数据的方法。通过学习这些内容,读者将能更好地管理和操
22 0
|
2月前
|
SQL 消息中间件 分布式计算
大数据-143 - ClickHouse 集群 SQL 超详细实践记录!(一)
大数据-143 - ClickHouse 集群 SQL 超详细实践记录!(一)
82 0
|
2月前
|
SQL 大数据
大数据-143 - ClickHouse 集群 SQL 超详细实践记录!(二)
大数据-143 - ClickHouse 集群 SQL 超详细实践记录!(二)
62 0
|
2月前
|
SQL 大数据 API
大数据-132 - Flink SQL 基本介绍 与 HelloWorld案例
大数据-132 - Flink SQL 基本介绍 与 HelloWorld案例
46 0
|
15天前
|
存储 分布式计算 数据挖掘
数据架构 ODPS 是什么?
数据架构 ODPS 是什么?
126 7