sql资料库
1、distinct(关键词distinct用于返回唯一不同的值):查询结果中去除重复行的关键字
select distinct(university) from user_profile
select distinct university from user_profile
distinct是紧跟在select后面的,不能在其他位置,不然就会报错,
当distinct去重多个字段,是去掉多行一摸一样的数据,保留一行数据的:
SELECT distinct name, continent FROM world
多个列去重的时候,不能用distinct(name,continent),不能加括号,
2、limit:限制返回的数据的数量
SELECT column1, column2, ...
FROM table_name
LIMIT [offset,] row_count;
offset,row_count都是可选的;offset是从第几行开始;row_count是显示多少行;
显示前两行数据:
select device_id from user_profile limit 2
从第一行开始显示2行数据:
select device_id from user_profile limit 0,2
3、as:为列指定别名,可以省略
给返回值device_id这一列重新命名为:user_infos_example
select device_id as user_infos_example from user_profile limit 2
省略写法:
select device_id user_infos_example from user_profile limit 2
4、age不为空
where age is not null或where age!=" "
5、and的优先级高于or
select device_id,gender,age,university,gpa
from user_profile
where gpa>3.5 and university="山东大学"or
gpa>3.8 and university="复旦大学"
6、聚合函数:对一组值执行计算并返回单一的值
常见的5个聚合函数:sum()、avg() 、max() 、min() 、count()
聚合函数不能作为where的条件,不能用where筛选可以用having
select university,
avg(question_cnt) as avg_question_cnt ,
avg(answer_cnt) as avg_answer_cnt
from user_profile
group by university
having avg_question_cnt<5 or avg_answer_cnt<20
聚合函数忽略空值
7、SQL语句执行顺序
sql的语法顺序:
select、from、join、where、group by、having、order by、limit
SELECT COUNT(*)
FROM employees
JOIN departments ON employees.department_id = departments.id
WHERE departments.name = 'Sales'
GROUP BY employees.name
HAVING COUNT(*) > 2
ORDER BY COUNT(*) DESC
LIMIT 5;
sql的执行顺序:
from、where、group by、having、select、order by、limit
8、select后面的要查询的结果,可以用函数,可以进行计算,
就是select 字段名,计算字段,函数 。。。
select name, gdp, population, gdp/population 人均gdp from world
看上面的算“人均gdp”的列,就直接用“gdp/population”了

9、like是模糊查询,后面跟通配符,"_" ,"%"两种
"_"是占位符,"%"是通配符,
例如:查询name中第二个字母是“t“的字段
select name
from world
where name like '_t%'
10、order by 字段名 asc/desc,字段名 asc/desc (默认升序排序,asc升序排序可以省略)
11、count(*)计算总行数
12、group by和select的相互牵制

因为select是最后执行的,group by先分组,然后去重
如果不使用group by时,使用聚合函数,那么select后面不能有字段名,只能用聚合函数或者聚合函数参与的运算:
select name, count(*) from students
像上面的代码会报错,不能聚合函数和非聚合函数一起查询
只有使用了group by,select后面才能跟字段名,而且是 group by后面出现的字段名,不是后面出现的也不能用
下面这个可以,因为sex是group by后面出现过的字段
select sex, count(*) from students
group by sex
这个不可以,因为name不是 group by后面出现过的字段
select name, count(*) from students
group by sex
13、 group by的原理
先把数据分区:

然后把分区的这列数据单独拿出来分组去重:

然后聚合计算就是按照分组后的这些数据进行计算
14、where和having的区别
where是在group by之前对原表格的数据进行筛选,而having是在group by之后对group by分组的数据进行筛选,
having只能用聚合函数和group by作为分组依据的字段
where不能使用聚合函数
15、sql执行原理:

