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

简单的SQL语句的快速复习

语法的执行顺序
 

select 4 字段列表
 

from 1 表名列表
 

where 2 条件列表
 

group by 3 分组前过滤
 

having 分组后过滤
 

order by 5 排序字段列表
 

limit 6 分页参数


聚合函数
 

count 统计数量
 

max 最大值
 

min 最小值
 

avg 平均
 

sum 总和


分组查询使用例子

1.性别分组,统计数量
 

select gender ,count(*)from emp group by gender
 


 

2.性别分组 统计平均年龄
 

select age ,avg(age) from emp group by gender
 


 

3.查询年龄小于45的员工,并且按照工作地址分组,获取员工数量>=3的工作地址
 

首先
 

按工作地址分组然后获取年龄小于45的员工的地址信息的总数
 

select workaddress,count(*)from emp where age<45 group by workaddress

 

再分组完后进行过滤
 

having count(*)>=3


排序查询使用例子

语法:
 

select 字段列表 from 表名 order by 字段1 排序方式1,字段2,排序方式2;
 


 

排序方式:
 

1.ASC:升序(默认)
 

2.DESC:降序
 


 

例子
 

1.根据年龄进行排序,2.年龄相同,再入职日期降序排序
 

select age from emp order by ageasc,entrydate desc
 

多字段排序:第一个字段相同时再进行第二个字段排序


分页查询
 

语法
 

select 字段列表 from 表名 limit 起始索引,查询记录数;
 

select * from emp limit 0 10


函数

字符串函数
 

concat(s1,s2,s3)字符串的拼接

 

lower(str) 小写


 

upper(str)大写
 


 

lpad(str,n,pad)
 

左填充,用字符串pad对左边进行填充,达到n个字符串长度
 


 

rpad(str,n,pad)
 

右填充

 

trim(str)
 

去掉字符串头部和尾部的空格

 

substring(str,start,len)
 

返回字符串str从str位置起的len个长度的字符串
 


 


 

int类型不能补0,因为是整形但可以补1
 


数值函数
 

ceil(x) 向上取整
 

floor(x) 向下取整
 


 

mod(X,Y) 返回x/y的模
 


 

rand()返回0-1内的随机数
 


 

round(X,Y)四舍五入,保留y位小数
 


日期函数
 

curdate() 日期
 

curtime() 时间
 

now() 现在
 


year(date) 获取指定date的年份
 

month(date) 获取指定date的月份
 


 

day(date) 日期
 


 

date-add(date,interval exprtype)
 

返回这个日期加上一个时间间隔后的时间值
 


 

datediff(date1,date2)
 

返回起始时间date1和结束时间date2之间的天数


流程函数
 

if(value,t,f)
 

true返回t
 

false返回f
 


 

ifnull(value1,value2)不空返回value1,空的话返回value2
 


 

case when then
 


 

case when [val]then [res1] else [defaulse] End
 


 

val为true则返回res1
 

否则返回default默认值
 


 

case [expr] when [val] then [res1] else [default] End
 

end是结束
 

当expr的值等于val时返回res1否则返回default
 


 

使用例子
 

select name,(case workaddress when'北京' then'一线',when‘上海’,then‘一线’ end)as‘工作地址’
 


增删改查

添加数据
 

1.给指定字段添加数据 insert values
 

insert into 表名(字段1 , 字段2) values(值1,值2)
 


 


 

2.给全部字段添加数据(不写出具体字段名)
 

insert into 表名 values(值1,值2)
 


 

3.批量添加数据
 

给特定字段
 

insert into 表名(字段1,字段2)values(值1,值2)(值1,值2);
 

给全部字段
 

insert into 表名 values (值1,值2), (值1,值2), (值1,值2);


更新与删除


 

修改数据:update set
 

update 表名 set 字段名1=值1,字段名2=值2......[where 条件]
 

不写条件where的话就是所有都执行
 


 

删除数据 delete
 

delete from 表名 [where 条件]
 


联合查询(union)

union查询,就是把多次的查询结果合并起来形成一个新的查询结果

 

select 字段列表 from 表a
 

union[all]
 

select 字段列表 from 表b
 


 

分别查询薪资>5000,年龄>50的员工
 

select *from emp where salary>5000
 


 

union all
 


 

select *from emp where age>50
 

但是结果会有重复的,为了去重
 

可以把all去
 


报错情况

select *from emp where salary>5000
 

union all
 

select name from emp where age>50
 

这个会发现报错
 

因为对于联合查询来说。字段表的列数字段类型必须保持一致
 


