SQL II

news/2024/12/12 23:34:13/

SQL II 多表操作

逻辑顺序

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

JOIN Queries

用来解决交叉表

将表进行叉乘之后再筛选

默认INNER JOIN

自然连接(Natural Join)

是关系型数据库中一种常用的连接操作,它在两个表中根据相同名称的列(通常是主键和外键)进行连接。自然连接会自动匹配两个表中列名相同的字段,并且去除重复的列。

自然连接的特点:

  1. 自动匹配列:自然连接会自动识别两个表中列名相同的列,并根据这些列进行连接。
  2. 去除重复列:在连接结果中,重复的列会被去除,避免出现冗余信息。
  3. 基于相等条件:自然连接的本质是基于列的相等进行连接。

Left Outer Join

左表不匹配的项也会出现一次,没有匹配的地方填充null

Right Outer Join

同理

Full Outer Join

left+right

alias

输出结果可以取别名

FROM里面也可以取别名

可以在select, where任意地方进行算数

其他功能

可以当个单纯的计算机

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

String Comparsion

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

正则表达式

基本正则表达式符号

  1. 字符匹配
    • 普通字符ab1A 都表示字符本身。
    • .:匹配除换行符以外的任何单个字符。例如,a.b 可以匹配 aabacba-b 等。
    • \:用于转义特殊字符,例如 \\ 匹配反斜杠,\. 匹配点号。
  2. 字符类(Character classes)
    • [abc]:匹配字符 abc 中的任意一个。
    • [a-z]:匹配任何小写字母。
    • [0-9]:匹配任何数字。
    • [^abc]:匹配除了 abc 以外的任何字符。
    • \d:匹配任何数字,等价于 [0-9]
    • \w:匹配任何字母数字字符(包括下划线),等价于 [a-zA-Z0-9_]
    • \s:匹配任何空白字符,包括空格、制表符和换行符。
  3. 量词(Quantifiers)
    • \*:匹配前一个字符零次或多次。例如,a* 匹配零个或多个 a 字符。
    • +:匹配前一个字符一次或多次。例如,a+ 匹配一个或多个 a 字符。
    • ?:匹配前一个字符零次或一次。例如,a? 匹配零个或一个 a 字符。
    • {n}:精确匹配前一个字符出现的次数。例如,a{3} 只匹配 aaa
    • {n,}:匹配前一个字符出现至少 n 次。例如,a{2,} 匹配两个或更多 a 字符。
    • {n,m}:匹配前一个字符出现至少 n 次,最多 m 次。例如,a{2,4} 匹配 aaaaaaaaa
  4. 位置匹配符
    • ^:匹配字符串的开头。例如,^abc 匹配以 abc 开头的字符串。
    • $:匹配字符串的结尾。例如,abc$ 匹配以 abc 结尾的字符串。
    • \b:匹配单词边界。例如,\babc\b 匹配独立的 abc,不会匹配 xabcabcx
  5. 分组和选择
    • ():用来分组或捕获子表达式。例如,(abc) 捕获 abc 字符串。
    • |:表示“或”操作,匹配左边或右边的表达式。例如,a|b 匹配 ab
  6. 其他特殊字符
    • \d:匹配任何数字字符,等价于 [0-9]
    • \w:匹配任何字母数字字符,等价于 [a-zA-Z0-9_]
    • \s:匹配任何空白字符

set集合关系

UNION

UNION 是 SQL 中用于合并两个或多个查询结果的操作符。它允许你将多个 SELECT 语句的结果合并为一个结果集,返回的是一个去重后的集合。也就是说,UNION 会自动去除重复的行。如果你希望保留重复的行,可以使用 UNION ALL

INTERSECT

INTERSECT 是 SQL 中的一个集合运算符,用于返回两个查询结果集的交集。即,它只会返回两个 SELECT 查询结果中同时存在的行(即两个查询都返回的相同数据)。如果某个记录只在一个查询结果中出现,而在另一个查询结果中没有出现,INTERSECT 会把它排除在外。

  • INTERSECT ALL: min of cardinalities

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

EXCEPT

EXCEPT 是 SQL 中的一个集合操作符,用于返回第一个查询结果中有,但第二个查询结果中没有的记录。它基本上返回的是第一个查询和第二个查询的差集,即 SELECT 查询的结果集中,存在于第一个查询中而不存在于第二个查询中的行

  • EXCEPT ALL:difference of cardinalities <0的结果不输出
  • 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

IN

WHERE里可以用IN后面跟一个集合(可以是subquery)

还可以写NOT IN不在这个集合里面

EXISTS

如果子查询里面有结果,就返回true(正常返回主查询)

如果子查询为空,主查询不返回东西

