SQL世界之命令语句Ⅲ

目录

一、SQL JOIN

1.JOIN 和 Key

2.使用 JOIN

3.不同的 SQL JOIN

二、SQL INNER JOIN 关键字

1.SQL INNER JOIN 关键字

2.INNER JOIN 关键字语法

3.内连接(INNER JOIN)实例

三、SQL LEFT JOIN 关键字

1.SQL LEFT JOIN 关键字

2.LEFT JOIN 关键字语法

3.左连接(LEFT JOIN)实例

四、SQL RIGHT JOIN 关键字

1.SQL RIGHT JOIN 关键字

2.RIGHT JOIN 关键字语法

3.右连接(RIGHT JOIN)实例

五、SQL FULL JOIN 关键字

1.SQL FULL JOIN 关键字

2.FULL JOIN 关键字语法

3.全连接(FULL JOIN)实例

六、SQL UNION 和 UNION ALL 操作符

1.SQL UNION 操作符

2.SQL UNION 语法

3.SQL UNION ALL 语法

4.UNION 命令实例

5.UNION ALL

6.UNION ALL 命令实例

七、SQL SELECT INTO 语句

1.SELECT INTO 语句

2.SQL SELECT INTO 语法

3.SQL SELECT INTO 实例-制作备份复件

4.SQL SELECT INTO 实例-带有 WHERE 子句

5.SQL SELECT INTO 实例-被连接的表


一、SQL JOIN

1.JOIN 和 Key

SQL JOIN 用于根据两个或多个表中的列之间的关系,从这些表中查询数据。

注:数据库中的表可通过键将彼此联系起来。主键(Primary Key)是一个列,在这个列中的每一行的值都是唯一的。在表中,每个主键的值都是唯一的。这样做的目的是在不重复每个表中的所有数据的情况下,把表间的数据交叉捆绑在一起。

 "Persons" 表:

Id_P

LastName

FirstName

Address

City

001

Aam

Joh

Oxd Street

London

002

Buh

Grge

Fifth Aue

New York

003

Car

Tmas

Can Street

Beijing

"Id_P" 列是 Persons 表中的的主键,没有两行能够拥有相同的 Id_P。因此当两个人的姓名完全相同时,用Id_P 区分。

"Orders" 表:

Id_O

OrderNo

Id_P

1

77895

003

2

44678

003

3

22456

001

4

24562

001

5

34764

005

"Id_O" 列是 Orders 表中的的主键,同时,"Orders" 表中的 "Id_P" 列用于引用 "Persons" 表中的人,而无需使用确切姓名。

注:"Id_P" 列把上面的两个表联系了起来。

通过引用两个表,从而获取数据:“谁订购了产品,并且他们订购了什么产品?”的SQL语句:

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo

FROM Persons, Orders

WHERE Persons.Id_P = Orders.Id_P

结果集:

LastName

FirstName

OrderNo

Aam

Joh

22456

Aam

Joh

24562

Car

Tmas

77895

Car

Tmas

44678

2.使用 JOIN

列出所有人的定购,使用的 SELECT 语句:

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo

FROM Persons

INNER JOIN Orders

ON Persons.Id_P = Orders.Id_P

ORDER BY Persons.LastName

结果集:

LastName

FirstName

OrderNo

Aam

Joh

22456

Aam

Joh

24562

Car

Tmas

77895

Car

Tmas

44678

3.不同的 SQL JOIN

除了上面的例子中使用的 INNER JOIN(内连接),还可以使用其他几种连接:

JOIN: 如果表中有至少一个匹配,则返回行

LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行

RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行

FULL JOIN: 只要其中一个表中存在匹配,就返回行

二、SQL INNER JOIN 关键字

1.SQL INNER JOIN 关键字

在表中存在至少一个匹配时,INNER JOIN 关键字返回行。

2.INNER JOIN 关键字语法

SELECT column_name(s)

FROM table_name1

INNER JOIN table_name2

ON table_name1.column_name=table_name2.column_name

注:INNER JOIN 与 JOIN 是相同的。

"Persons" 表:

Id_P

LastName

FirstName

Address

City

001

Aam

