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、 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

287 寻找重复数-类似于环形链表II

题目 给定一个包含 n 1 个整数的数组 nums &#xff0c;其数字都在 [1, n] 范围内&#xff08;包括 1 和 n&#xff09;&#xff0c;可知至少存在一个重复的整数。 假设 nums 只有 一个重复的整数 &#xff0c;返回 这个重复的数 。 你设计的解决方案必须 不修改 数组 nums…

光纤传感器十大品牌

十大光纤传感器品牌-光纤光栅传感器厂家哪家好-Maigoo品牌榜

如和完全免费快速访问外网?有亿点点不便利罢了

很鸡肋&#xff0c;但是可以试试 这个手机是真的可以使用谷歌的 不得不说有点意思&#xff0c;但肯定没啥用 地址跳转

软考高级论文真题“论湖仓一体架构及其应用”

论文真题 随着5G、大数据、人工智能、物联网等技术的不断成熟&#xff0c;各行各业的业务场景日益复杂&#xff0c;企业数据呈现出大规模、多样性的特点&#xff0c;特别是非结构化数据呈现出爆发式增长趋势。在这一背景下&#xff0c;企业数据管理不再局限于传统的结构化OLTP…

前端自动化

前端自动化的内容 自动化代码检查自动化测试自动化构建自动化部署自动化文档 前端自动化的最佳实践

【C#】使用数字和时间方法ToString()格式化输出字符串显示

在C#编程项目开发中&#xff0c;几乎所有对象都有格式化字符串方法&#xff0c;其中常见的是数字和时间的格式化输出多少不一样&#xff0c;按实际需要而定吧&#xff0c;现记录如下&#xff0c;以后会用得上。 文章目录 数字格式化时间格式化 数字格式化 例如&#xff0c;保留…

.NET C# 使用GDAL读取FileGDB要素类

.NET C# 使用GDAL读取FileGDB要素类 目录 .NET C# 使用GDAL读取FileGDB要素类1 环境2 Nuget3 Code 1 环境 VisualStudio2022 .NET6 GDAL 3.7.5 2 Nuget 3 Code using OSGeo.OGR; using OSGeo.OSR;namespace TestGDAL {internal class Program{static void Main(string[] a…

操作系统实验四:openEuler安装(openEuler配置静态网络、编写C或C++)

目录 一、实验要求 二、具体任务安排 1.安装openEuler &#xff08;1&#xff09;下载openEuler镜像 &#xff08;2&#xff09;使用vmware安装openEuler 2.在openEuler中编写C或者C测试程序 &#xff08;1&#xff09;安装g环境 &#xff08;2&#xff09;开始程序编码…

【2024最新华为OD-C/D卷试题汇总】[支持在线评测] LYA的测试用例执行计划(100分) - 三语言AC题解(Python/Java/Cpp)

🍭 大家好这里是清隆学长 ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解 💻 ACM银牌🥈| 多次AK大厂笔试 | 编程一对一辅导 👏 感谢大家的订阅➕ 和 喜欢💗 📎在线评测链接 https://app5938.acapp.acwing.com.cn/contest/2/problem/OD…

【b站-湖科大教书匠】2 物理层-计算机网络微课堂

课程地址&#xff1a;【计算机网络微课堂&#xff08;有字幕无背景音乐版&#xff09;】 https://www.bilibili.com/video/BV1c4411d7jb/?share_sourcecopy_web&vd_sourceb1cb921b73fe3808550eaf2224d1c155 目录 2 物理层 2.1 物理层的基本概念 2.2 物理层下面的传输媒…

Linux——man帮助命令

一、man 获得帮助信息 基本语法&#xff1a;man [命令或配置文件] &#xff08;功能描述&#xff1a;获得帮助信息&#xff09; 查看 ls 命令的帮助信息 [roothadoop101 ~]# man ls man [数字] [函数] 1、Standard commands &#xff08;标准命令&#xff09; 2、System…

【大数据 复习】第3章 分布式文件系统HDFS(重中之重)

一、概念 1.分布式文件系统把文件分布存储到多个计算机节点上&#xff0c;通过网络实现、文件在多台主机上进行分布式存储的文件系统。&#xff08;就是你的电脑存a&#xff0c;我的电脑存pple&#xff09; 2.降低了硬件开销: 与之前使用多个处理器和专用高级硬件的并行化处理装…

RabbitMQ的部署

一、前言 演示的为RabbitMQ的单机部署&#xff0c;在Centos7虚拟机中使用Docker来安装&#xff0c;需要掌握相应的docker命令 二、下载镜像 启动Docker: systemctl start docker 在线拉取&#xff1a;docker pull docker pull rabbitmq:3-management 三、安装MQ 运行容器&…

Python爬虫介绍

Python 作为一种广泛应用的编程语言&#xff0c;在 Web 开发、大数据开发、人工智能开发和嵌入式开发等领域都有着重要的应用。 Python 的易学性、清晰性和可移植性等特点使它得到很多技术人士的喜爱。对于数据科学和机器学习领域的程序员来说&#xff0c;Python 提供了强大的…

Structured Steaming结构化流详解:大案例解析(第12天)

系列文章目录 一、结构化流介绍&#xff08;了解&#xff09; 二、结构化流的编程模型&#xff08;掌握&#xff09; 三、Spark 和 Kafka 整合&#xff0c;流处理&#xff0c;批处理演示&#xff08;掌握&#xff09; 四、物联网数据分析案例&#xff08;熟悉&#xff09; 文章…

【html】用html写一个博物馆首页

效果图&#xff1a; 二级导航&#xff1a; 源码&#xff1a; <!DOCTYPE html> <html lang"zh"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><l…

如何在纯内网环境下,将EasyCVR视频汇聚网关通过4G与第三方公网云平台级联?

EasyCVR视频汇聚网关是TSINGSEE青犀软硬一体的一款产品&#xff0c;可提供多协议的接入、音视频采集、处理&#xff0c;能实现海量前端设备的轻量化接入/转码/分发、视频直播、云端录像、云存储、检索回看、智能告警、平台级联等&#xff0c;兼容多种操作系统&#xff0c;轻松扩…

搭建Vue的环境

目录 # 开篇 步骤一&#xff0c;准备Vue 的环境 步骤二&#xff0c;下载Vue.js的包 步骤三&#xff0c;创建并打开写前端代码的文件夹 步骤四&#xff0c;在VSCode中引入Vue.js的包 步骤五&#xff0c;创建第一个vue.html Vue其他知识 Vue.config命令 # 开篇 介绍&…

IEEE RAL 具有高运动性能的仿旗鱼机器人协同运动机制研究

水下机器人作为军用侦察、监测及攻击装置备受关注&#xff0c;目前传统水下机器人普遍采用螺旋桨作为推进器&#xff0c;但高噪音、高能耗等问题限制了应用范围。鱼类通过自然选择进化出优异的运动性能&#xff0c;特别是在海洋中游动速度快、机动性强的旗鱼。为了探究快速和高…

【服务器06】之【如何不开外网连接GitHub】

登录GitHub官网 GitHub: Let’s build from here GitHub 注册账号 登录账号 输入一个自定义名字&#xff0c;点击创建存储库就可以了 首先 如何在不开外网的条件下使用GitHub 第一步 下载安装Steam(Watt TooklKit) 区分一下如何查看哪个官网&#xff08;没有百度广告就是…