子查询

子查询
 

又称为 嵌套查询
 

标量子查询
 

查询销售部的所有员工信息
 

1. select id from emp where name='销售部';
 

第一部查询出销售部id等于4
 

2.select *from emp where dept_id=4;
 

要两条指令,但我们想用一条搞定
 

select *from emp where dept_id=(select id from emp where name='销售部');
 



 

列子查询
 

常用操作符

in,not in,any,some,all
 

1
 

select id from dept where name='销售部'or name='市场部';
 

查出的id是1和2
 

然后
 

select* from emp where dept_id in (1,2)
 

或者
 

select* from emp where dept_id in (select id from dept where name='销售部'or name='市场部');
 

2
 

查询比财务部的所有人工资都高的员工的 信息
 

a 查询所有财务部人员的工资
 

select id from dept where name='财务部';
 

select salary from emp where dept_id=3
 


 

b查询比财务部所有人工资都高的员工信息
 

select *from emp where salary> all( select salary from emp where dept_id=3)
 


 

3
 

查询比研发部其中任意一人工资都高的员工信息
 

因为是任意一人所以 没有all
 


行子查询
 

查询与‘张无忌’薪资以及领导都相同的员工的信息


 

a.查询张无忌的工资及其领导
 

select salary,managerid from emp where name='张无忌'


 

b. 查询员工
 

select *from emp where salary=12500 and mangerid =1;
 

或者
 

select *from emp where (salary,managerid)=(12500,1);
 

再或者
 

select *from emp where(salary,mangerid)=(select salary,managerid from emp where name='张无忌')
 



 

表子查询
 

常用操作符 in
 

1.查询与‘路’和‘白’薪资以及职位相同的员工
 

select job,salary from emp where name='路'or name=‘白’
 

select * from emp where (job,salary) in(select job,salary from emp where name='路'or name=‘白’)
 


 

2.查询入职日期是“2006-01-01”之后的员工信息,及其部门信息
 

select * from emp where entrydate>"2006-01-01"
 

把上面那个作为临时表
 

select e.*,d.* from(select * from emp where entrydate>"2006-01-01") e left join dept d on e.dept_id=d.id
 


多表联查

1.查询员工的姓名,年龄,职位,部门信息(隐式内连接)
 

表:emp dept
 

连接条件:emp.dept_id=dept.id
 

记得消除笛卡尔积
 

select e.name,e.age,e.job,d.name from emp e, dept d where e.dept_id=d.id;
 


 

2.查询年龄小于30岁的员工的姓名,年龄,职位,部门信息(显示内连接)
 

select e.name,e.age,e.job,d.name from emp e inner join dept d on e.dept_id=d.id where e.age<30
 


 

3.查询拥有员工的部门id和部门名称
 

求取员工表和部门表之间的交集用内连接
 

select d.id,d.name from emp e,dept d where e.dept_id=d.id
 

此时会有多个重复的部门,因为他是按照员工数量来的
 

去重复用 distinct
 

select distinct d.id,d.name from emp e,dept d where e.dept_id=d.id
 


 

4.查询所有年龄大于40的员工,及其归属部门的名称;如果员工没有分配部门也要显示出来
 

要用外连接
 

select e.*,d.name from emp e left join dept d on e.dept_id=d.id where e.age>40
 


 

5.查询所有员工的工资等级
 

表:emp salarygrade
 

连接条件:emp.salary >=salagrade.losal and emp.salary<=salagrade.hisal
 


 

select e.*,s.grade emp e,salagrade s where e.salary>=s.losal and e.salary <=s.hisal
 


 

第二种写法:
 

select e.*,s.grade emp e,salagrade s where e.salary between s.losal and s.hisal
 


 

6.查询 研发部 所有员工的信息以及工资等级
 

涉及到的表:emp dept salgrade
 

连接条件:
 

emp.salary between s.losal and s.hisal
 


 

emp.dept_id=dept.id
 


 

查询条件 dept.name='研发部'
 


 

select e.*,s.grade from emp e ,dept d,salgrade s where e.dept_id=d.id and ( emp.salary between s.losal and s.hisal)and d.name='研发部'
 


 

7.查询研发部员工的平均工资
 

表 emp dept
 

select avg(e.salary) from emp e, dept d where e.dept_id=d.id and e.name='研发部'
 



 

8.查询工资比‘灭绝’高的员工信息
 

select * from emp where salary>(select salary from emp where name='灭绝')
 

查询灭绝的薪资
 

