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、 

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

4、SpringMVC 实战小项目【加法计算器、用户登录、留言板、图书管理系统】

SpringMVC 实战小项目 3.1 加法计算器3.1.1 准备⼯作前端 3.1.2 约定前后端交互接⼝需求分析接⼝定义请求参数:响应数据: 3.1.3 服务器代码 3.2 ⽤⼾登录3.2.1 准备⼯作3.2.2 约定前后端交互接⼝3.2.3 实现服务器端代码 3.3 留⾔板实现服务器端代码 3.4 图书管理系统准备后端 3…

轻量级日志系统——Loki

目录 一、loki简介 二、Loki 快速上手 第一步安装 Loki 第二步安装 Promtail 第三步安装granafa 三、LogQL 语法 四、Loki收集nginx日志 1、修改nginx配置 2、nginx服务器上安装promtail 3、添加doshbarod 一、loki简介 Loki是 Grafana Labs 团队最新的开源项目&am…

RERCS系统开发实战案例-Part05 FPM Application的Feeder Class搜索组件的实施

1、通过事务码 SE24对Feeder Class实施 1&#xff09;接口页签的简单说明&#xff1a; ① IF_FPM_GUIBB&#xff1a;通用UI构建块&#xff0c;整个UIBB模块的基础接口&#xff1b; ② IF_FPM_GUIBB_SEARCH&#xff1a;通用搜索UI构建块&#xff0c;搜索组件UIBB的基础接口&…

中东文明史

转自&#xff1a;想要了解完整的中东文明史&#xff1f;这篇文章成全你 - 知乎 (zhihu.com) 写在前面 中东文明是人类历史上最古老的文明。人类祖先从东非大裂谷走出之后&#xff0c;首先选择定居在中东地区的新月沃土上&#xff0c;并建立了人类历史上有文字记载的第一个文明…

Mybatis-映射文件中select标签resultType属性的使用

数据库的最最基本操作“增删改查”&#xff0c;“查”是最复杂的&#xff0c;有各种各样的查询&#xff0c;所以对应到Mybatis中的select标签也是这四个操作中最复杂的 resultType属性的使用 1.返回的结果是List集合的类型 select标签里的resultType类型设置为List集合里的元…

关于正点原子stm32f103精英板v1的stlink通信失败问题解决方案

由于最新的固件不适配&#xff0c;我们要想其工作要下载007的固件。 https://www.st.com/en/development-tools/stsw-link007.html?dlredirect 版本选择最低的。然后选择windows文件夹&#xff0c;更新程序 然后进keil就能正常识别到了

mediasoup源码分析(三)channel创建及信令交互

mediasoup源码分析--channel创建及信令交互 概述跨职能图业务流程图代码剖析tips 概述 在golang实现mediasoup的tcp服务及channel通道一文中&#xff0c;已经介绍过信令服务中tcp和channel的创建&#xff0c;本文主要讲解c中mediasoup的channel创建&#xff0c;以及信令服务和…

【C++高阶】掌握AVL树:构建与维护平衡二叉搜索树的艺术

&#x1f4dd;个人主页&#x1f339;&#xff1a;Eternity._ ⏩收录专栏⏪&#xff1a;C “ 登神长阶 ” &#x1f921;往期回顾&#x1f921;&#xff1a;STL-> map与set &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; ❀AVL树 &#x1f4d2;1. AVL树…

MySQL理解-下载-安装

MySQL理解: mysql:是一种关系型数据库管理系统。 下载&#xff1a; 进入官网MySQLhttps://www.mysql.com/ 找到download 滑动到最下方&#xff1a;有一个开源社区版的链接地址&#xff1a; 然后就下载完成了 安装&#xff1a; 双击&#xff1a; 一直next 一直next这一步&…

Spire.PDF for .NET【文档操作】演示:设置 PDF 文档的 XMP 元数据

XMP 是一种文件标签技术&#xff0c;可让您在内容创建过程中将元数据嵌入文件本身。借助支持 XMP 的应用程序&#xff0c;您的工作组可以以团队以及软件应用程序、硬件设备甚至文件格式易于理解的格式捕获有关项目的有意义的信息&#xff08;例如标题和说明、可搜索的关键字以及…