Joh

Oxd Street

London

002

Buh

Grge

Fifth Aue

New York

003

Car

Tmas

Can Street

Beijing

"Orders" 表:

Id_O

OrderNo

Id_P

1

77895

003

2

44678

003

3

22456

001

4

24562

001

5

34764

005

3.内连接(INNER JOIN)实例

列出所有人的定购,使用的 SELECT 语句:

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo

FROM Persons

INNER JOIN Orders

ON Persons.Id_P=Orders.Id_P

ORDER BY Persons.LastName

结果集:

LastName

FirstName

OrderNo

Aam

Joh

22456

Aam

Joh

24562

Car

Tmas

77895

Car

Tmas

44678

注:INNER JOIN 关键字在表中存在至少一个匹配时返回行。如果 "Persons" 中的行在 "Orders" 中没有匹配,就不会列出这些行。

三、SQL LEFT JOIN 关键字

1.SQL LEFT JOIN 关键字

LEFT JOIN 关键字会从左表 (table_name1) 那里返回所有的行,即使在右表 (table_name2) 中没有匹配的行。

2.LEFT JOIN 关键字语法

SELECT column_name(s)

FROM table_name1

LEFT JOIN table_name2

ON table_name1.column_name=table_name2.column_name

注:在某些数据库中, LEFT JOIN 称为 LEFT OUTER JOIN。

"Persons" 表:

Id_P

LastName

FirstName

Address

City

001

Aam

Joh

Oxd Street

London

002

Buh

Grge

Fifth Aue

New York

003

Car

Tmas

Can Street

Beijing

"Orders" 表:

Id_O

OrderNo

Id_P

1

77895

003

2

44678

003

3

22456

001

4

24562

001

5

34764

005

3.左连接(LEFT JOIN)实例

列出所有的人,以及他们的定购(如果有的话),使用的 SELECT 语句:

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo

FROM Persons

LEFT JOIN Orders

ON Persons.Id_P=Orders.Id_P

ORDER BY Persons.LastName

结果集:

LastName

FirstName

OrderNo

Aam

Joh

22456

Aam

Joh

24562

Car

Tmas

77895

Car

Tmas

44678

Buh

Grge

注:LEFT JOIN 关键字会从左表 (Persons) 那里返回所有的行,即使在右表 (Orders) 中没有匹配的行。

四、SQL RIGHT JOIN 关键字

1.SQL RIGHT JOIN 关键字

RIGHT JOIN 关键字会右表 (table_name2) 那里返回所有的行,即使在左表 (table_name1) 中没有匹配的行。

2.RIGHT JOIN 关键字语法

SELECT column_name(s)

FROM table_name1

RIGHT JOIN table_name2

ON table_name1.column_name=table_name2.column_name

注:在某些数据库中, RIGHT JOIN 称为 RIGHT OUTER JOIN。

"Persons" 表:

Id_P

LastName

FirstName

Address

City

001

Aam

Joh

Oxd Street

London

002

Buh

Grge

Fifth Aue

New York

003

Car

Tmas

Can Street

Beijing

"Orders" 表:

Id_O

OrderNo

Id_P

1

77895

003

2

44678

003

3

22456

001

4

24562

001

5

34764

005

3.右连接(RIGHT JOIN)实例

列出所有的定单,以及定购它们的人(如果有的话),使用的 SELECT 语句:

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo

FROM Persons

RIGHT JOIN Orders

ON Persons.Id_P=Orders.Id_P

ORDER BY Persons.LastName

结果集:

LastName

FirstName

OrderNo

Aam

Joh

22456

Aam

Joh

24562

Car

Tmas

77895

Car

Tmas

44678

34764

注:RIGHT JOIN 关键字会从右表 (Orders) 那里返回所有的行,即使在左表 (Persons) 中没有匹配的行。

五、SQL FULL JOIN 关键字

1.SQL FULL JOIN 关键字

只要其中某个表存在匹配,FULL JOIN 关键字就会返回行。

2.FULL JOIN 关键字语法

SELECT column_name(s)

FROM table_name1

FULL JOIN table_name2

ON table_name1.column_name=table_name2.column_name