select salary from emp where e.name='灭绝'
 


 

9.查询比平均薪资高的员工信息
 

select avg(salary) from emp
 

select * from emp where salary>(select avg(salary) from emp)
 


 

10.查询低于 本部门 平均薪资的员工
 

a.查询指定部门的平均薪资
 

select avg(e.salary) from emp e where e.dept_id=1
 

select avg(e.salary) from emp e where e.dept_id=2
 


 

b.
 

select *from emp e2 where salary<(select avg(e.salary) from emp e where e.dept_id=e2.dept_id)
 

保证平均下来的薪资是同一个部门的
 


 

11.查询所有的部门信息,并统计部门的员工人数
 

a.查询信息
 

select id,name from dept
 

b.查询指定部门的人数
 

select count(*) from emp where dept_id=1
 


 

最终
 

select d.id ,d.name (select count(*) from emp e where e.dept_id=id)'人数' from dept d;
 


 


 

12.查询所有学生的选课情况,展示出学生的名称,学号,课程名称
 


 

表:student ,course,student_course
 

连接条件:student.id=student_course.studentid,course.id=student_course.courseid
 


 

select s.name ,s.no,c.name from student s,student_course sc,course c where s.id=sc.studentid and sc.courseid=c.id
 

相关文章:

简单的SQL语句的快速复习

语法的执行顺序 select 4 字段列表 from 1 表名列表 where 2 条件列表 group by 3 分组前过滤 having 分组后过滤 order by 5 排序字段列表 limit 6 分页参数 聚合函数 count 统计数量 max 最大值 min 最小值 avg 平均 sum 总和 分组查询使…...

Spring MVC 综合案例

目录 一. 加法计算器 1. 准备工作 2. 约定前后端交互接口 需求分析 接口定义 3. 服务器端代码 4. 运行测试 二. 用户登录 1. 准备工作 2. 约定前后端交互接口 需求分析 接口定义 (1) 登录界面接口 (2) 首页接口 3. 服务器端代码 4. 运行测试 三. 留言板 1. 准备…...

Spring Boot多环境配置实践指南

在开发Spring Boot应用时&#xff0c;我们常常需要根据不同的运行环境&#xff08;如开发环境、测试环境和生产环境&#xff09;来配置不同的参数。Spring Boot提供了非常灵活的多环境配置机制&#xff0c;通过使用profile-specific properties文件&#xff0c;我们可以轻松地管…...

微信小程序中实现进入页面时数字跳动效果(自定义animate-numbers组件)

微信小程序中实现进入页面时数字跳动效果 1. 组件定义,新建animate-numbers组件1.1 index.js1.2 wxml1.3 wxss 2. 使用组件 1. 组件定义,新建animate-numbers组件 1.1 index.js // components/animate-numbers/index.js Component({properties: {number: {type: Number,value…...

【huawei】云计算的备份和容灾

目录 1 备份和容灾 2 灾备的作用&#xff1f; ① 备份的作用 ② 容灾的作用 3 灾备的衡量指标 ① 数据恢复时间点&#xff08;RPO&#xff0c;Recoyery Point Objective&#xff09; ② 应用恢复时间&#xff08;RTO&#xff0c;Recoyery Time Objective&#xff09; 4…...

Vue.js组件开发-实现下载时暂停恢复下载

在 Vue 中实现下载时暂停和恢复功能&#xff0c;通常可以借助 XMLHttpRequest 对象来控制下载过程。XMLHttpRequest 允许在下载过程中暂停和继续请求。 实现步骤 创建 Vue 组件&#xff1a;创建一个 Vue 组件&#xff0c;包含下载、暂停和恢复按钮。初始化 XMLHttpRequest 对…...

TCP是怎么判断丢包的?

丢包在复杂的网络环境中&#xff0c;是一种常见的现象。 TCP&#xff08;传输控制协议&#xff09;作为一种可靠传输协议&#xff0c;内置了多种机制来检测和处理丢包现象&#xff0c;从而保证数据的完整性和传输的可靠性。本文将介绍TCP判断丢包的原理和机制。 一、TCP可靠传…...

python爬虫入门(一) - requests库与re库,一个简单的爬虫程序

目录 web请求与requests库 1. web请求 1.1 客户端渲染与服务端渲染 1.2 抓包 1.3 HTTP状态代码 2. requests库 2.1 requests模块的下载 2.2 发送请求头与请求参数 2.3 GET请求与POST请求 GET请求的例子&#xff1a; POST请求的例子&#xff1a; 3. 案例&#xff1a;…...

