sql资料库

news2024/12/26 11:33:23

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、 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1844251.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

充电学习— 9、Typec Pd

GND&#xff1a;线缆接地 TX RX&#xff1a;数据流data传输&#xff0c;支持2.0 3.0 speed兼容 VBUS&#xff1a;线缆cable电源&#xff0c;bus power CC&#xff1a;电缆cable的连接、方向、角色检测和当前模式的配置通道&#xff1b; 有emark时&#xff0c; 一个成为VCONN&am…

Flutter【组件】按钮

简介 flutter 按钮组件。提供一种封装按钮组件的思路&#xff0c;并不支持过多的自定义属性。根据使用场景及设计规范进行封装&#xff0c;使用起来比较方便。 github地址&#xff1a;https://github.com/ThinkerJack/jac_uikit pub地址&#xff1a;https://pub.dev/package…

【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 密码解密(100分) - 三语言AC题解(Python/Java/Cpp)

&#x1f36d; 大家好这里是清隆学长 &#xff0c;一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解 &#x1f4bb; ACM银牌&#x1f948;| 多次AK大厂笔试 &#xff5c; 编程一对一辅导 &#x1f44f; 感谢大家的订阅➕ 和 喜欢&#x1f497; &#x1f…

【多模态论文】CLIP(Contrastive Language-Image Pre-training)

论文&#xff1a;Learning Transferable Visual Models From Natural Language Supervision 链接&#xff1a;https://arxiv.org/abs/2103.00020 摘要 问题&#xff1a; 对预定的类别进行预测&#xff0c;这种有监督的训练形式受限于额外标记数据 。如何利用图像的原始文本来获…

MEME使用-motif分析(生物信息学工具-24)

01 背景 Motif分析是一种在生物信息学和计算生物学中广泛应用的技术&#xff0c;用于识别DNA、RNA或蛋白质序列中具有生物学功能的短保守序列模式&#xff08;motif&#xff09;。这些motif通常与特定的生物学功能相关&#xff0c;如DNA中的转录因子结合位点、RNA中的剪接位点…

VSCode调试python没有反应

原因&#xff1a;python的版本太低了&#xff0c;我的项目的python是3.5的&#xff0c;VSCode python debugger不支持低版本的python。 解决方法&#xff1a; debugging - debug python versions < 3.5 with vscode new debugger - Stack Overflow 安装支持低版本的Debug…

项目八 OpenStack存储管理

任务一 理解OpenStack块存储服务 1.1 •Cinder的主要功能 • 提供 持久性块存储资源&#xff0c;供 Nova 计算服务的虚拟机实例使用 。 • 为 管理块存储设备提供一套方法&#xff0c;对卷实现从创建到删除的整个生命周期 管理。 • 将 不同的后端存储进行封装&#xff0c;对外…

ScheduledExecutorService引起的线上问题(抛出异常后不继续执行)

线上有一个服务&#xff0c;采用ScheduledExecutorService定时任务刷新数据库数据到本地缓存作为路由信息 private ScheduledExecutorService scheduledExecutorService Executors.newScheduledThreadPool(1);scheduledExecutorService.scheduleWithFixedDelay(new Runnable()…

electron下载失败(electron如何切换镜像源)

打开&#xff1a; 或者&#xff1a; C:\Users\用户名\.npmrc 添加&#xff1a; electron_mirrorhttps://npmmirror.com/mirrors/electron/ 到文件中&#xff0c;保存 方法二&#xff1a; npm config set ELECTRON_MIRROR https://npmmirror.com/mirrors/electron/ ELECTR…

MavenPlus插件的基础功能完善

本次更新主要是在初版的searchEverywhere的基础上增加了pom.xml文件编辑器&#xff0c;目前的界面布局如下&#xff0c;进行适当说明&#xff1a; 打开pom文件后&#xff0c;你会得到如上图所示的布局页面&#xff0c;数据会同步显示 如果有冲突信息&#xff0c;则会以红色显示…

如何解决资源管理器被结束任务后的问题,怎么重启或新建资源管理器任务?

