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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,高可用系列 2核4GB
云原生大数据计算服务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;


相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
目录
相关文章
|
2月前
|
SQL Oracle 关系型数据库
MySQL的sql_mode模式说明及设置
MySQL的sql_mode模式说明及设置
469 112
|
1月前
|
SQL 存储 关系型数据库
MySQL体系结构详解:一条SQL查询的旅程
本文深入解析MySQL内部架构,从SQL查询的执行流程到性能优化技巧,涵盖连接建立、查询处理、执行阶段及存储引擎工作机制,帮助开发者理解MySQL运行原理并提升数据库性能。
|
3月前
|
存储 SQL 关系型数据库
mysql底层原理:索引、慢查询、 sql优化、事务、隔离级别、MVCC、redolog、undolog(图解+秒懂+史上最全)
mysql底层原理:索引、慢查询、 sql优化、事务、隔离级别、MVCC、redolog、undolog(图解+秒懂+史上最全)
mysql底层原理:索引、慢查询、 sql优化、事务、隔离级别、MVCC、redolog、undolog(图解+秒懂+史上最全)
|
21天前
|
SQL 存储 分布式计算
【万字长文,建议收藏】《高性能ODPS SQL章法》——用古人智慧驾驭大数据战场
本文旨在帮助非专业数据研发但是有高频ODPS使用需求的同学们(如数分、算法、产品等)能够快速上手ODPS查询优化,实现高性能查数看数,避免日常工作中因SQL任务卡壳、失败等情况造成的工作产出delay甚至集群资源稳定性问题。
591 31
【万字长文,建议收藏】《高性能ODPS SQL章法》——用古人智慧驾驭大数据战场
|
5月前
|
负载均衡 算法 关系型数据库
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
本文聚焦 MySQL 集群架构中的负载均衡算法,阐述其重要性。详细介绍轮询、加权轮询、最少连接、加权最少连接、随机、源地址哈希等常用算法,分析各自优缺点及适用场景。并提供 Java 语言代码实现示例,助力直观理解。文章结构清晰,语言通俗易懂,对理解和应用负载均衡算法具有实用价值和参考价值。
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
|
10天前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS费用价格:MySQL、SQL Server、PostgreSQL和MariaDB引擎收费标准
阿里云RDS数据库支持MySQL、SQL Server、PostgreSQL、MariaDB,多种引擎优惠上线!MySQL倚天版88元/年,SQL Server 2核4G仅299元/年,PostgreSQL 227元/年起。高可用、可弹性伸缩,安全稳定。详情见官网活动页。
|
10天前
|
关系型数据库 分布式数据库 数据库
阿里云数据库收费价格:MySQL、PostgreSQL、SQL Server和MariaDB引擎费用整理
阿里云数据库提供多种类型,包括关系型与NoSQL,主流如PolarDB、RDS MySQL/PostgreSQL、Redis等。价格低至21元/月起,支持按需付费与优惠套餐,适用于各类应用场景。
|
1月前
|
SQL 监控 关系型数据库
SQL优化技巧:让MySQL查询快人一步
本文深入解析了MySQL查询优化的核心技巧,涵盖索引设计、查询重写、分页优化、批量操作、数据类型优化及性能监控等方面,帮助开发者显著提升数据库性能,解决慢查询问题,适用于高并发与大数据场景。
|
1月前
|
SQL 监控 关系型数据库
查寻MySQL或SQL Server的连接数,并配置超时时间和最大连接量
以上步骤提供了直观、实用且易于理解且执行的指导方针来监管和优化数据库服务器配置。务必记得,在做任何重要变更前备份相关配置文件,并确保理解每个参数对系统性能可能产生影响后再做出调节。
179 11

热门文章

最新文章

  • 1
    人工智能平台PAI产品使用合集之如何在odps上启动独立的任务
    185
  • 2
    DataWorks操作报错合集之出现报错“odps-0123055:用户脚本异常-Traceback(最后一次调用)”,如何解决
    431
  • 3
    人工智能平台PAI操作报错合集之在ODPS的xxx_dev项目空间调用easyrec训练,需要访问yyy项目空间的OSS,出现报错,是什么导致的
    139
  • 4
    MaxCompute操作报错合集之创建oss外部表时出现了报错:"Semantic analysis exception - external table checking failure, error message:,该怎么办
    413
  • 5
    MaxCompute操作报错合集之在本地用tunnel命令上传excel表格到mc遇到报错: tunnel upload C:\Users***\Desktop\a.xlsx mc里的非分区表名 -s false;该怎么办
    169
  • 6
    DataWorks操作报错合集之数据源同步时,使用脚本模式采集mysql数据到odps中,使用querySql方式采集数据,在脚本中删除了Reader中的column,但是datax还是报错OriginalConfPretreatmentUtil - 您的配置有误。如何解决
    379
  • 7
    MaxCompute操作报错合集之通过UDF调用异常(其他使用http调用正常)。报错:java.lang.NoSuchMethodError:是什么导致的
    178
  • 8
    MaxCompute操作报错合集之查询外部表insert到内部表报错,两表字段一致,是什么原因
    163
  • 9
    MaxCompute操作报错合集之出现报错:invalid dynamic partition value: \ufffd\ufffd\ufffd\ufffd\ufffd\ufffd是什么原因
    369
  • 10
    MaxCompute产品使用合集之如何设置每次返回超过10000行记录
    192
  • 推荐镜像

    更多