注:在某些数据库中, FULL JOIN 称为 FULL OUTER JOIN。

"Persons" 表:

Id_P

LastName

FirstName

Address

City

001

Aam

Joh

Oxd Street

London

002

Buh

Grge

Fifth Aue

New York

003

Car

Tmas

Can Street

Beijing

"Orders" 表:

Id_O

OrderNo

Id_P

1

77895

003

2

44678

003

3

22456

001

4

24562

001

5

34764

005

3.全连接(FULL JOIN)实例

列出所有的人和他们的定单,以及所有的定单和定购它们的人,使用的 SELECT 语句:

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo

FROM Persons

FULL JOIN Orders

ON Persons.Id_P=Orders.Id_P

ORDER BY Persons.LastName

结果集:

LastName

FirstName

OrderNo

Aam

Joh

22456

Aam

Joh

24562

Car

Tmas

77895

Car

Tmas

44678

Buh

Grge

34764

注:FULL JOIN 关键字会从左表 (Persons) 和右表 (Orders) 那里返回所有的行。如果 "Persons" 中的行在表 "Orders" 中没有匹配,或者如果 "Orders" 中的行在表 "Persons" 中没有匹配,这些行同样会列出。

六、SQL UNION 和 UNION ALL 操作符

1.SQL UNION 操作符

UNION 操作符用于合并两个或多个 SELECT 语句的结果集。

注:UNION 内部的 SELECT 语句必须拥有相同数量的列,并且列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。

2.SQL UNION 语法

SELECT column_name(s) FROM table_name1

UNION

SELECT column_name(s) FROM table_name2

注:UNION 操作符默认选取不同的值。如果允许重复的值,使用 UNION ALL。

3.SQL UNION ALL 语法

SELECT column_name(s) FROM table_name1

UNION ALL

SELECT column_name(s) FROM table_name2

注:UNION 结果集中的列名总是等于 UNION 中第一个 SELECT 语句中的列名。

Employees_China:

E_ID

E_Name

001

Li, Hua

002

Wang, Wei

003

Car, Tmas

004

Sun, Ming

Employees_USA:

E_ID

E_Name

001

Aam, Joh

002

Buh, Grge

003

Car, Tmas

004

Gates, Bill

4.UNION 命令实例

列出所有在中国和美国的不同的雇员名:

SELECT E_Name FROM Employees_China

UNION

SELECT E_Name FROM Employees_USA

结果集:

E_Name

Li, Hua

Wang, Wei

Car, Tmas

Sun, Ming

Aam, Joh

Buh, Grge

Gates, Bill

注:这个命令无法列出在中国和美国的所有雇员。有两个名字相同的雇员,只有一个人被列出来了。UNION 命令只会选取不同的值。

5.UNION ALL

UNION ALL 命令和 UNION 命令几乎是等效的,不过 UNION ALL 命令会列出所有的值。

SQL Statement 1

UNION ALL

SQL Statement 2

6.UNION ALL 命令实例

列出在中国和美国的所有的雇员:

SELECT E_Name FROM Employees_China

UNION ALL

SELECT E_Name FROM Employees_USA

结果

E_Name

Li, Hua

Wang, Wei

Car, Tmas

Sun, Ming

Aam, Joh

Buh, Grge

Car, Tmas

Gates, Bill

七、SQL SELECT INTO 语句

1.SELECT INTO 语句

SELECT INTO 语句从一个表中选取数据,然后把数据插入另一个表中。常用于创建表的备份复件或者用于对记录进行存档。

2.SQL SELECT INTO 语法

把所有的列插入新表:

SELECT *

INTO new_table_name [IN externaldatabase]

FROM old_tablename

只把希望的列插入新表:

SELECT column_name(s)

INTO new_table_name [IN externaldatabase]

FROM old_tablename

3.SQL SELECT INTO 实例-制作备份复件

制作 "Persons" 表的备份复件:

SELECT *

INTO Persons_backup

FROM Persons

IN 子句可用于向另一个数据库中拷贝表:

SELECT *

INTO Persons IN 'Backup.mdb'

FROM Persons

