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表…...
Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?
Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以? 在 Golang 的面试中,map 类型的使用是一个常见的考点,其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...

通过Wrangler CLI在worker中创建数据库和表
官方使用文档:Getting started Cloudflare D1 docs 创建数据库 在命令行中执行完成之后,会在本地和远程创建数据库: npx wranglerlatest d1 create prod-d1-tutorial 在cf中就可以看到数据库: 现在,您的Cloudfla…...
django filter 统计数量 按属性去重
在Django中,如果你想要根据某个属性对查询集进行去重并统计数量,你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求: 方法1:使用annotate()和Count 假设你有一个模型Item,并且你想…...

【2025年】解决Burpsuite抓不到https包的问题
环境:windows11 burpsuite:2025.5 在抓取https网站时,burpsuite抓取不到https数据包,只显示: 解决该问题只需如下三个步骤: 1、浏览器中访问 http://burp 2、下载 CA certificate 证书 3、在设置--隐私与安全--…...

SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现
摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序,以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务,提供稳定高效的数据处理与业务逻辑支持;利用 uniapp 实现跨平台前…...

C# 类和继承(抽象类)
抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...

12.找到字符串中所有字母异位词
🧠 题目解析 题目描述: 给定两个字符串 s 和 p,找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义: 若两个字符串包含的字符种类和出现次数完全相同,顺序无所谓,则互为…...

学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2
每日一言 今天的每一份坚持,都是在为未来积攒底气。 案例:OLED显示一个A 这边观察到一个点,怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 : 如果代码里信号切换太快(比如 SDA 刚变,SCL 立刻变&#…...
基于matlab策略迭代和值迭代法的动态规划
经典的基于策略迭代和值迭代法的动态规划matlab代码,实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...
Spring是如何解决Bean的循环依赖:三级缓存机制
1、什么是 Bean 的循环依赖 在 Spring框架中,Bean 的循环依赖是指多个 Bean 之间互相持有对方引用,形成闭环依赖关系的现象。 多个 Bean 的依赖关系构成环形链路,例如: 双向依赖:Bean A 依赖 Bean B,同时 Bean B 也依赖 Bean A(A↔B)。链条循环: Bean A → Bean…...