16、函数
1️⃣:round(x,y):四舍五入函数
对x值进行四舍五入,精确到小数点后y位
y为负值时,保留小数点左边相应的位数为0,不进行四舍五入
例如:round(3.15,1)返回3.2 round(14.15,-1)返回10
2️⃣:concat(s1,s2...):连接字符串函数
当任意参数是null时,结果返回null
例如:concat('my', ,'sql')返回值为my sql(中间还有一个空格不要忽略)
concat('my',null,'sql')返回null
3️⃣:replace(s,s1,s2)替换函数
使用字符串s2替换s中的所有s1
例如:replace('MySQLMySQL‘,'SQL','sql')返回结果是:MysqlMysql
4️⃣:截取字符串里的一部分函数
left(s,n)函数:从左往右,截取字符串s中前n位,例如:left(“abcdefg”,3)结果返回:abc
right(s,n)函数:从右往左,截取字符串s中n位,例如:right(“abcdefg”,3)结果返回:efg
substring(s,n,len)函数:从n开始截取s中长度位len的几位(n可以为负数,但截取顺序都是从左往右)
例如:substring(“abcdefg”,-2,3)结果返回:fg
substring(“abcdefg”,2,3)结果返回:bcd
5️⃣:时间日期函数
year(date):获取日期中的年份
month(date):获取日期中的月份
day(date):获取日期中的日
date_add(date,interval expr type):对指定起始时间进行加操作
date_sub(date,interval expr type):对指定起始时间进行减操作
参数说明:date是起始时间
expr是从起始时间中加或者减的时间间隔
type是指定时间间隔的类型,也就是指定expr的类型,类型有:day、week、month、year
例如:date_add('2021-08-03 23:29:29',interval 1 day) 返回2021-08-04 23:29:29
也就是在起始时间上增加一天
datediff(date1,date2):计算两个日期之间间隔的天数,只有日期部分参与计算,时间不参与
date_format(date,format):将日期和时间输出为format格式
SELECT DATE_FORMAT(NOW(), '%Y-%m-%d');常见的格式化选项有:%Y 年份,四位数
%y 年份,两位数
%m 月份,两位数
%d 日期,两位数
%H 小时,24小时制,两位数
%h 小时,12小时制,两位数
%i 分钟,两位数
%s 秒,两位数
%p AM/PM
6️⃣:窗口函数
写法:函数() over(子句):over()指定函数执行的数据范围
函数() over(partition by 字段名 order by 字段名 asc/desc rows between 范围 and 范围)
子句有三个:partition by 要分的组,分组、order by 要排序的列 asc/desc,排序、窗口(rows)字句
窗口子句(rows):
窗口字句的描述:
(1)起始行:N preceding/unbounded preceding
(2)当前行:current row
(3)终止行:N following/unbounded following
举例子:
rows between unbounded preceding and current row 从之前所有的行到当前行
rows between N preceding and current row 从前面两行到当前行
rows between current row and unbounded preceding 从当前行到之后所有的行
rows between current row and 1 preceding 从当前行到最后一行
注意:排序字句后面缺少窗口子句,窗口默认是:rows between unbounded preceding and current row 从之前所有的行到当前行
排序子句和窗口子句都缺失,窗口默认是:rows between unbounded preceding and unbounded following 全部的数据
执行流程:
(1)通过partition by和order by 子句确定大窗口(定义出上界unbounded preceding和下界unbounded following)
(2)通过row子句针对每一行数据确定小窗口
(3)对每行的小窗口内的数据执行函数并生成新的列

partition by和group by的区别:
前者只分组,不去重;后者分组还去重
前者分组后的数据可以显示非聚合列,但后者只能显示聚合列
partition by:
group by:


7️⃣:条件判断函数:

17、表连接
内连接(inner join/join)、左连接(left join)、右连接(right join)
写法:
select 表名
from 表1 join 表2 on 表1.字段名=表2.字段名
完全连接图示:

内连接图示:会把null值去除,就是不取一边有一边没有的值,取两边都有的值进行相✖️
这样理解:先完全连接,然后内连接就是去除有null值的行,只保留全部有值的行

左连接图示:保留左边表的所有行来匹配右边的表,如果右边表有的字段左边表没有那就不管,就是以左边表为主,
这样理解:先完全连接,然后左连接就是去除左边为null的值的行,让左边是都有数据的

右连接图示:以右表为主,保留右边表的所有行,左边表去适应右边的表,
这样理解:先完全连接,然后右连接就是去除右边为null的值的行,让右边都是有数据的

18、子查询
如果子查询语句在from紧跟在from后面,必须要有别名
select * from (select 字段名 from 表名)as s
19、sql语句的运行顺序

20、
相关文章:
sql资料库
1、distinct(关键词distinct用于返回唯一不同的值):查询结果中去除重复行的关键字 select distinct(university) from user_profile select distinct university from user_profile distinct是紧跟在select后面的,不能在其他位置,不然就…...
【python入门】运算符
文章目录 算术运算符比较运算符赋值运算符逻辑运算符位运算符成员运算符身份运算符优先级 算术运算符 # 加法 print(5 3) # 输出: 8# 减法 print(5 - 3) # 输出: 2# 乘法 print(4 * 3) # 输出: 12# 除法(结果为浮点数) print(8.0 / 3) # 输出: 2.6…...
【C++高阶】掌握AVL树:构建与维护平衡二叉搜索树的艺术
📝个人主页🌹:Eternity._ ⏩收录专栏⏪:C “ 登神长阶 ” 🤡往期回顾🤡:STL-> map与set 🌹🌹期待您的关注 🌹🌹 ❀AVL树 📒1. AVL树…...
机器学习-课程整理及初步介绍
简介: 机器学习是人工智能的一个分支,它使计算机系统能够从经验中学习并改进其在特定任务上的表现,而无需进行明确的编程。机器学习涉及多种算法和统计模型,它们可以从数据中学习规律,并做出预测或决策。机器学习的应用非常广泛&…...
北斗三号短报文通信终端 | 助力户外无网络场景作业
北斗三号短报文通信终端是一款专为户外无网络场景作业设计的先进通信工具,它依托于中国自主研发的北斗卫星导航系统,为用户在偏远地区或无网络覆盖区域提供了可靠的通信保障。以下是关于北斗三号短报文通信终端的详细介绍: 一、功能特点 北斗…...
RERCS系统开发实战案例-Part05 FPM Application的Feeder Class搜索组件的实施
1、通过事务码 SE24对Feeder Class实施 1)接口页签的简单说明: ① IF_FPM_GUIBB:通用UI构建块,整个UIBB模块的基础接口; ② IF_FPM_GUIBB_SEARCH:通用搜索UI构建块,搜索组件UIBB的基础接口&…...
算法常见手写代码
1.NMS def py_cpu_nms(dets, thresh):"""Pure Python NMS baseline."""#x1、y1、x2、y2、以及score赋值x1 dets[:, 0]y1 dets[:, 1]x2 dets[:, 2]y2 dets[:, 3]scores dets[:, 4]#每一个检测框的面积areas (x2 - x1 1) * (y2 - y1 1)#按…...
数据结构9——排序
一、冒泡排序 冒泡排序(Bubble Sort),顾名思义,就是指越小的元素会经由交换慢慢“浮”到数列的顶端。 算法原理 从左到右,依次比较相邻的元素大小,更大的元素交换到右边;从第一组相邻元素比较…...
分布式锁实现方案-基于Redis实现的分布式锁
目录 一、基于Lua看门狗实现 1.1 缓存实体 1.2 延迟队列存储实体 1.3 分布式锁RedisDistributedLockWithDog 1.4 看门狗线程续期 1.5 测试类 1.6 测试结果 1.7 总结 二、RedLock分布式锁 2.1 Redlock分布式锁简介 2.2 RedLock测试例子 2.3 RedLock 加锁核心源码分析…...
MTK7628+MT7612 加PA定频数据
1、硬件型号TR726A5G121-DPA PC9.02.0017。如下所示: 2、WIFI5.8 AC模式 42(5120MHz)信道,80带宽 3、WIFI5.8 AC模式 38(5190MHz)信道,40带宽 4、WIFI5.8 AC模式 36(5180 MHz&…...
[信号与系统]关于双线性变换
前言 本文还是前置知识 双线性变换法 双线性变换法(Bilinear Transform)是一种用于将模拟滤波器转换为数字滤波器的方法。它通过将模拟域中的s平面上的传递函数映射到数字域中的z平面上的传递函数来实现这一转换。双线性变换法保证了频率响应在转换过…...
763. 划分字母区间
题目:给你一个字符串 s 。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。注意,划分结果需要满足:将所有划分结果按顺序连接,得到的字符串仍然是 s 。返回一个表示每个字符串片段的长度的列表…...
【PostgreSQL】AUTO_EXPLAIN - 慢速查询的日志执行计划
本文为云贝教育 刘峰 原创,请尊重知识产权,转发请注明出处,不接受任何抄袭、演绎和未经注明出处的转载。 一、介绍 在本文中,我们将了解 PostgreSQL AUTO_EXPLAIN功能的工作原理,以及为什么应该使用它来收集在生产系统…...
讯飞星火超自然语言合成的完整Demo
依赖文件和功能 requirements.txt 该文件列出了所需的依赖包。 data.py 定义了应用的配置信息,如APPId,APIKey,APISecret等。包含请求数据和请求URL。 main.py 主程序,设置了WebSocket连接,定义了处理消息的各个回调函…...
封装一个上拉加载的组件(无限滚动)
一、封装 1.这个是在vue3环境下的封装 2.整体思路: 2.1传入一个elRef,其实就是一个使用页面的ref。 2.2也可以不传elRef,则默认滚动的是window。 import { onMounted, onUnmounted, ref } from vue; import { throttle } from underscore;ex…...
WHAT - 高性能和内存安全的 Rust(二)
目录 1. 所有权(Ownership)2. 借用(Borrowing)不可变借用可变借用 3. 可变性(Mutability)4. 作用域(Scope)综合示例 了解 Rust 的所有权(ownership)、借用&am…...
办理河南建筑工程乙级设计资质的流程与要点
办理河南建筑工程乙级设计资质的流程与要点 办理河南建筑工程乙级设计资质的流程与要点主要包括以下几个方面: 流程: 工商注册与资质规划:确保企业具有独立法人资格,完成工商注册,并明确乙级设计资质的具体要求&…...
分类算法和回归算法区别
分类算法和回归算法在机器学习中扮演着不同的角色,它们的主要区别体现在输出类型、应用场景以及算法目标上。以下是对两者区别和使用场景的详细分析: 一、区别 1.输出类型: 分类算法:输出是离散的类别标签,通常表示为…...
利用Frp实现内网穿透(docker实现)
文章目录 1、WSL子系统配置2、腾讯云服务器安装frps2.1、创建配置文件2.2 、创建frps容器 3、WSL2子系统Centos服务器安装frpc服务3.1、安装docker3.2、创建配置文件3.3 、创建frpc容器 4、WSL2子系统Centos服务器安装nginx服务 环境配置:一台公网服务器(…...
怎么用Excel生成标签打印模板,自动生成二维码
环境: EXCEL2021 16.0 问题描述: 怎么用excel生成标签打印模板自动生成二维码 解决方案: 在Excel中生成标签打印模板并自动生成二维码,可以通过以下几个步骤完成: 1. 准备数据 首先,确保你的Excel表…...
超短脉冲激光自聚焦效应
前言与目录 强激光引起自聚焦效应机理 超短脉冲激光在脆性材料内部加工时引起的自聚焦效应,这是一种非线性光学现象,主要涉及光学克尔效应和材料的非线性光学特性。 自聚焦效应可以产生局部的强光场,对材料产生非线性响应,可能…...
FFmpeg 低延迟同屏方案
引言 在实时互动需求激增的当下,无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作,还是游戏直播的画面实时传输,低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架,凭借其灵活的编解码、数据…...
23-Oracle 23 ai 区块链表(Blockchain Table)
小伙伴有没有在金融强合规的领域中遇见,必须要保持数据不可变,管理员都无法修改和留痕的要求。比如医疗的电子病历中,影像检查检验结果不可篡改行的,药品追溯过程中数据只可插入无法删除的特性需求;登录日志、修改日志…...
大型活动交通拥堵治理的视觉算法应用
大型活动下智慧交通的视觉分析应用 一、背景与挑战 大型活动(如演唱会、马拉松赛事、高考中考等)期间,城市交通面临瞬时人流车流激增、传统摄像头模糊、交通拥堵识别滞后等问题。以演唱会为例,暖城商圈曾因观众集中离场导致周边…...
Rust 异步编程
Rust 异步编程 引言 Rust 是一种系统编程语言,以其高性能、安全性以及零成本抽象而著称。在多核处理器成为主流的今天,异步编程成为了一种提高应用性能、优化资源利用的有效手段。本文将深入探讨 Rust 异步编程的核心概念、常用库以及最佳实践。 异步编程基础 什么是异步…...
Python基于历史模拟方法实现投资组合风险管理的VaR与ES模型项目实战
说明:这是一个机器学习实战项目(附带数据代码文档),如需数据代码文档可以直接到文章最后关注获取。 1.项目背景 在金融市场日益复杂和波动加剧的背景下,风险管理成为金融机构和个人投资者关注的核心议题之一。VaR&…...
推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材)
推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材) 这个项目能干嘛? 使用 gemini 2.0 的 api 和 google 其他的 api 来做衍生处理 简化和优化了文生图和图生图的行为(我的最主要) 并且有一些目标检测和切割(我用不到) 视频和 imagefx 因为没 a…...
【Android】Android 开发 ADB 常用指令
查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...
【 java 虚拟机知识 第一篇 】
目录 1.内存模型 1.1.JVM内存模型的介绍 1.2.堆和栈的区别 1.3.栈的存储细节 1.4.堆的部分 1.5.程序计数器的作用 1.6.方法区的内容 1.7.字符串池 1.8.引用类型 1.9.内存泄漏与内存溢出 1.10.会出现内存溢出的结构 1.内存模型 1.1.JVM内存模型的介绍 内存模型主要分…...
系统掌握PyTorch:图解张量、Autograd、DataLoader、nn.Module与实战模型
本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。 本文通过代码驱动的方式,系统讲解PyTorch核心概念和实战技巧,涵盖张量操作、自动微分、数据加载、模型构建和训练全流程&#…...
