当前位置: 首页 > news >正文

MySQL数据库干货_16—— SQL99标准中的查询

SQL99标准中的查询

MySQL5.7 支持部分的SQL99 标准。

SQL99中的交叉连接(CROSS JOIN)

示例:

使用交叉连接查询 employees 表与 departments 表。

select * from employees cross join departments;
SQL99中的自然连接(NATURAL JOIN)

自然连接

连接只能发生在两个表中有相同名字和数据类型的列上。如果列有相同的名字,但数据类型不同,NATURAL JOIN 语法会引起错误。

自然连接查询

在图片例子中,LOCATIONS 表被用 LOCATION_ID 列连接到 DEPARTMENT表,这是在两个表中唯一名字相同的列。如果存在其它的同名同类型的列,自然连接会使用等值连接的方式连接他们,连接条件的关系为and。

自然连接也可以被写为等值连接:

SELECT d.department_id, d.department_name,d.location_id , l.cityFROMdepartments d , locations lWHEREd.location_id = l.location_id;

示例:

使用自然连接查询所有有部门的雇员的名字以及部门名称。

select e.last_name,d.department_name from employees e natural join departments d;
SQL99中的内连接(INNER JOIN)

image-20211110203253221

语法:

  • SELECT 查询列表;
  • FROM 表1 别名;
  • INNER JOIN 连接表(INNER关键字可省略);
  • ON 连接条件;

用ON子句指定连接条件

用ON子句指定更多的连接条件

示例:

查询雇员名字为 Fox 的雇员 ID ,薪水与部门名称。

select e.employee_id,e.salary,d.department_name from employees e inner JOIN departments d on e.department_id = d.department_id where e.last_name = 'Fox';
外连接查询(OUTER JOIN)

孤儿数据(Orphan Data)

孤儿数据是指被连接的列的值为空的数据。

左外连接(LEFT OUTER JOIN)

左外连接

左边的表 (EMPLOYEES) 中即使没有与 DEPARTMENTS 表中匹配的行,该查询

也会取回 EMPLOYEES 表中所有的行。

示例:

查询所有雇员的名字以及他们的部门名称,包含那些没有部门的雇员。

select e.last_name,d.department_name from employees e LEFT OUTER JOIN departments d on e.dept_id = d.department_id;
右外连接(RIGTH OUTER JOIN)

右外连接

右边的表 (DEPARTMENTS ) 中即使没有与 EMPLOYEES 表中匹配的行,该查询

也会取回 DEPARTMENTS 表中所有的行。

示例:

查询所有雇员的名字以及他们的部门名称,包含那些没有雇员的部门。

select  e.last_name,d.department_name from  employees  e RIGHT OUTER JOIN  departments  d on e.DEPARTMENT_ID = d.department_id;
全外连接(FULL OUTER JOIN)

注意: MySQL 中不支持 FULL OUTER JOIN 连接

可以使用 union 实现全完连接。

  • UNION: 可以将两个查询结果集合并,返回的行都是唯一的,如同对整个结果集合使用了 DISTINCT。
  • UNION ALL: 只是简单的将两个结果合并后就返回。这样,如果返回的两个结果集中有重复的数据, 那么返回的结果集就会包含重复的数据了。

语法结构

(SELECT  投影列 FROM 表名 LEFT OUTER JOIN  表名 ON  连接条件) 
UNION 
(SELECT  投影列 FROM 表名 RIGHT OUTER JOIN  表名 ON  连接条件)

示例:

查询所有雇员的名字以及他们的部门名称,包含那些没有雇员的部门以及没有部门的雇 员。

(select e.last_name,d.department_name from employees e LEFT OUTER JOIN departments d on  e.department_id =  d.department_id) 
UNION 
(select  e1.last_name,d1.department_name from employees e1 RIGHT OUTER JOIN departments d1 on d1.department_id = e1.department_id)
http://www.lryc.cn/news/215516.html

相关文章:

  • LLM大语言模型训练中常见的技术:微调与嵌入
  • 每日一练 | 网络工程师软考真题Day47
  • Kafka - 监控工具 Kafka Eagle:实时洞察Kafka集群的利器
  • infercnv hpc东南服务器 .libpath 最终使用monocle2环境安装
  • 【音视频 | Ogg】RFC3533 :Ogg封装格式版本 0(The Ogg Encapsulation Format Version 0)
  • Hadoop时代落幕,开源大数据将何去何从?
  • 作为一名程序员面临哪些挑战?应该如何应对?
  • flink的安装与使用(ubuntu)
  • 容器:软件性能测试的最佳环境
  • 【Qt控件之QMovie】详解
  • Star History 九月开源精选 |开源 GitHub Copilot 替代
  • 【Rabbit MQ】Rabbit MQ 消息的可靠性 —— 生产者和消费者消息的确认,消息的持久化以及消费失败的重试机制
  • C++设计模式_25_Interpreter 解析器
  • 能源化工过程-故障诊断数据集初探-田纳西-伊斯曼过程数据集
  • 【Linux】安装配置解决CentosMobaXterm的使用及Linux常用命令以及命令模式
  • 一台服务器安装两个mysql、重置数据库用于测试使用
  • JS动态转盘可手动设置份数与概率(详细介绍)
  • 在k8s中,etcd有什么作用?
  • conda配置虚拟环境相关记录
  • 数据库的本质永远都不会改变基础语句(第二十二课)
  • Object转List<>,转List<Map<>>
  • React使用富文本CKEditor 5,上传图片并可设置大小
  • 【工具使用】批量修改文件夹的时间操作
  • Android Snackbar
  • 详解API接口如何安全的传输数据(内附商品详情API接口接入方式)
  • 网工内推 | 大专以上,福利待遇好,IE认证优先(云厂商)
  • Python time strptime()和strftime()
  • 是谁家班主任还不知道 怎么发布期中成绩啊。
  • 损失函数(Loss Function)一文详解-聚类问题常见损失函数Python代码实现+计算原理解析
  • 测试用例设计方法 —— 场景法详解