2025年数学建模美赛 A题分析(3)楼梯使用方向偏好模型

2025年数学建模美赛 A题分析&#xff08;1&#xff09;Testing Time: The Constant Wear On Stairs 2025年数学建模美赛 A题分析&#xff08;2&#xff09;楼梯磨损分析模型 2025年数学建模美赛 A题分析&#xff08;3&#xff09;楼梯使用方向偏好模型 2025年数学建模美赛 A题分…...

复古壁纸中棕色系和米色系哪个更受欢迎?

根据最新的搜索结果&#xff0c;我们可以看到棕色系和米色系在复古壁纸设计中都非常受欢迎。以下是对这两种颜色系受欢迎程度的分析&#xff1a; 棕色系 受欢迎程度&#xff1a;棕色系在复古壁纸中非常受欢迎&#xff0c;因为它能够营造出温暖、质朴和自然的氛围。棕色系的壁纸…...

编译安装PaddleClas@openKylin(失败,安装好后报错缺scikit-learn)

编译安装 前置需求&#xff1a; 手工安装swig和faiss-cpu pip install swig pip install faiss-cpu 小技巧&#xff0c;pip编译安装的时候&#xff0c;可以加上--jobs64来多核编译。 注意先升级pip版本&#xff1a;pip install pip -U pip3 install faiss-cpu --config-s…...

t113_can增加驱动

1 基于太极派的SDK添加 //设备树添加can0: can2504000 {compatible "allwinner,sun20i-d1-can";reg <0x0 0x02504000 0x0 0x400>;interrupts <GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>;clocks <&ccu CLK_BUS_CAN0>;resets <&ccu RST_BUS_…...

达梦数据库建用户,键库脚本

-- 1.创建表空间 CREATE TABLESPACE "表空间名称" DATAFILE /dmdata/data/DAMENG/表空间名称.DBF SIZE 512 AUTOEXTEND ON NEXT 512 MAXSIZE UNLIMITED; -- 2.创建用户 CREATE USER "表空间名称" IDENTIFIED BY "表空间名称" HASH WITH SHA512 S…...

上海亚商投顾:沪指冲高回落 大金融板块全天强势 上海亚商投

上海亚商投顾前言&#xff1a;无惧大盘涨跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。 一&#xff0e;市场情绪 市场全天冲高回落&#xff0c;深成指、创业板指午后翻绿。大金融板块全天强势&#xff0c;天茂集团…...

MySQL 的索引类型【图文并茂】

基本分类 文本生成MindMap:https://app.pollyoyo.com/planttext <style> mindmapDiagram {node {BackgroundColor yellow}:depth(0) {BackGroundColor SkyBlue}:depth(1) {BackGroundColor lightGreen} } </style> * MySQL 索引** 数据结构角度 *** B树索引*** 哈…...

天聚地合:引领API数据流通服务,助力数字经济发展

天聚地合&#xff1a;引领API数据流通服务,助力数字经济发展 爱企猫01月24日消息&#xff1a;天聚地合&#xff08;苏州&#xff09;科技股份有限公司,成立于2010年,总部位于苏州,是一家综合性API数据流通服务商。公司旗下品牌‘聚合数据’已开发超过790个API,服务百万企业级客…...

【反悔堆】【hard】力扣871. 最低加油次数

汽车从起点出发驶向目的地&#xff0c;该目的地位于出发位置东面 target 英里处。 沿途有加油站&#xff0c;用数组 stations 表示。其中 stations[i] [positioni, fueli] 表示第 i 个加油站位于出发位置东面 positioni 英里处&#xff0c;并且有 fueli 升汽油。 假设汽车油…...

electron typescript运行并设置eslint检测

目录 一、初始化package.json 二、安装依赖 1、安装electron 2、安装typescript依赖 3、安装eslint 三、项目结构 四、配置启动项 一、初始化package.json 我的&#xff1a;这里的"main"没太大影响&#xff0c;看后面的步骤。 {"name": "xlo…...

服务器上安装Nginx详细步骤

第一步&#xff1a;上传nginx压缩包到指定目录。 第二步&#xff1a;解压nginx压缩包。 第三步&#xff1a;配置编译nginx 配置编译方法&#xff1a; ./configure 配置编译后结果信息&#xff1a; 第四步&#xff1a;编译nginx 在nginx源文件目录中直接运行make命令 第五步&…...

Timeout or no response waiting for NATS JetStream server

