简单的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 总和 分组查询使…...
Hive:复杂数据类型之Map函数
Map函数 是Hive里面的一种复杂数据类型, 用于存储键值对集合。Map中的键和值可以是基础类型或复合类型,这使得Map在处理需要关联存储信息的数据时非常有用。 定义map时,需声明2个属性: key 和 value , map中是 key value 组成一个元素 key-value, key必须为原始类…...
Matlab实现TCN-BiLSTM时间卷积神经网络结合双向长短期记忆神经网络多特征分类预测(附模型研究报告)
Matlab实现TCN-BiLSTM时间卷积神经网络结合双向长短期记忆神经网络多特征分类预测(附模型研究报告) 目录 Matlab实现TCN-BiLSTM时间卷积神经网络结合双向长短期记忆神经网络多特征分类预测(附模型研究报告)分类效果基本描述程序设…...
Midjourney中的强变化、弱变化、局部重绘的本质区别以及其有多逆天的功能
开篇 Midjourney中有3个图片“微调”,它们分别为: 强变化;弱变化;局部重绘; 在Discord里分别都是用命令唤出的,但如今随着AI技术的发达在类似AI可人一类的纯图形化界面中,我们发觉这样的逆天…...
NLP深度学习 DAY4:Word2Vec详解:两种模式(CBOW与Skip-gram)
用稀疏向量表示文本,即所谓的词袋模型在 NLP 有着悠久的历史。正如上文中介绍的,早在 2001年就开始使用密集向量表示词或词嵌入。Mikolov等人在2013年提出的创新技术是通过去除隐藏层,逼近目标,进而使这些单词嵌入的训练更加高效。…...
【Linux】 冯诺依曼体系与计算机系统架构全解
Linux相关知识点可以通过点击以下链接进行学习一起加油!初识指令指令进阶权限管理yum包管理与vim编辑器GCC/G编译器make与Makefile自动化构建GDB调试器与Git版本控制工具Linux下进度条 冯诺依曼体系是现代计算机设计的基石,其统一存储和顺序执行理念推动…...
LLM - 大模型 ScallingLaws 的设计 100B 预训练方案(PLM) 教程(5)
欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/145356022 免责声明:本文来源于个人知识与公开资料,仅用于学术交流,欢迎讨论,不支持转载。 Scaling Laws (缩放法则) 是大模型领域中,用于描述 模型性能(Loss) 与…...
【最后203篇系列】005 -QTV200 Online
说明 借着春节休假,把这部分完工,然后2025年将正式的把量化研究的成果进行产品化输出。 首先,我会将策略的执行从脚本挪到服务。做法是将策略的逻辑放在微服务里,作为一个接口,而由sniffer来触发策略执行。我想这样策…...
Midjourney基础-常用修饰词+权重的用法大全
用好修饰词很关键 Midjourney要用除了掌握好提示词的写法,按照上一篇《做Midjourney最好图文教程-提示词公式以及高级参数讲解》画面主体 场景氛围 主体行为 构图方式 艺术风格 图像质量。 要画出有质感的内容我们必须要掌握好“修饰词”,这些修饰…...
Deepseek的RL算法GRPO解读
在本文中,我们将深入探讨Deepseek采用的策略优化方法GRPO,并顺带介绍一些强化学习(Reinforcement Learning, RL)的基础知识,包括PPO等关键概念。 策略函数(policy) 在强化学习中, a…...
神经网络和深度学习
应用 类型 为什么近几年飞速发展 数据增长,算力增长,算法革新 逻辑回归 向量化 浅层神经网络(Shallow neural network) 单条训练数据前向传播计算表达式 batch训练数据前向传播计算表达式 反向传播计算表达式 参数随机初始化 不能全部设为0 原因是同一…...
步进电机加减速公式推导
运动控制梯形速度曲线相关算法请参考下面系列文章 PLC运动控制基础系列之梯形速度曲线_三菱运动控制模块梯形加减速-CSDN博客文章浏览阅读3.1k次,点赞3次,收藏7次。本文是关于PLC运动控制的基础教程,重点介绍了梯形速度曲线的概念、计算和应用。讨论了梯形加减速在启动和停…...
python学opencv|读取图像(四十八)使用cv2.bitwise_xor()函数实现图像按位异或运算
【0】基础定义 按位与运算:两个等长度二进制数上下对齐,全1取1,其余取0。 按位或运算:两个等长度二进制数上下对齐,有1取1,其余取0。 按位取反运算:一个二进制数,0变1,1变0。 按…...
关联传播和 Python 和 Scikit-learn 实现
文章目录 一、说明二、什么是 Affinity Propagation。2.1 先说Affinity 传播的工作原理2.2 更多细节2.3 传播两种类型的消息2.4 计算责任和可用性的分数2.4.1 责任2.4.2 可用性分解2.4.3 更新分数:集群是如何形成的2.4.4 估计集群本身的数量。 三、亲和力传播的一些…...
CMAKE工程编译好后自动把可执行文件传输到远程开发板
# 设置 CMake 最低版本要求 cmake_minimum_required(VERSION 3.10)# 设置项目名称 project(MyProject)# 添加可执行文件,这里以项目名作为可执行文件的名称 add_executable(${PROJECT_NAME} main.cpp)# 设置开发板信息 set(DEVELOPMENT_BOARD_IP "192.168.1.10…...
【etcd】二进制安装etcd
由于生产服务器不能使用yum 安装 etcd ,或者 安装的etcd 版本比较老,这里介绍一个使用二进制安装的方式。 根据安装文档编写一个下载脚本即可 : 指定 etcd 的版本 提供了两个下载地址 一个 Google 一个 Github, 不过都需要外网 注释掉删除保…...
企业知识管理平台助力企业创新与竞争力提升的有效策略探讨
内容概要 在当今快速发展的商业环境中,企业知识管理平台的构建显得至关重要。它不仅为企业的知识资源提供了一个整合与分享的空间,还为企业的创新与竞争力提升提供了策略支持。本文将深入探讨企业知识管理平台的关键要素,包括知识获取、存储…...
Java多线程——线程安全性
线程安全性 当多个线程访问某个类时,这个类始终都能表现出正确的行为,那么就称这个类是线程安全的 public class A {public void test(){//....} }无状态对象是线程安全的,其不包含任何域,也不包含任何对其他类中域的引用&#…...
Windows安装Miniconda和PySide6以及配置PyCharm
目录 1. 选择Miniconda 2. 下载Miniconda 3. 安装Miniconda 4. 在base环境下创建pyside6环境 5. 安装pyside6环境 6. 配置PyCharm环境 7. 运行第一个程序效果 1. 选择Miniconda 选择Miniconda而没有选择Anaconda,是因为它是一个更小的Anaconda发行版&#x…...
C++传送锚点的内存寻址:内存管理
文章目录 1.C/C内存分布回顾2.C内存管理2.1 内存申请2.2 operator new与operator delete函数2.3 定位new表达式 3.关于内存管理的常见知识点3.1 malloc/free和new/delete的区别3.2 内存泄漏 希望读者们多多三连支持小编会继续更新你们的鼓励就是我前进的动力! 继C语…...
两种交换排序算法--冒泡,快速
目录 1.冒泡排序原理 2.快速排序原理 3.冒泡代码实现 4.快速排序代码实现 1.冒泡排序原理 冒泡排序(Bubble Sort)是一种简单的排序算法,基本思想是通过反复交换相邻的元素,直到整个序列有序。它的名字来源于较大的元素像气泡…...
循序渐进kubernetes-RBAC(Role-Based Access Control)
文章目录 概要Kubernetes API了解 Kubernetes 中的 RBACRoles and Role Bindings:ClusterRoles and ClusterRoleBindings检查访问权限:外部用户结论 概要 Kubernetes 是容器化应用的强大引擎,但仅仅关注部署和扩展远远不够,集群的安全同样至…...
《从因果关系的角度学习失真不变表示以用于图像恢复》学习笔记
paper:2303.06859 GitHub:lixinustc/Causal-IR-DIL: Distortion invariant feature learning for image restoration from a causality perspective 2023 CVPR 目录 摘要 1、介绍 1.1 图像修复任务 1.2 失真不变表示学习 1.3 因果效应估计的挑战…...
亚博microros小车-原生ubuntu支持系列:16 机器人状态估计
本来想测试下gmapping建图,但是底层依赖了yahboomcar_bringup做底层的数据处理,所以先把依赖的工程导入。 程序启动后,会订阅imu和odom数据,过滤掉一部分的imu数据后,然后与odom数据进行融合,最后输出一个…...
Greenplum临时表未清除导致库龄过高处理
1.问题 Greenplum集群segment后台日志报错 2.回收库龄 master上执行 vacuumdb -F -d cxy vacuumdb -F -d template1 vacuumdb -F -d rptdb 3.回收完成后检查 仍然发现segment还是有库龄报警警告信息发出 4.检查 4.1 在master上检查库年龄 SELECT datname, datfrozen…...
【Unity3D】实现横版2D游戏角色二段跳、蹬墙跳、扶墙下滑
目录 一、二段跳、蹬墙跳 二、扶墙下滑 一、二段跳、蹬墙跳 GitHub - prime31/CharacterController2D 下载工程后直接打开demo场景:DemoScene(Unity 2019.4.0f1项目环境) Player物体上的CharacterController2D,Mask添加Wall层…...
mybatis(134/134)完结
一级缓存(默认情况下开启)同一个sqlsession中执行相同的查询语句走一级缓存 二级缓存 :同一个sqlsessionfactory,sqlsession关闭了才会将一级缓存提交到二级缓存中 外部编写的缓存 PageHelper插件:方便进行分页&#x…...
PaddleSeg 从配置文件和模型 URL 自动化运行预测任务
git clone https://github.com/PaddlePaddle/PaddleSeg.git# 在ipynb里面运行 cd PaddleSegimport sys sys.path.append(/home/aistudio/work/PaddleSeg)import os# 配置文件夹路径 folder_path "/home/aistudio/work/PaddleSeg/configs"# 遍历文件夹,寻…...
人工智能丨视觉识别在自动化测试中的应用
视觉识别:自动化测试的新纪元 在当今快速发展的科技时代,软件测试正面对着日益复杂的挑战。作为其中一个关键领域,自动化测试不断寻求创新的方法,以提高测试效率和准确性。在这一背景下,视觉识别技术的引入为自动化测…...
lambda 表达式:Python中的极简艺术
lambda 表达式:Python中的极简艺术 — 让你的代码更简洁、更高效! 引言 在 Python 中,lambda 表达式是一种简洁的定义匿名函数的方式。它通常用于需要函数对象的场景,但又不需要显式定义一个完整函数的场合。本文将详细介绍 la…...