在 SELECT 语句后列出这些域,以达到拷贝的目的:

SELECT LastName,FirstName

INTO Persons_backup

FROM Persons

4.SQL SELECT INTO 实例-带有 WHERE 子句

从 "Persons" 表中提取居住在 "Beijing" 的人的信息,创建一个带有两个列的名为 "Persons_backup" 的表:

SELECT LastName,Firstname

INTO Persons_backup

FROM Persons

WHERE City='Beijing'

5.SQL SELECT INTO 实例-被连接的表

创建一个名为 "Persons_Order_Backup" 的新表,其中包含了从“Persons”和“Orders”两个表中取得的信息:

SELECT Persons.LastName,Orders.OrderNo

INTO Persons_Order_Backup

FROM Persons

INNER JOIN Orders

ON Persons.Id_P=Orders.Id_P

注:从一个以上的表中选取数据也是可以做到的。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/674886.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【doghead】VS2022 win11 安装配置WSL2 以编译linux端的cmake项目并运行2

【bifrost】VS2022 win11 安装配置WSL2 以编译linux端的cmake项目并运行1 完成了WSL2的安装。13900K 的电脑安装了ubuntu22.04构建中出现了一些问题,fix了。发现libuv 似乎不识别,认为是libuv.so ,无法让worker识别到uv 从而没构建。干脆单独构建好了,官方的脚本如此:而且…

bert分类模型使用

使用 bert-bert-chinese 预训练模型去做分类任务,这里找了新闻分类数据,数据有 20w,来自https://github.com/649453932/Bert-Chinese-Text-Classification-Pytorch/tree/master/THUCNews 数据 20w ,18w 训练数据,1w 验…

代码随想录算法训练营Day51|309.最佳买卖股票时机含冷冻期、714.买卖股票的最佳时机含手续费、股票问题总结

目录 309.最佳买卖股票时机含冷冻期 前言 思路 算法实现 714.买卖股票的最佳时机含手续费 前言 思路 算法实现 股票问题总结 309.最佳买卖股票时机含冷冻期 题目链接 文章链接 前言 本题在买卖股票II的基础上增加了一个冷冻期,因此就不能简单分为持有股票和卖…

【JavaWeb】头条新闻纯JavaWeb项目实现 项目搭建 数据库工具类导入 跨域问题 Postman 第一期 (前端Vue3+Vite)

文章目录 一、项目简介1.1 微头条业务简介1.2 技术栈介绍 二、项目部署三、准备工具类3.1 异步响应规范格式类3.2 MD5加密工具类3.3 JDBCUtil连接池工具类3.4 JwtHelper工具类3.4 JSON转换的WEBUtil工具类 四、准备各层的接口和实现类4.1 准备实体类和VO对象4.2 DAO层接口和实现…

222. 完全二叉树的节点个数 - 力扣(LeetCode)

题目描述 给你一棵 完全二叉树 的根节点 root ,求出该树的节点个数。 完全二叉树 的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干…

[职场] 线束设计求职简历范文 #媒体#其他#笔记

线束设计求职简历范文 线束设计是指根据汽车电气系统的需求和规范,进行车载线束的布局、连接和组装的过程。下面是线束设计求职简历范文,供大家参考。 个人信息 姓名:蓝山 年龄:26岁 地址:东莞 工作经验&#xff…

C++面试宝典第27题:完全平方数之和

题目 给定正整数 n,找到若干个完全平方数(比如:1、4、9、16、...),使得它们的和等于n。你需要让组成和的完全平方数的个数最少。 示例1: 输入:n = 12 输出:3 解释:12 = 4 + 4 + 4。 示例2: 输入:n = 13 输出:2 解释:13 = 4 + 9。 解析 这道题主要考察应聘者对于…

MFC研发自验用例编写应注意哪些关键测试点

MFC(Microsoft Foundation Classes)是一个用于开发Windows应用程序的C类库。在MFC应用程序的研发过程中,自验用例(自我验证测试用例)的编写是非常重要的一环,它有助于确保代码的质量、稳定性和功能正确性。…

Docker安装ElasticSearch8.9.0