当使用jetStream 出现"Timeout or no response waiting for NATS JetStream server" 错误的时候要注意后面的“no response”&#xff0c;尤其是开发测试&#xff0c;要去check server 是否启动了 jet stream。 [20112] 2025/01/24 08:27:42.738396 [INF] _ ___…...

解锁数据库简洁之道:FastAPI与SQLModel实战指南

在构建现代Web应用程序时&#xff0c;与数据库的交互无疑是核心环节。虽然传统的数据库操作方式&#xff08;如直接编写SQL语句与psycopg2交互&#xff09;赋予了我们精细的控制权&#xff0c;但在面对日益复杂的业务逻辑和快速迭代的需求时&#xff0c;这种方式的开发效率和可…...

【解密LSTM、GRU如何解决传统RNN梯度消失问题】

解密LSTM与GRU&#xff1a;如何让RNN变得更聪明&#xff1f; 在深度学习的世界里&#xff0c;循环神经网络&#xff08;RNN&#xff09;以其卓越的序列数据处理能力广泛应用于自然语言处理、时间序列预测等领域。然而&#xff0c;传统RNN存在的一个严重问题——梯度消失&#…...

系统设计 --- MongoDB亿级数据查询优化策略

系统设计 --- MongoDB亿级数据查询分表策略 背景Solution --- 分表 背景 使用audit log实现Audi Trail功能 Audit Trail范围: 六个月数据量: 每秒5-7条audi log&#xff0c;共计7千万 – 1亿条数据需要实现全文检索按照时间倒序因为license问题&#xff0c;不能使用ELK只能使用…...

ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放

简介 前面两期文章我们介绍了I2S的读取和写入&#xff0c;一个是通过INMP441麦克风模块采集音频&#xff0c;一个是通过PCM5102A模块播放音频&#xff0c;那如果我们将两者结合起来&#xff0c;将麦克风采集到的音频通过PCM5102A播放&#xff0c;是不是就可以做一个扩音器了呢…...

Spring AI与Spring Modulith核心技术解析

Spring AI核心架构解析 Spring AI&#xff08;https://spring.io/projects/spring-ai&#xff09;作为Spring生态中的AI集成框架&#xff0c;其核心设计理念是通过模块化架构降低AI应用的开发复杂度。与Python生态中的LangChain/LlamaIndex等工具类似&#xff0c;但特别为多语…...

DeepSeek 技术赋能无人农场协同作业:用 AI 重构农田管理 “神经网”

目录 一、引言二、DeepSeek 技术大揭秘2.1 核心架构解析2.2 关键技术剖析 三、智能农业无人农场协同作业现状3.1 发展现状概述3.2 协同作业模式介绍 四、DeepSeek 的 “农场奇妙游”4.1 数据处理与分析4.2 作物生长监测与预测4.3 病虫害防治4.4 农机协同作业调度 五、实际案例大…...

计算机基础知识解析:从应用到架构的全面拆解

目录 前言 1、 计算机的应用领域&#xff1a;无处不在的数字助手 2、 计算机的进化史&#xff1a;从算盘到量子计算 3、计算机的分类&#xff1a;不止 “台式机和笔记本” 4、计算机的组件&#xff1a;硬件与软件的协同 4.1 硬件&#xff1a;五大核心部件 4.2 软件&#…...

Modbus RTU与Modbus TCP详解指南

目录 1. Modbus协议基础 1.1 什么是Modbus? 1.2 Modbus协议历史 1.3 Modbus协议族 1.4 Modbus通信模型 🎭 主从架构 🔄 请求响应模式 2. Modbus RTU详解 2.1 RTU是什么? 2.2 RTU物理层 🔌 连接方式 ⚡ 通信参数 2.3 RTU数据帧格式 📦 帧结构详解 🔍…...

Pydantic + Function Calling的结合

1、Pydantic Pydantic 是一个 Python 库&#xff0c;用于数据验证和设置管理&#xff0c;通过 Python 类型注解强制执行数据类型。它广泛用于 API 开发&#xff08;如 FastAPI&#xff09;、配置管理和数据解析&#xff0c;核心功能包括&#xff1a; 数据验证&#xff1a;通过…...

pgsql:还原数据库后出现重复序列导致“more than one owned sequence found“报错问题的解决

问题&#xff1a; pgsql数据库通过备份数据库文件进行还原时&#xff0c;如果表中有自增序列&#xff0c;还原后可能会出现重复的序列&#xff0c;此时若向表中插入新行时会出现“more than one owned sequence found”的报错提示。 点击菜单“其它”-》“序列”&#xff0c;…...