SQL语句(以MySQL为例)——单表、多表查询
笛卡尔积(或交叉连接):
笛卡尔乘积是一个数学运算。假设我有两个集合 X 和 Y,那么 X 和 Y 的笛卡尔积就是 X 和 Y 的所有可能组合,也就是第一个对象来自于 X,第二个对象来自于 Y 的所有可能。组合的个数即为两个集合中元素个数的乘积数。
使用 CROSS JOIN表示交叉连接。它的作用就是可以把任意表进行连接,即使这两张表不相关。
1.多表联查
多表查询,也称为关联查询,指两个或更多个表一起完成查询操作。
前提条件:这些一起查询的表之间是有关系的(一对一、一对多),它们之间一定是有关联字段,这个关联字段可能建立了外键,也可能没有建立外键。
SELECT table1.column, table2.column
FROM table1, table2
WHERE table1.column1 = table2.column2; #连接条件
1.等值连接和非等值连接
SELECT employees.employee_id, employees.last_name, employees.department_id, departments.department_id,departments.location_id
FROM employees, departments
WHERE employees.department_id = departments.department_id;
表的别名:使用别名可以简化查询。列名前使用表名前缀可以提高查询效率。
使用别名后:
SELECT e.employee_id, e.last_name, e.department_id,d.department_id, d.location_id
FROM employees e , departments d
WHERE e.department_id = d.department_id;
等值:是where条件那一行在两表中的值是相等的。
非等值:是where条件那一行的值不与另一表中的行相等,而是其他关系。
非等值例子:EMPLOYEES表中员工工资应在JOB_GRADES表的最高工资和最低工资之间。
SELECT e.last_name, e.salary, j.grade_level
FROM employees e, job_grades j
WHERE e.salary BETWEEN j.lowest_sal AND j.highest_sal;
2.自连接
当table1和table2本质上是同一张表,只是用取别名的方式虚拟成两张表以代表不同的意义。然后两个表再进行内连接,外连接等查询。
SELECT CONCAT(worker.last_name ,' works for ' , manager.last_name)
FROM employees worker, employees manager
WHERE worker.manager_id = manager.employee_id ;
3.内连接&外连接
-
内连接: 合并具有同一列的两个以上的表的行, 结果集中不包含一个表与另一个表不匹配的行
-
外连接: 两个表在连接过程中除了返回满足连接条件的行以外还返回左(或右)表中不满足条件的行 ,这种连接称为左(或右) 外连接。没有匹配的行时, 结果表中相应的列为空(NULL)。
-
如果是左外连接,则连接条件中左边的表也称为主表,右边的表称为从表。
-
如果是右外连接,则连接条件中右边的表也称为主表,左边的表称为从表。
-
9种Join方式

(1)inner
SELECT o.order_id, o.customer_id, o.order_date, o.amount, c.customer_name
FROM orders o
INNER JOIN customers c
ON o.customer_id = c.customer_id;
不包含不匹配的,指的是行,不是列属性。

(2)LEFT JOIN
左外连接,则连接条件中左边的表也称为主表,右边的表称为从表。
SELECT o.order_id, o.customer_id, c.customer_id, o.order_date, o.amount, c.customer_name
FROM orders o
LEFT JOIN customers c
ON o.customer_id = c.customer_id;

(4)RIGHT JION
右外连接,则连接条件中右边的表也称为主表,左边的表称为从表。
(5)LEFT JOIN WHERE IS NULL
左为主表,把两个表相同的部分行扣去
SELECT o.order_id, o.customer_id, c.customer_id, o.order_date, o.amount, c.customer_name
FROM orders o
LEFT JOIN customers c
ON o.customer_id = c.customer_id;
WHERE c.customer_id IS NULL
(6)RIGHT JOIN WHERE IS NULL
右为主表,把两个表相同的部分行扣去
UNION
合并查询结果
利用UNION关键字,将多条SELECT语句的结果组合成单个结果集。合并时,两个表对应的列数和数据类型必须相同,并且相互对应。各个SELECT语句之间使用UNION或UNION ALL关键字分隔。
- UNION 操作符返回两个查询的结果集的并集,去除重复记录。
- UNION ALL操作符返回两个查询的结果集的并集。对于两个结果集的重复部分,不去重。
这个博客介绍得很详细,例子也很清楚 MYSQL多表查询
2.单表查询
select 字段列表
from 表名列表
where 条件列表
group by分组字段
having分组后条件
order by排序字段
limit分页限定
条件查询