安装ElasticSearch8.9.0 预先配置 1.在centos虚拟机中,修改配置sysctl.conf vim /etc/sysctl.conf2.加入配置 vm.max_map_count262144 3.启用配置 sysctl -p 注:这一步是为了防止启动容器时,报出如下错误: bootstrap checks …

MySQL- 运维-分库分表-Mycat

一、Mycat概述 1、安装 2、概念介绍 二、Mycat入门 启动服务 三、Mycat配置 1、schema.xml 2、rule.xml 3、server.xml 四、Mycat分片 1、垂直分库 2、水平分表 五、Mycat管理及监控 1、Mycat原理 2、Mycat管理工具 (1)、命令行 (2&#…

【软件设计师】普及软件知识产权中的商标法与专利法

🐓 商标法及实施条例 《中华人民共和国商标法》,自最早于1963年通过的第一版以来,已经做了多次修订,现在执行的是2001年10月27日通过、正式实施的。 🐓 注册商标 什么是商标 任何能够将自然人、法人及组织的商品与他…

【RPA】浅谈RPA技术及其应用

摘要:随着信息技术的飞速发展,企业对于自动化、智能化的需求日益增强。RPA(Robotic Process Automation,机器人流程自动化)技术应运而生,为企业提供了全新的自动化解决方案。本文首先介绍了RPA技术的基本概…

visiontransformerVIT

虽然 Transformer 架构已成为自然语言处理任务的事实标准,但其在计算机视觉中的应用仍然有限。在视觉上,注意力要么与卷积网络结合使用,要么用于替换卷积网络的某些组件,同时保持其整体结构不变。我们表明,这种对 CNN …

软件应用实例分享,电玩计时计费怎么算,佳易王PS5游戏计时器系统程序教程

软件应用实例分享,电玩计时计费怎么算,佳易王PS5游戏计时器系统程序教程 一、前言 以下软件教程以 佳易王电玩计时计费管理系统软件V17.9为例说明 软件文件下载可以点击最下方官网卡片——软件下载——试用版软件下载 点击开始计时后,图片…

python使用正则匹配判断字符串中含有某些特定子串及正则表达式详解

目录 一、判断字符串中是否含有字串 二、正则表达式 (一)基本内容 1.正则表达式修饰符——可选标志 2.正则表达式模式 (二)常见表达式函数 一、判断字符串中是否含有字串 in,not in 判断字符串中是否含有某些关…

hashmap的get原理

HashMap的 get() 方法用于根据给定的键获取对应的值。下面是HashMap的get()方法的大致原理: 首先,get() 方法会计算传入键的哈希码(hash code)。通过调用键对象的 hashCode() 方法来获取键的哈希码。 接下来,get() 方…

使用easyExcel 定义表头 字体 格式 颜色等,定义表内容,合计

HeadStyle 表头样式注解 HeadFontStyle 表头字体样式 HeadStyle(fillPatternType FillPatternTypeEnum.SOLID_FOREGROUND, fillForegroundColor 22) HeadFontStyle(fontHeightInPoints 12) 以下为实现效果

python实现rdbms和neo4j的转换

python&neo4j 一、连接neo4j二、rdbms转换到neo4j三、常见报错<一>、ValueError: The following settings are not supported 一、连接neo4j 下载依赖库 pip install py2neo连接neo4j from py2neo import Graph graph Graph("bolt://localhost:7687", …

Unity BuffSystem buff系统

Unity BuffSystem buff系统 一、介绍二、buff系统架构三、架构讲解四、框架使用buff数据Json数据以及工具ShowTypeBuffTypeMountTypeBuffOverlapBuffShutDownTypeBuffCalculateType时间和层数这里也不过多说明了如何给生物添加buff 五、总结 一、介绍 现在基本做游戏都会需要些…

leetcode-3的幂

326. 3 的幂 题解&#xff1a; 要判断一个整数是否是3的幂次方&#xff0c;我们可以使用循环或递归的方法。首先&#xff0c;我们需要处理一些特殊情况&#xff0c;例如当n为0时&#xff0c;返回false&#xff1b;当n为1时&#xff0c;返回true。然后&#xff0c;我们可以通过…