服务器上运行的东西太多&#xff0c;修改个文件夹的名字导致卡死。结束任务后导致系统页面空白。&#xff08;关闭了windows资源管理器&#xff09; 按CtrlShiftDelete没有反应。 按CtrlShiftEsc没有反应。 按CtrlShiftEnd没有反应。 按CtrlALTEnd有反应。 (win2012) 输入…

华为数通——单臂路由

单臂路由&#xff1a;指在三层设备路由器的一个接口上通过配置子接口&#xff08;或“逻辑接口”&#xff0c;并不存在真正物理接口&#xff09;的方式&#xff0c;实现原来相互隔离的不同VLAN&#xff08;虚拟局域网&#xff09;之间的互联互通。但是仅仅允许单播通信。 单臂路…

爬取CSDN博文到本地(包含图片,标签等信息)

文章目录 csdnToMD改进将CSDN文章转化为Markdown文档那有什么办法快速得到md文档&#xff1f;例如&#xff1a;获取单个文章markdown获取所有的文章markdown 项目中待解决的问题 csdnToMD 项目原作者&#xff1a;https://gitee.com/liushili888/csdn-is—mark-down 改进后仓库…

全球AI新闻速递6.20

1.国家药监局综合司&#xff1a;关于印发药品监管人工智能典型应用场景清单的通知。 2.Canalys&#xff1a;预计今年全球 AI 手机市场份额达 16%。 3.Adobe Acrobat 升级 AI 技能&#xff1a;文生图、梳理信息等。 4.中国科大人形机器人研究院揭牌。 5.华为官方预告&#x…

如何下载DVS Gesture数据集?解决tonic.datasets.DVSGesture错误HTTP Error 403: Forbidden

1 问题 DVSGesture数据集是一个专注于动态视觉传感&#xff08;Dynamic Vision Sensor, DVS&#xff09;技术的数据集&#xff0c;它包含了基于事件的图像记录&#xff0c;用于手势识别任务。DVSGesture数据集由一系列动态图像组成&#xff0c;这些图像是通过动态视觉传感器捕…

静态网页处理复杂请求

目录 1.定制请求头 (1)&#xff0e;查看请求头 (2)&#xff0e;设置请求头 2.验证 Cookie 3.保持会话 4. SSL 证书验证 在互联网中&#xff0c;网页中的内容是千变万化的&#xff0c;如果只根据请求 URL 发送基本请求&#xff0c;则可能 无法获取网站的响应数据&#xff0…

[创业之路-118] :制造业企业的必备管理神器-ERP-制造业的基本方程式与ERP的发展历程,哪些企业需要ERP?

目录 一、制造业的基本方程式 1.1 基本方程式 1.2 制造的数学模型 二、ERP的发展历程 2.1 发展历程 2.2 比较 三、过往产品回顾 3.1 定货点法 3.2 时段式ERP 3.3 闭环式MRP 3.4 ERP 四、哪些企业需要ERP 4.1 概述 4.2 软件企业需要ERP吗&#xff1f; 一、制造业的…

扫码点餐小程序搭建 商家智能化服务的新趋势

在这个数字化飞速发展的时代&#xff0c;独具个性的扫码点餐小程序也成为了人们对于店铺整体形象的加分项&#xff0c;店铺界面设计新颖、点餐操作简捷、让人心情愉悦的取餐时间差都成为了大家公认的打卡理由之一。因此&#xff0c;高颜值的实用点餐小程序也成为了商家们的店铺…

Hadoop安装和测试

一&#xff0c;下载 地址&#xff1a;Index of /dist/hadoop/common 选择3.3.6版本&#xff08;最新版本之前的一个版本&#xff0c;一般比较稳定&#xff09; 二&#xff0c;解压 解压到/data/module目录&#xff0c;这里随便自定义就好。 tar -zxvf hadoop-3.3.6.tar.gz …

超级好用的JSON格式化可视化在线工具

JSON是开发非常常用的一种报文格式,最常见的需求就是将JSON进行格式化,最好是有图形化界面显示结构关系,以便进行数据分析。 理想的在线JSON工具,应该支持快速格式化、可压缩、快捷复制、可下载导出,对存在语法错误的地方能明确显示。提供搜索定位功能,可视区足够大,最好…