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
注:从一个以上的表中选取数据也是可以做到的。
相关文章:
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 关…...
Snoop Version 2 Packet Capture File Format
RFC1761 - Snoop Version 2 Packet Capture File Format, FEBRUARY 1995 本备忘录的状态 本备忘录为互联网社区提供帮助信息。 本备忘录不作为任何类型的互联网标准。 本备忘录的分发不受限制。 Status of this Memo This memo provides information for the Internet communit…...
扩展说明: 指令微调 Llama 2
这篇博客是一篇来自 Meta AI,关于指令微调 Llama 2 的扩展说明。旨在聚焦构建指令数据集,有了它,我们则可以使用自己的指令来微调 Llama 2 基础模型。 目标是构建一个能够基于输入内容来生成指令的模型。这么做背后的逻辑是,模型如…...
VUE 全局设置防重复点击
请求后端防止重复点击,用户点击加入遮罩层,请求完毕关闭遮罩层 我们利用请求拦截器,在用户点击的时候,弹出遮罩层 本文采用i18n国际化 element plus UI,提取你想要的,这里不做简化 完整代码如下…...
备战蓝桥杯---动态规划(基础1)
先看几道比较简单的题: 直接f[i][j]f[i-1][j]f[i][j-1]即可(注意有马的地方赋值为0) 下面是递推循环方式实现的AC代码: #include<bits/stdc.h> using namespace std; #define int long long int a[30][30]; int n,m,x,y; …...
CVE-2018-19518 漏洞复现
CVE-2018-19518 漏洞介绍 IMAP协议(因特网消息访问协议)它的主要作用是邮件客户端可以通过这种协议从邮件服务器上获取邮件的信息,下载邮件等。它运行在TCP/IP协议之上,使用的端口是143。在php中调用的是imap_open函数。 PHP 的…...
Python爬虫实战:抓取猫眼电影排行榜top100#4
爬虫专栏系列:http://t.csdnimg.cn/Oiun0 抓取猫眼电影排行 本节中,我们利用 requests 库和正则表达式来抓取猫眼电影 TOP100 的相关内容。requests 比 urllib 使用更加方便,而且目前我们还没有系统学习 HTML 解析库,所以这里就…...
Fiddler抓包工具之fiddler界面工具栏介绍
Fiddler界面工具栏介绍 (1)WinConfig:windows 使用了一种叫做“AppContainer”的隔离技术,使得一些流量无法正常捕获,在 fiddler中点击 WinConfig 按钮可以解除这个诅咒,这个与菜单栏 Tools→Win8 Loopback…...
LabVIEW工业监控系统
LabVIEW工业监控系统 介绍了一个基于LabVIEW软件开发的工业监控系统。系统通过虚拟测控技术和先进的数据处理能力,实现对工业过程的高效监控,提升系统的自动化和智能化水平,从而满足现代工业对高效率、高稳定性和低成本的需求。 随着工业自…...
Linux 文件连接:符号链接与硬链接
Linux 文件连接:符号链接与硬链接 介绍 在 Linux 系统中,文件连接是一个强大的概念,它允许我们在文件系统中创建引用,从而使得文件和目录之间产生联系。在本文中,我们将深入探讨两种主要类型的文件连接:符…...
数据分类分级
一段时间没写文章了,最近做政府数据治理方面的项目,数据治理一个重要的内容是数据安全,会涉及数据的分类分级,是数据治理的基础。 随着“十四五”规划推行,数据要素概念与意识全面铺开,国家、政府机构、企业…...
第三十天| 51. N皇后
Leetcode 51. N皇后 题目链接:51 N皇后 题干:按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。 n 皇后问题 研究的是如何将 n 个皇后放置在 nn 的棋盘上,并且使皇后彼此之间不能相互攻击。 给你一个整…...
pythn-scipy 查漏补缺
1. 2. 3. 4. 5. 6. 7. 8. 9. 偏度 skewness,峰度 kurtosis...
【JavaScript 漫游】【013】Date 对象知识点摘录
文章简介 本文为【JavaScript 漫游】专栏的第 013 篇文章,记录了 JS 语言中 Date 对象的重要知识点。 普通函数的用法构造函数的用法日期的运算静态方法,包括:Date.now()、Date.parse() 和 Date.UTC()实例方法,包括:…...
vue.config.js和webpack.config.js区别
webpack.config.js和vue.config.js的区别 webpack.config.js是webpack的配置文件,所有使用webpack作为打包工具的项目都可以使用,vue的项目可以使用,react的项目也可以使用。 vue.config.js是vue项目的配置文件,专用于vue项目。…...
H12-821_73
73.某台路由器Router LSA如图所示,下列说法中错误的是? A.本路由器的Router ID为10.0.12.1 B.本路由器为DR C.本路由器已建立邻接关系 D.本路由器支持外部路由引入 答案:B 注释: LSA中的链路信息Link ID,Data…...
postman执行批量测试
1.背景 有许多的人常常需要使用第三方系统进行重复的数据查询,本文介绍使用PostMan的方式对数据进行批量的查询,减少重复的劳动。 2.工具下载 3.初入门 一、如图示进行点击,创建collection 二、输入对应的名称 三、创建Request并进行查…...
蓝桥杯基础知识8 list
蓝桥杯基础知识8 list 01 list 的定义和结构 lits使用频率较低,是一种双向链表容器,是标准模板库(STL)提供的一种序列容器,lsit容器以节点(node)的形式存储元素,使用指针将这些节点链…...
【DDD】学习笔记-理解领域模型
Eric Evans 的领域驱动设计是对软件设计领域的一次重新审视,是在面向对象语言大行其道时对数据建模的“拨乱反正”。Eric 强调了模型的重要性,例如他在书中总结了模型在领域驱动设计中的作用包括: 模型和设计的核心互相影响模型是团队所有成…...
v-if 和v-show 的区别
第074个 查看专栏目录: VUE ------ element UI 专栏目标 在vue和element UI联合技术栈的操控下,本专栏提供行之有效的源代码示例和信息点介绍,做到灵活运用。 提供vue2的一些基本操作:安装、引用,模板使用,computed&a…...
Linux应用开发之网络套接字编程(实例篇)
服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …...
Docker 离线安装指南
参考文章 1、确认操作系统类型及内核版本 Docker依赖于Linux内核的一些特性,不同版本的Docker对内核版本有不同要求。例如,Docker 17.06及之后的版本通常需要Linux内核3.10及以上版本,Docker17.09及更高版本对应Linux内核4.9.x及更高版本。…...
Ubuntu系统下交叉编译openssl
一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机:Ubuntu 20.04.6 LTSHost:ARM32位交叉编译器:arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...
springboot 百货中心供应链管理系统小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,百货中心供应链管理系统被用户普遍使用,为方…...
PHP和Node.js哪个更爽?
先说结论,rust完胜。 php:laravel,swoole,webman,最开始在苏宁的时候写了几年php,当时觉得php真的是世界上最好的语言,因为当初活在舒适圈里,不愿意跳出来,就好比当初活在…...
大数据零基础学习day1之环境准备和大数据初步理解
学习大数据会使用到多台Linux服务器。 一、环境准备 1、VMware 基于VMware构建Linux虚拟机 是大数据从业者或者IT从业者的必备技能之一也是成本低廉的方案 所以VMware虚拟机方案是必须要学习的。 (1)设置网关 打开VMware虚拟机,点击编辑…...
Go 语言接口详解
Go 语言接口详解 核心概念 接口定义 在 Go 语言中,接口是一种抽象类型,它定义了一组方法的集合: // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的: // 矩形结构体…...
JVM垃圾回收机制全解析
Java虚拟机(JVM)中的垃圾收集器(Garbage Collector,简称GC)是用于自动管理内存的机制。它负责识别和清除不再被程序使用的对象,从而释放内存空间,避免内存泄漏和内存溢出等问题。垃圾收集器在Ja…...
linux arm系统烧录
1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 (忘了有没有这步了 估计有) 刷机程序 和 镜像 就不提供了。要刷的时…...
WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成
厌倦手动写WordPress文章?AI自动生成,效率提升10倍! 支持多语言、自动配图、定时发布,让内容创作更轻松! AI内容生成 → 不想每天写文章?AI一键生成高质量内容!多语言支持 → 跨境电商必备&am…...
