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

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: 【大数据系列之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;


相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
29天前
|
分布式计算 关系型数据库 数据处理
Dataphin常见问题之没有建表的权限如何解决
Dataphin是阿里云提供的一站式数据处理服务,旨在帮助企业构建一体化的智能数据处理平台。Dataphin整合了数据建模、数据处理、数据开发、数据服务等多个功能,支持企业更高效地进行数据治理和分析。
|
1月前
|
关系型数据库 MySQL
Mysql常用语法总结
Mysql常用语法总结
22 0
|
22天前
|
SQL 关系型数据库 MySQL
mysql一条sql查询出多个统计结果
mysql一条sql查询出多个统计结果
14 0
|
1月前
|
SQL 关系型数据库 MySQL
阿里云MySQL数据库价格、购买、创建账号密码和连接数据库教程
阿里云数据库使用指南:购买MySQL、SQL Server等RDS实例,选择配置和地区,完成支付。创建数据库和账号,设置权限。通过DMS登录数据库,使用账号密码访问。同地域VPC内的ECS需将IP加入白名单以实现内网连接。参考链接提供详细步骤。
368 3
|
1天前
|
SQL 分布式计算 资源调度
一文解析 ODPS SQL 任务优化方法原理
本文重点尝试从ODPS SQL的逻辑执行计划和Logview中的执行计划出发,分析日常数据研发过程中各种优化方法背后的原理,覆盖了部分调优方法的分析,从知道怎么优化,到为什么这样优化,以及还能怎样优化。
|
8天前
|
SQL 关系型数据库 MySQL
DQL语言之连接查询(mysql)
DQL语言之连接查询(mysql)
|
8天前
|
SQL 关系型数据库 数据库
【后端面经】【数据库与MySQL】SQL优化:如何发现SQL中的问题?
【4月更文挑战第12天】数据库优化涉及硬件升级、操作系统调整、服务器/引擎优化和SQL优化。SQL优化目标是减少磁盘IO和内存/CPU消耗。`EXPLAIN`命令用于检查SQL执行计划,关注`type`、`possible_keys`、`key`、`rows`和`filtered`字段。设计索引时考虑外键、频繁出现在`where`、`order by`和关联查询中的列,以及区分度高的列。大数据表改结构需谨慎,可能需要停机、低峰期变更或新建表。面试中应准备SQL优化案例,如覆盖索引、优化`order by`、`count`和索引提示。优化分页查询时避免大偏移量,可利用上一批的最大ID进行限制。
33 3
|
11天前
|
关系型数据库 MySQL 数据安全/隐私保护
MySQL 安装及连接
MySQL 安装及连接
31 0
|
15天前
|
SQL 存储 关系型数据库
【MySQL实战笔记】02.一条SQL更新语句是如何执行的-2
【4月更文挑战第5天】两阶段提交是为确保`redo log`和`binlog`逻辑一致,避免数据不一致。若先写`redo log`, crash后数据可能丢失,导致恢复后状态错误;若先写`binlog`,crash则可能导致重复事务,影响数据库一致性。一天一备相较于一周一备,能缩短“最长恢复时间”,但需权衡额外的存储成本。
16 1
|
20天前
|
存储 关系型数据库 MySQL
MySQL 查询优化:提速查询效率的13大秘籍(避免使用SELECT *、分页查询的优化、合理使用连接、子查询的优化)(上)
MySQL 查询优化:提速查询效率的13大秘籍(避免使用SELECT *、分页查询的优化、合理使用连接、子查询的优化)(上)

热门文章

最新文章