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

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云原生大数据计算服务MaxCompute,500CU*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
目录
相关文章
|
10天前
|
SQL 存储 缓存
MySQL进阶突击系列(02)一条更新SQL执行过程 | 讲透undoLog、redoLog、binLog日志三宝
本文详细介绍了MySQL中update SQL执行过程涉及的undoLog、redoLog和binLog三种日志的作用及其工作原理,包括它们如何确保数据的一致性和完整性,以及在事务提交过程中各自的角色。同时,文章还探讨了这些日志在故障恢复中的重要性,强调了合理配置相关参数对于提高系统稳定性的必要性。
|
8天前
|
SQL 关系型数据库 MySQL
MySQL 高级(进阶) SQL 语句
MySQL 提供了丰富的高级 SQL 语句功能,能够处理复杂的数据查询和管理需求。通过掌握窗口函数、子查询、联合查询、复杂连接操作和事务处理等高级技术,能够大幅提升数据库操作的效率和灵活性。在实际应用中,合理使用这些高级功能,可以更高效地管理和查询数据,满足多样化的业务需求。
30 3
|
11天前
|
SQL 关系型数据库 MySQL
MySQL导入.sql文件后数据库乱码问题
本文分析了导入.sql文件后数据库备注出现乱码的原因,包括字符集不匹配、备注内容编码问题及MySQL版本或配置问题,并提供了详细的解决步骤,如检查和统一字符集设置、修改客户端连接方式、检查MySQL配置等,确保导入过程顺利。
|
13天前
|
SQL 存储 关系型数据库
MySQL进阶突击系列(01)一条简单SQL搞懂MySQL架构原理 | 含实用命令参数集
本文从MySQL的架构原理出发,详细介绍其SQL查询的全过程,涵盖客户端发起SQL查询、服务端SQL接口、解析器、优化器、存储引擎及日志数据等内容。同时提供了MySQL常用的管理命令参数集,帮助读者深入了解MySQL的技术细节和优化方法。
|
14天前
|
SQL Oracle 关系型数据库
SQL(MySQL)
SQL语言是指结构化查询语言,是一门ANSI的标准计算机语言,用来访问和操作数据库。 数据库包括SQL server,MySQL和Oracle。(语法大致相同) 创建数据库指令:CRATE DATABASE websecurity; 查看数据库:show datebase; 切换数据库:USE websecurity; 删除数据库:DROP DATABASE websecurity;
|
18天前
|
SQL 算法 大数据
为什么大数据平台会回归SQL
在大数据领域,尽管非结构化数据占据了大数据平台80%以上的存储空间,结构化数据分析依然是核心任务。SQL因其广泛的应用基础和易于上手的特点成为大数据处理的主要语言,各大厂商纷纷支持SQL以提高市场竞争力。然而,SQL在处理复杂计算时表现出的性能和开发效率低下问题日益凸显,如难以充分利用现代硬件能力、复杂SQL优化困难等。为了解决这些问题,出现了像SPL这样的开源计算引擎,它通过提供更高效的开发体验和计算性能,以及对多种数据源的支持,为大数据处理带来了新的解决方案。
|
1月前
|
SQL 存储 算法
比 SQL 快出数量级的大数据计算技术
SQL 是大数据计算中最常用的工具,但在实际应用中,SQL 经常跑得很慢,浪费大量硬件资源。例如,某银行的反洗钱计算在 11 节点的 Vertica 集群上跑了 1.5 小时,而用 SPL 重写后,单机只需 26 秒。类似地,电商漏斗运算和时空碰撞任务在使用 SPL 后,性能也大幅提升。这是因为 SQL 无法写出低复杂度的算法,而 SPL 提供了更强大的数据类型和基础运算,能够实现高效计算。
|
1月前
|
SQL 存储 关系型数据库
SQL `CREATE DATABASE` 语法
【11月更文挑战第10天】
53 3
|
3月前
|
关系型数据库 MySQL 网络安全
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")