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.mzph.cn/pingmian/30917.shtml

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

相关文章

【Linux】I/O多路复用模型 select、poll、epoll

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞 关注支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; &#x1f525;Linux系列专栏&#xff1a;Linux基础 &#x1f525; 给大家…

多模块存储器

随着计算机技术的发展&#xff0c;处理的信息量越来越多&#xff0c;对存储器的速度和容量要求也越来越高&#xff1b;而且随着CPU性能的不断提高、IO设备数量不断增加&#xff0c;导致主存的存取速度已经称为了整个计算机系统的性能瓶颈。这就要求我们必须提高主存的访问速度。…

令人震撼的人类智慧的科学领域-AI技术

AI&#xff0c;全称为人工智能&#xff08;Artificial Intelligence&#xff09;&#xff0c;是一门致力于让机器模仿人类智慧的科学领域。其核心技术涵盖了机器学习、自然语言处理、计算机视觉及专家系统等多个方面。AI旨在开发能够感知环境、进行逻辑推理、自主学习并做出决策…

【VMware】VMware虚拟机安装_配置_使用教程

一、准备工作 1、下载VMware软件&#xff1a;访问VMware官方网站&#xff0c;下载适合你操作系统的VMware Workstation Pro安装包。 下载地址&#xff1a;VMware Desktop Hypervisors for Windows, Linux, and Mac 2、准备操作系统镜像文件&#xff1a;根据你想要在虚拟机中安…

红黑树(数据结构篇)

数据结构之红黑树 红黑树(RB-tree) 概念&#xff1a; 红黑树是AVL树的变种&#xff0c;它是每一个节点或者着成红色&#xff0c;或者着成黑色的一棵二叉查找树。对红黑树的操作在最坏情形下花费O(logN)时间&#xff0c;它的插入操作使用的是非递归形式实现红黑树的高度最多是…

thread model线程模型

Concurrency并发 vs. Parallelism执行 Many-to-One GNU Portable Threads 多对一即多个用户线程映射到单个内核线程 该模式用的少 一个线程阻塞会导致所有线程阻塞 多线程可能无法在多核系统上并行运行&#xff0c;因为同一时间内核中可能只有一个线程 Concurrent executio…

探索FlowUs息流:个人和团队知识管理解决方案|FlowUs稳定保障你的笔记安全无忧

FlowUs息流&#xff1a;稳定运营保障你的笔记安全无忧 在知识管理工具的选择上&#xff0c;稳定性是用户最关心的问题之一。FlowUs息流以其稳定的运营记录&#xff0c;为用户提供了一个可靠的工作环境。我们深知&#xff0c;一个知识管理平台的稳定性直接影响到团队的生产力和…

3ds MAX 2024版资源包下载分享 3ds Max三维建模软件资源包下载安装

3DSMAX凭借其强大的功能和广泛的应用领域&#xff0c;吸引了无数创作者的青睐。 在游戏制作领域&#xff0c;3DSMAX展现出了无可比拟的优势。从细腻的角色建模到宏大的场景搭建&#xff0c;再到逼真的动画效果和渲染&#xff0c;它都能轻松应对&#xff0c;为游戏世界注入了生动…

“开放”的大模型到底有多“开放”?!

大模型技术论文不断&#xff0c;每个月总会新增上千篇。本专栏精选论文重点解读&#xff0c;主题还是围绕着行业实践和工程量产。若在某个环节出现卡点&#xff0c;可以回到大模型必备腔调或者LLM背后的基础模型重新阅读。而最新科技&#xff08;Mamba,xLSTM,KAN&#xff09;则…

java面向对象(上)

一.面向对象与面向过程 1.面向过程 面向过程(procedure Oriented Programming),简称POP,主要思想就是将问题分解成一个个步骤去解决,把这个步骤称为函数. 典型语言:C语言 优点:可以大大简化代码 缺点:当代码量过大时,不方便维护 2.面向对象 面向对象(Object Oriented Pr…

Harbor 源码编译arm版本镜像

1. 先准备一个国外的arm服务器&#xff0c;&#xff08;使用国内的也行&#xff0c;只是有时候下载依赖会断&#xff0c;需要科学上网&#xff09; 2. git clone harbor的源码包&#xff0c;切换到要编译的分支 3. 修改harbor/Makefile Makefile里面的这些字段设置为true&…

四川财谷通信息技术抖音小店信誉之选,购物新体验

在当今数字化浪潮的推动下&#xff0c;电商平台的兴起为人们的生活带来了极大的便利。而在众多电商平台中&#xff0c;抖音小店以其独特的社交属性和便捷的购物体验&#xff0c;逐渐赢得了消费者的青睐。四川财谷通信息技术有限公司旗下的抖音小店&#xff0c;更是凭借其可靠的…

记录SpringBoot启动报错解决

记录SpringBoot启动报错解决 报错现场 Failed to configure a DataSource: url attribute is not specified and no embedded datasource could be configured. Reason: Failed to determine a suitable driver class Action: Consider the following:If you want an embedde…

33.获取入口点

上一个内容&#xff1a;32.双击列表启动目标游戏 前置知识 25.入口点注入&#xff08;查看pe头&#xff09;、32.双击列表启动目标游戏 以它的代码为基础进行修改 效果图&#xff1a; 代码实现&#xff1a;原理通过读文件流的方式把文件加载到内存中然后解析pe结构 void CWnd…

uniapp 实人认证

首先Dcloud创建云服务空间&#xff0c;开启一键登录并充值 下一步 1. 右键项目 》 创建uniCloud云开发环境 》右键uniCloud》关联云服务空间 2. cloudfunctions右键 新建云函数&#xff0c;任意命名&#xff08;例&#xff1a;veify&#xff09;&#xff0c;然后右键项目》管…

Python 基础:异常

目录 一、异常概念二、处理异常2.1 抛出异常2.2 使用 try-except 代码块2.3 使用 try-except-else 代码块2.4 静默失败 三、总结 遇到看不明白的地方&#xff0c;欢迎在评论中留言呐&#xff0c;一起讨论&#xff0c;一起进步&#xff01; 本文参考&#xff1a;《Python编程&a…

Vite文件目录结构介绍

我们通过命令create-vite shop-admin基于Vite创建vue3项目后&#xff0c;其默认的文件目录结构如下&#xff1a; shop-admin ├─ index.html ├─ package-lock.json ├─ package.json ├─ public │ └─ vite.svg ├─ src │ ├─ App.vue │ ├─ assets │ │ └…

C++多重继承,虚基类与友元

一.多重继承 就是一个类继承多个基类&#xff1b; class <派生类名>&#xff1a;<派生方式1><基类名1>,<派生方式n><基类名n> class Derived:public:Base1,public:Base2 上述形式&#xff1a;基类之间由逗号隔开&#xff0c;且必须指明继承方式…

【Python绘画】气球祝福节日快乐

本文收录于 《一起学Python趣味编程》专栏&#xff0c;从零基础开始&#xff0c;分享一些Python编程知识&#xff0c;欢迎关注&#xff0c;谢谢&#xff01; 文章目录 一、前言二、代码示例三、知识点梳理四、总结 一、前言 本文介绍如何使用Python的海龟画图工具turtle&#…

示例:WPF中DataGrid简单设置合并列头

一、目的&#xff1a;应用DataGridTemplateColumn列模板&#xff0c;去拆分列头和单元格布局的方式设置列头合并样式 二、实现 效果如下 三、环境 VS2022 四、示例 应用DataGridTemplateColumn自定义列头信息和单元格信息 <DataGrid AutoGenerateColumns"False"…