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

简介: 【大数据系列之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 
目录
相关文章
|
10月前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS费用价格:MySQL、SQL Server、PostgreSQL和MariaDB引擎收费标准
阿里云RDS数据库支持MySQL、SQL Server、PostgreSQL、MariaDB,多种引擎优惠上线!MySQL倚天版88元/年,SQL Server 2核4G仅299元/年,PostgreSQL 227元/年起。高可用、可弹性伸缩,安全稳定。详情见官网活动页。
1578 152
|
10月前
|
SQL 存储 关系型数据库
MySQL体系结构详解:一条SQL查询的旅程
本文深入解析MySQL内部架构,从SQL查询的执行流程到性能优化技巧,涵盖连接建立、查询处理、执行阶段及存储引擎工作机制,帮助开发者理解MySQL运行原理并提升数据库性能。
|
10月前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS支持MySQL、SQL Server、PostgreSQL和MariaDB引擎
阿里云数据库RDS支持MySQL、SQL Server、PostgreSQL和MariaDB引擎,提供高性价比、稳定安全的云数据库服务,适用于多种行业与业务场景。
1095 156
|
10月前
|
SQL 存储 分布式计算
【万字长文,建议收藏】《高性能ODPS SQL章法》——用古人智慧驾驭大数据战场
本文旨在帮助非专业数据研发但是有高频ODPS使用需求的同学们(如数分、算法、产品等)能够快速上手ODPS查询优化,实现高性能查数看数,避免日常工作中因SQL任务卡壳、失败等情况造成的工作产出delay甚至集群资源稳定性问题。
1736 36
【万字长文,建议收藏】《高性能ODPS SQL章法》——用古人智慧驾驭大数据战场
|
10月前
|
SQL 监控 关系型数据库
SQL优化技巧:让MySQL查询快人一步
本文深入解析了MySQL查询优化的核心技巧,涵盖索引设计、查询重写、分页优化、批量操作、数据类型优化及性能监控等方面,帮助开发者显著提升数据库性能,解决慢查询问题,适用于高并发与大数据场景。
|
10月前
|
SQL 关系型数据库 MySQL
MySQL的查询操作语法要点
储存过程(Stored Procedures) 和 函数(Functions) : 储存过程和函数允许用户编写 SQL 脚本执行复杂任务.
370 14
|
10月前
|
SQL 关系型数据库 MySQL
MySQL的查询操作语法要点
以上概述了MySQL 中常见且重要 的几种 SQL 查询及其相关概念 这些知识点对任何希望有效利用 MySQL 进行数据库管理工作者都至关重要
247 15
|
10月前
|
关系型数据库 分布式数据库 数据库
阿里云数据库收费价格:MySQL、PostgreSQL、SQL Server和MariaDB引擎费用整理
阿里云数据库提供多种类型,包括关系型与NoSQL,主流如PolarDB、RDS MySQL/PostgreSQL、Redis等。价格低至21元/月起,支持按需付费与优惠套餐,适用于各类应用场景。
|
10月前
|
SQL Java 关系型数据库
Java连接MySQL数据库环境设置指南
请注意,在实际部署时应该避免将敏感信息(如用户名和密码)硬编码在源码文件里面;应该使用配置文件或者环境变量等更为安全可靠地方式管理这些信息。此外,在处理大量数据时考虑使用PreparedStatement而不是Statement可以提高性能并防止SQL注入攻击;同时也要注意正确处理异常情况,并且确保所有打开过得资源都被正确关闭释放掉以防止内存泄漏等问题发生。
449 13

推荐镜像

更多