相当于一个函数每一个外部的都会放入子查询

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

ALL

ALL 是 SQL 中的一个关键字,用于与子查询一起使用,用来对比一个列的值与子查询返回的所有结果集合。ALL 可以用在 WHERE 子句中,通常与比较运算符(如 =, <, >, <=, >=, !=)配合使用。

CREATE VIEW

类似于编程中的函数 适合复杂查询分解成小部分

  1. 可以将复杂逻辑切换成简单部分
  2. 保证了安全性,只给予view的权限,不给表的权限
  3. 不会储存,而是每次都进行计算

可以就像使用常规表和查询一样

也可以不用view,只用一次的查询,可以直接放在from里

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这个from里面的内容就是写的筛选出红色船有多少只 在from里面动态执行

WITH

后续可以复用的表外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

可以互相进行级联

NULL VALUE

SQL中的每一个数据类型都可以由null

如何判断NULL (转换成boolean值)

IS null

IS NOT null

聚合函数会自动忽略null

三值逻辑(Three-Valued Logic)

SQL 使用三值逻辑来处理 NULL,即除了 TRUEFALSE,还允许 UNKNOWN(未知)值。如果一个表达式涉及 NULL,结果通常为 UNKNOWN。这就是为什么在 NULL 和任何值进行比较时,不能直接得到 TRUEFALSE,而是得到 UNKNOWN外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传


http://www.ppmy.cn/news/1554614.html

相关文章

pika:适用于大数据量持久化的类redis组件|简介及安装(一)

文章目录 0. 引言1. pika简介2. pika安装3. pika设置开机自启4. pika主从搭建5. pika哨兵模式实现自动容灾总结 0. 引言 最近因为公司中用到pika组件&#xff0c;于是将研究过程和理解进行系统记录&#xff0c;以供后续参考。 1. pika简介 pika是360开发的一款国产类redis的…

linux 架构详解

Linux 是一种开源的操作系统内核&#xff0c;最初由 Linus Torvalds 于 1991 年创建。它是一个基于 Unix 的操作系统内核&#xff0c;用于构建完整的操作系统。Linux 架构是指 Linux 操作系统的内部结构和组成组件的工作方式。 整体架构 Linux系统通常被看作是一个层次化的结…

循环神经网络(RNN)原理及实现

一、引言 在深度学习领域&#xff0c;循环神经网络&#xff08;Recurrent Neural Network&#xff0c;RNN&#xff09;是一类具有独特结构和强大功能的神经网络模型。与传统的前馈神经网络不同&#xff0c;RNN 能够处理序列数据&#xff0c;如时间序列数据、文本数据等&#x…

【RocketMQ 源码分析(一)】设计理念与源码阅读技巧

RocketMQ 的设计理念与源码阅读技巧 一、设计理念二、源码设计三、源码阅读技巧 一直想仔细仔细看看这个 RocketMQ 的源码&#xff0c;学学它的设计思想和编码风格&#xff0c;没准在以后自己在设计和编码的时候有思考的方向。这是专栏的第一篇 —— 介绍下 RocketMQ 的一些设计…

硬件设计 | Altium Designer软件PCB规则设置

基于Altium Designer&#xff08;24.9.1&#xff09;版本 嘉立创PCB工艺加工能力范围说明-嘉立创PCB打样专业工厂-线路板打样 规则参考-嘉立创 注意事项 1.每次设置完规则参数都要点击应用保存 2.每次创建PCB&#xff0c;都要设置好参数 3.可以设置默认规则&#xff0c;将…

图像边缘检测示例(综合利用阈值分割、数学形态学和边缘检测算子)

一、问题 读入一副灰度图像&#xff08;如果是彩色图像&#xff0c;可以先将其转化为灰度图像&#xff09;&#xff0c;然后提取比较理想的灰度图像边缘。这里以moon.tif为例。 二、算法 大家一开始容易想到直接利用MATLAB的内置函数edge并采用不同边缘提取算子进行边缘提取&a…

如何选择安全、可验证的技术?

澳大利亚信号局的澳大利亚网络安全中心 (ASD 的 ACSC) 发布了一份指导文件&#xff0c;题为《选择安全和可验证的技术》&#xff0c;旨在帮助组织在采购软件&#xff08;专有或开源&#xff09;、硬件&#xff08;例如物联网设备&#xff09;和云服务&#xff08;SaaS、MSP 服务…

/usr/local/go/bin/go: cannot execute binary file: Exec format error

现象&#xff1a;ubuntu中安装go软件环境&#xff0c;报上述错误 原因&#xff1a;系统与软件不适配 解决&#xff1a;查看本系统的版本 找到x86-64对应的go版本即可