java基于ssm+jsp 美食推荐管理系统

1前台首页功能模块 美食推荐管理系统&#xff0c;在系统首页可以查看首页、热门美食、美食教程、美食店铺、美食社区、美食资讯、我的、跳转到后台等内容&#xff0c;如图1所示。 图1前台首页功能界面图 用户注册&#xff0c;在注册页面可以填写用户名、密码、姓名、联系电话等…

仓库管理系统01--数据库介绍

1、表结构 1&#xff09;UserInfo 用户表 2&#xff09;Supplier供应商表 3&#xff09;Store 仓库表 4&#xff09;其他表 Customer 客户表&#xff0c;Spec 规格表&#xff0c;GoodsType 货物类别表&#xff0c;Goods 货物表&#xff0c;InStore 入库表&#xff0c;OutSto…

LearnOpenGL - Android OpenGL ES 3.0 绘制纹理

系列文章目录 LearnOpenGL 笔记 - 入门 01 OpenGLLearnOpenGL 笔记 - 入门 02 创建窗口LearnOpenGL 笔记 - 入门 03 你好&#xff0c;窗口LearnOpenGL 笔记 - 入门 04 你好&#xff0c;三角形OpenGL - 如何理解 VAO 与 VBO 之间的关系LearnOpenGL - Android OpenGL ES 3.0 绘制…

有趣的 Oracle JDBC 驱动包命名问题 - ojdbc6 和 ojdbc14 哪个新?!

有趣的 Oracle JDBC 驱动包命名问题 - ojdbc6 和 ojdbc14 哪个新?! 1 背景概述 最近协助一个小兄弟排查了某作业使用 sqoop 采集 oracle 数据的失败问题&#xff0c;问题现象&#xff0c;问题原因和解决方法都挺直观&#xff0c;但在此过程中发现了一个有趣的 Oracle JDBC 驱…

特氟龙深水采样器FEP贝勒管水质取样器密封性好

贝勒管深水采样器(bailers tube),是一种经济型便携式水质采样器&#xff0c;操作简单&#xff0c;使用方便&#xff0c;性价比高&#xff0c;能大限度的保证样品的真实性。采样管直径很小&#xff0c;能够采取小口径的深水井水样。是一款简单实用&#xff0c;性价比高的水质采样…

C语言入门课程学习笔记8:变量的作用域递归函数宏定义交换变量

C语言入门课程学习笔记8 第36课 - 变量的作用域与生命期&#xff08;上&#xff09;第37课 - 变量的作用域与生命期&#xff08;下&#xff09;实验—局部变量的作用域实验-变量的生命期 第38课 - 函数专题练习第39课 - 递归函数简介实验-递归小结 第40课 - C 语言中的宏定义实…

C语言 while循环1

在C语言里有3种循环&#xff1a;while循环 do while 循环 for循环 while语句 //while语法结构 while&#xff08;表达式&#xff09;循环语句; 比如在屏幕上打印1-10 在while循环中 break用于永久的终止循环 在while循环中&#xff0c;continue的作用是跳过本次循环 …

如何安全进行亚马逊、沃尔玛测评?

在亚马逊、沃尔玛、速卖通、阿里国际站等电商平台上&#xff0c;测评已成为一种高效的推广手段&#xff0c;但伴随的风险也不容忽视。这些风险主要源于平台严格的大数据风控机制&#xff0c;它涵盖了多个方面&#xff0c;以确保评价的真实性和合规性。 首先&#xff0c;硬件参数…

Avalonia 常用控件二 Menu相关

1、Menu 添加代码如下 <Button HorizontalAlignment"Center" Content"Menu/菜单"><Button.Flyout><MenuFlyout><MenuItem Header"打开"/><MenuItem Header"-"/><MenuItem Header"关闭"/&…

Unity贪吃蛇改编【详细版】

Big and small greedy snakes 游戏概述 游戏亮点 通过对称的美感&#xff0c;设置两条贪吃蛇吧&#xff0c;其中一条加倍成长以及加倍减少&#xff0c;另一条正常成长以及减少&#xff0c;最终实现两条蛇对整个界面的霸占效果。 过程中不断记录两条蛇的得分情况&#xff0c…