查询年龄等于18岁 或者 年龄等于20岁 或者 年龄等于22岁的学员信息select * from stu where age = 18 or age = 20 or age = 22;
select * from stu where age in (18,20 ,22);null值的比较不能使用 = 或者 != 。需要使用 is 或者 is notselect * from stu where english is null;
select * from stu where english is not null;
模糊查询
模糊查询使用like关键字,可以使用通配符进行占位:
(1)_ : 代表单个任意字符
(2)% : 代表任意个数字符
select * from stu where name like '_花%';
排序查询
select 字段列表 from 表名 order by 排序字段名1 [排序方式1],排序字段名2 [排序方式2] …;
ASC : 升序排列 (默认值)
DESC : 降序排列
注:如果有多个排序条件,当前边的条件值一样时,才会根据第二条件进行排序
查询学生信息,按照年龄升序排列
select * from stu order by age ;查询学生信息,按照数学成绩降序排列select * from stu order by math desc ;查询学生信息,按照数学成绩降序排列,如果数学成绩一样,再按照英语成绩升序排列select * from stu order by math desc , english asc ;
聚合查询
函数名 功能
count(列名) 统计数量(一般选用不为null的列)
max(列名) 最大值
min(列名) 最小值
sum(列名) 求和
avg(列名) 平均值
select 聚合函数名(列名) from 表;
注意:null 值不参与所有聚合函数运算统计班级一共有多少个学生
select count(*) from stu;查询数学成绩的最高分
select max(math) from stu;查询数学成绩的最低分
select min(math) from stu;查询数学成绩的总分
select sum(math) from stu;查询数学成绩的平均分
select avg(math) from stu;查询英语成绩的最低分
select min(english) from stu;
分页查询
select 字段列表 from 表名 limit 起始索引 , 查询条目数;
起始索引计算公式:
起始索引 = (当前页码 - 1) * 每页显示的条数
从0开始查询,查询3条数据
select * from stu limit 0 , 3;每页显示3条数据,查询第1页数据
select * from stu limit 0 , 3;每页显示3条数据,查询第2页数据
select * from stu limit 3 , 3;每页显示3条数据,查询第3页数据
select * from stu limit 6 , 3;相关文章:
SQL语句(以MySQL为例)——单表、多表查询
笛卡尔积(或交叉连接): 笛卡尔乘积是一个数学运算。假设我有两个集合 X 和 Y,那么 X 和 Y 的笛卡尔积就是 X 和 Y 的所有可能组合,也就是第一个对象来自于 X,第二个对象来自于 Y 的所有可能。组合的个数即为两个集合中…...
C++第二十八弹---进一步理解模板:特化和分离编译
✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】【C详解】 目录 1. 非类型模板参数 2. 模板的特化 2.1 概念 2.2 函数模板特化 2.3 类模板特化 2.3.1 全特化 2.3.2 偏特化 2.3.3 类模板特化应用示例 3. …...
正则表达式的独占模式,懒惰模式等有那些区别
正则表达式的独占模式、懒惰模式(也称为非贪婪模式)和贪婪模式(默认模式)在匹配行为上存在显著的区别。以下是这三种模式的详细解释和区别: 1、贪婪模式(Greedy): 默认情况下&…...
【INTEL(ALTERA)】Quartus® Prime Pro Edition 软件 v24.2 中,哪些 Agilex™ 5 IP 功能的硬件验证有限?
目录 说明 解决方法 说明 如下表所示,Quartus Prime 专业版软件 24.2 版为 Agilex™ 5 IP 或功能提供有限的硬件支持。此外,设备的设备型号、比特流和固件尚未最终确定。 影响 Agilex™ 5 特定功能的已知问题可参阅 Agilex 5 知识库文章搜索。 解决…...
Lua编程
文章目录 概述lua数据类型元表注意 闭包表现 实现 lua/c 接口编程skynet中调用层次虚拟栈C闭包注册表userdatalightuserdata 小结 概述 这次是skynet,需要一些lua/c相关的。写一篇博客,记录下。希望有所收获。 lua数据类型 boolean , number , string…...
2019数字经济公测大赛-VMware逃逸
文章目录 环境搭建漏洞点exp 环境搭建 ubuntu :18.04.01vmware: VMware-Workstation-Full-15.5.0-14665864.x86_64.bundle 这里环境搭不成功。。patch过后就报错,不知道咋搞 发现可能是IDA加载后的patch似乎不行对原来的patch可能有影响,重新下了patch&…...
如何改桥接模式
桥接模式主要是解决 路由功能的 因为NAT多层 主要是网络连接数太多时 然后路由器要好 不然光猫 比差路由要强的 光猫 请注意,对光猫的任何设置进行修改前,请一定要备份光猫的配置文件,并在每次修改前都截图保存原始设置信息!不要…...
江科大/江协科技 STM32学习笔记P13
文章目录 TIM定时中断1、TIM简介计数器PSC预分频器ARR自动重装寄存器 2、定时器类型基本定时器主模式触发DAC 通用定时器高级定时器 3、定时器原理定时中断基本结构预分频器时序计数器时序RCC时钟树 TIM定时中断 1、TIM简介 定时器的基准时钟一般都是主频72MHz,如果…...
loadrunner录制解决提示安全问题
点击页面任意位置,输入: thisisunsafe...
为什么要读写分离?如何实现业务系统读写分离?
信息化水平提升,很多企业已经接受并高频使用多样的业务系统进行日常作业,而在不断的使用过程中,部分行业和业务,如:直播电商、基础制造、公关传媒等,由于自身特点的原因,常常积累了海量的数据。…...
C#基础——类、构造函数和静态成员
类 类是一个数据类型的蓝图。构成类的方法和变量称为类的成员,对象是类的实例。类的定义规定了类的对象由什么组成及在这个对象上可执行什么操作。 class 类名 { (访问属性) 成员变量; (访问属性) 成员函数; } 访问属性:public(公有的&…...
hadoop学习(二)
一.MapReduce 1.1定义:是一个分布式运算程序的编程框架 1.2核心功能:将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序,并发运行在一个Hadoop集群上。 1.3优点 1)易于编程 它简单的实现一些接口&#…...
WXZ196微机消谐装置的运行方式了解一下
WXZ196微机消谐装置是一种用于抑制铁磁谐振的设备,可以在电力系统中快速消除各种频率的铁磁谐振,同时可以区分过电压、铁磁谐振以及单相接地,并给出相应的报警信号。该装置采用高速增强型单片机作为核心元件,对PT开口三角电压进行…...
单链表的建立
一.前言 单链表的建立一共有两种方法,一种是头插法,将元素插入在链表的头部,也叫前插法。另外一种则就是尾插法,将元素插入在链表尾部,也叫后插法。 二. 头插法 首先从一个空表开始,重复读入数据࿱…...
Shell脚本编程学习
IPv4和IPv6有什么区别? - 知乎 (zhihu.com) Shell 是一个命令解释权,它为用户提供了一个向 Linux 内核发送请求以便运行程序界面系统级程序,用户可以用 Shell 来启动、挂起、停止甚至是编写一些程序。 可以查看当前系统的进程 ps -ef...
从宏基因组量化细菌生长动态
Introduciton 了解细菌在各种环境中的生长动态对于人类健康和环境监测等广泛领域至关重要。传统研究细菌生长的方法往往依赖于培养技术,这不仅耗时,而且对易培养的物种有偏向。然而,随着宏基因组测序技术的兴起,我们现在可以直接…...
Linux---git工具
目录 初步了解 基本原理 基本用法 安装git 拉取远端仓库 提交三板斧 1、添加到缓存区 2、提交到本地仓库 3、提交到远端 其他指令补充 多人协作管理 windows用户提交文件 Linux用户提交文件 初步了解 在Linux中,git是一个指令,可以帮助我们做…...
【JavaScript】函数的动态传参
Javacript(简称“JS”)是一种具有函数优先的轻量级,解释型或即时编译型的编程语言。虽然它是作为开发Web页面的脚本语言而出名,但是它也被用到了很多非浏览器环境中,JavaScript基于原型编程、多范式的动态脚本语言&…...
从0到1,AI我来了- (4)AI图片识别的理论知识-II
上篇文章,我们理解了我们程序的神经网络设计,这篇我们继续,把训练迭代过程分析一下,完成这两篇文章,下面问题,应该能回答了。 一张图片,如何被计算机读懂?pytorch 封装的网络&#…...
2024 Java 高分面试宝典 一站式搞定技术面
前言 每年9月和10月,被业界称为“金九银十”,这是人才市场一年中最活跃的时期。此时,企业为了来年的业务扩展,纷纷加大招聘力度,空缺岗位众多,招聘需求集中。同时,初秋的招聘活动也避开酷暑&am…...
嵌入式开发中的编程规范实践与行业标准解析
1. 编程规范的本质与价值在嵌入式汽车电子领域干了十五年,我见过太多因为代码不规范导致的惨痛教训。有一次,某车企的ECU控制模块在零下30度环境突然死机,排查三周后发现是未初始化的指针在低温环境下产生了非预期行为——这种问题本可以通过…...
从零构建智能Line机器人:基于ChatGPT API的即时通讯AI助手开发指南
1. 项目概述:一个能帮你“翻译”一切的Line机器人 如果你经常使用Line,并且对ChatGPT这类AI助手的能力感到好奇,那么“ChatGPT-Line-Bot”这个项目,可能就是为你量身定做的。简单来说,它是一个架设在Line平台上的聊天…...
网页布局基石----盒子模型
目录 一:盒模型的构成 二:盒模型的核心属性 三:标准盒子模型代码实例 CSS控制网页样式是通过盒子模型去实现的,日常中我们所看到的网页上所以标签都可以视为一个盒子。所以网页都是放在盒子里面的。因此,我们首先要…...
AI应用开发面试题总结(非八股文)
前端请求超过 3 秒,怎么分析原因? 1.看前端和网络 F12开发者模式去查看network,首先判断是前端问题还是后端问题 通过查看接口 Waiting 时间进行判断是后端响应时间太长还是说前端渲染问题 2.给后端接口添加日志进一步定位后端问题 3.如果…...
ARM Cortex-R52 GIC架构详解与中断管理实践
1. Cortex-R52 GIC架构概述ARM Cortex-R52处理器采用的通用中断控制器(GIC)架构是嵌入式实时系统的中断管理核心。作为GICv2架构的实现,它通过硬件级的中断路由和优先级管理机制,为多核实时应用提供了确定性的中断响应能力。在汽车电子和工业控制领域&am…...
Axon:极简AI代理命令行工具,无缝集成自动化工作流
1. 项目概述:一个极简主义的AI代理命令行工具如果你和我一样,对市面上那些动辄需要复杂环境配置、依赖一大堆库、启动缓慢的AI代理工具感到疲惫,那么Axon的出现,绝对会让你眼前一亮。它不是一个运行在后台的守护进程,也…...
**《5月给3岁孩子准备入园物品9月能适应幼儿园吗?FAQ全解析》**
“5月准备入园物品,9月孩子就能适应幼儿园?看似简单的准备,背后藏着大学问。”对于家长来说,孩子能否顺利适应幼儿园是心头大事。提前准备入园物品是重要一步,但适应幼儿园还涉及多方面因素。以下是关于孩子入园适应相…...
免费一键去图片水印的App有哪些?免费去图片水印软件推荐,2026实测好用工具盘点
免费一键去图片水印的App有哪些?免费去图片水印软件推荐,2026实测好用工具盘点 在日常用图的过程中,水印几乎是绕不开的麻烦——从网络下载的素材到平台截图,从拍摄叠加的文字标注到品牌Logo,各种形式的水印让图片用起…...
Serverless平台为何总让人“又爱又恨”?揭秘Lovable设计的3层情感化架构(开发者体验×运维韧性×业务敏捷)
更多请点击: https://intelliparadigm.com 第一章:Serverless平台为何总让人“又爱又恨”? Serverless 架构在现代云原生开发中已成为主流选择,它承诺“无需管理服务器”,让开发者专注业务逻辑。然而,在真…...
移动端AI智能体Operit AI:打造离线可编程的Android全能助手
1. 项目概述:在手机上构建你的全能AI副驾如果你和我一样,是个重度效率工具爱好者,同时又对AI技术充满好奇,那么你肯定也经历过这样的困境:手机上的AI助手,要么是功能单一的聊天机器人,要么就是需…...
