Mysql学习笔记--高级

DQL高级查询

1, [掌握]limit分页查询

语法
select 字段名1,字段名2,… from 表名 limit M, N;
M: 整数,表示从第几条索引开始,计算方式:(当前页-1) * 每页显示条数;
N: 整数,表示查询多少条数据.

例如:select * from product limit 5,5;

2, [掌握]分组查询

语法:select 字段名1,字段名2,… from 表名 group by 分组字段名 [having 分 组条件];
说明:
(1)分组字段名:表示按照指定字段的值进行分组;
(2)group by的作用是实现分组,默认可以实现去重操作;
(3)having分组条件是用来过滤分组后的数据。
例如:select gender from person group by gender;

2.1,使用group by + 聚合函数

语法:select 字段名1,字段名2,聚合函数(…) from 表名 group by 分组字段名;
例如:select gender,count(*) gd_count from person group by gender;

2.2,group by + having的使用

语法:select 字段名1,字段名2,… from 表名 group by 分组字段名 having 分组 条件;
注意:having子句放在结尾处。
例如:select gender,count() as gd_count from person group by gender having count()>2; # having

3,外键和关系

1,添加外键约束的语法
语法:

create table 表名(
 ... 
 字段名 数据类型(长度) [约束], 
 foreign key (字段名) references 另外表名(主键列名)
  ) engine = InnoDB default charset utf8;

注意:(1)在设置外键约束时,需要使用到foreign key关键字;
(2)通常情况下,建议设定外键约束放在定义所有字段的结尾处。

2,表与表之间的关系
(1)一对一关系(1:1)
(2)一对多关系(1:N) [常见] (3)多对多关系(M:N) [常见]
3,通过外部添加外键
alter table 表A add constraint xxxfk foreign key (外键字段名) references 另外表名(主键字段名);
注意:要添加外键约束时,先记得新增一个字段,然后再给这个字段设定外键约束条件。
4,当数据表之间产生关联后,需要注意:
(1)不能给表B(外键)添加一个表A不存在的主键字段值;
(2)不能删除表B(外键)已使用表A存在的主键字段值。

6,子查询

子查询指的是将一条select语句的结果,作为另一条select语句的一部分(如:查询
条件、查询结果、表等),来进行数据查询。
语法:

select *|字段名1,字段名2,.. from 表名 where 字段名 = (另外select语句 的结果);

注意:当作表处理时,要记得设定别名
2,建议把子查询的语句使用()引起来
例如:


# 仅查询分类为"化妆品"下的所有商品名称。 select
pname 
from product 
where category_id=( 
select cid 
from category where cname='化妆品' );

4,多表查询

多表查询,也可称为连接查询,可用于实现多个数据表之间的数据查询。
注意:当查询的字段数据来自不同的数据表时,就可以使用多表查询来完成。
多表查询可以分为4类:
(1)交叉连接查询
(2)内连接查询
(3)外连接查询
(4)自连接查询

4.1交叉查询

通常地,交叉连接查询的结果是:两个数据表的并集,也称为笛卡尔积

笛卡尔积是指在数学中,两个集合X和Y的笛卡尔乘积,又称直积。 表示为X × Y,第一个对象是X的成员,而第二个对象是Y的所有可能有序对的其中一个 成员。
语法:

select 字段名 from A表名, B表名;
或者
select 字段名 from A表名 cross join B表名;

例如
# 注意: 一般的, 对于连接查询, 会给表名设定别名 select * from table_category c cross join table_product p;
4.2 内连接查询

内连接查询指的是查询两个数据表中,符合条件的共有记录,即交集。
(1)作为了解,隐式内连接是指没有inner join关键字,而条件直接使用where来指
定,
语法:select 字段名 from A表名, B表名 where 条件;
(2)显式内连接是指需要使用inner join … on语句,可以省略inner,语法:

select 字段名 from A表名 别名 inner join B表名 别名 on 条件 [where 查询条件];

select 字段名 from A表名 别名 join B表名 别名 on 条件 [where 查询条 件];

例如:
select * from table_category tc inner join table_product tp on tc.cid = tp.category_id;

select cid from table_category tc join table_product tp on tc.cid = tp.category_id;
4.3左连接查询

左外连接也简称为左连接,是以左表为主并根据条件来查询右表数据。(如果根据条件查询,当右表数据不存在时,则会使用null值来填充。)
左外连接查询需要使用left join关键字,语法:

select 字段名 from A表名 别名 left [outer] join B表名 别名 on 条件;

说明:(1)left join指的是左外连接查询关键字;
(2)on后面的是连接查询条件;
(3)A表名是指左表,B表名是指右表。

4.4右连接查询

右外连接也简称为右连接,以右表为主并根据条件来查询左表数据。(如果根据条件查询,当左表数据不存在时,则会使用null填充值)
右外连接查询需要使用right join关键字,语法:

select 字段名 from A表名 别名 right [outer] join B表名 别名 on 条件;

说明:
(1)right join指的是右外连接查询关键字;
(2)on后面的是连接查询条件;
(3)A表名是指左表,B表名是指右表。

4.5左右连接的区别

(1)当左表有数据为null时,左外连接查询的结果中,右表的数据结果都为null值;
(2)当右表有数据为null时,右外连接查询的结果中,左表的数据结果都为null值。

5,自连接查询

自连接查询,顾名思义,就是数据表自己和自己连接,然后进行数据比较。
其实,自连接查询指的是:左表和右表都是同一个表,根据连接查询条件来查询两个表中的数据。(在进行连接查询操作时,必须为数据表定义别名!)

窗口函数

1,窗口函数介绍

窗口函数,也称为OLAP(OnLine Anallytical Processing),意思是对数据库数据
进行实时分析处理。
也就是说窗口函数就是:为了实现实时分析处理,而添加的标准SQL功能。
窗口函数是类似于可以返回聚合值的函数,例如sum()、count()、max()等。
但又与普通的聚合函数不同,因为它不会对结果进行分组,这使得输出与输入的行数
相同。
语法:

select 窗口函数() over([partition by xx order by xx]) from 表名;

注意:(1)聚合功能:窗口函数可以使用聚合函数sum()、count()、avg()之类的计算统计功能;
(2)partition by:只需要把他看成是group by子句,但在窗口函数中,要写成partition by;
(3)order by:order by和普通查询语句中的order by没什么不同,但要注意输出顺序。

2,基本语法与优点

优点:
①窗口函数更易于使用,语法也简单。
②使用窗口函数比使用替代方法要快得多,当你处理成百上千个、千兆字节的数据时,这非常有用。
计算结果公式为:
最终的数据记录结果 = 每行的数据记录 + 窗口函数值
基本语法:

窗口函数名(字段名) over([partition by 分区字段名] [order by 分组内排 序])

说明:
(1)窗口函数名可以是聚合函数,例如sum()、count()、avg()等,也可以是分析函数[后面介绍];
(2)聚合函数有count()、sum()、avg()、min()、max();
(3)分析函数有row_number、rank、dense_rank等。

3,窗口函数over()子句

(1)over()意思是所有的数据都在窗口中;
(2)这里的SQL语句并不复杂,主要是看over()是在谁的前面部分,就代表它的含义。

selectlast_name, first_name, years_worked, (years_worked - avg(years_worked) over ()) as def_years
from employee
3.1over()与where配合使用

注意:窗口函数是在where条件语句后再执行。

# 窗口函数 
select* 
from 
(select *,avg(salary) over () avg_sy 
from employee) temp_emp
 where temp_emp.salary>avg_sy;
3.2over(partition by 字段)的使用

partition by可用于在窗口函数中的分组处理。

窗口函数名(字段名) over(partition by 字段名1[,字段名2,...]) [as 别名]

说明:
(1)partition by的作用于group by类似,就是将数据按照传入的字段进行分
组;
(2)partition by叫做分析函数;
(3)关键字执行顺序的优先级是:from > where > group by > having > order
by > partition by; (4)注意:partition by应用在所有关键字之后,可以简单理解为就是在执行完
select查询的整个语句后,在所得结果集的基础上再进行partition by分组处
理。

3.3voer(order by)字段的使用
ranking函数名() over([partition by 字段名1] order by 字段名 [asc | desc]) [as 别名]

说明:
(1)ranking函数名()可以是row_number()、rank()、dense_rank()这三个函数中的某一个,都用于返回结果集的分组内每行排名;
(2)row_number()不管排名是否有相同的,都会加序号,且按照1、2、 3、…、n顺序;
(3)rank()是当排名相同时,名次一样,且同一排名有几个,后面排名就会跳过几次;
(4)dense_rank()是当排名相同的名次一样,且后面名次不跳过;
(5)order by就是将数据按照传入的字段从小到大或从大到小进行排序。

最后总结的xmid图片

在这里插入图片描述

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

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

相关文章

网页速度即体验速度:vueSPA(单页应用)首屏加载成就用户心动瞬间

🎬 江城开朗的豌豆:个人主页 🔥 个人专栏 :《 VUE 》 《 javaScript 》 📝 个人网站 :《 江城开朗的豌豆🫛 》 ⛺️ 生活的理想,就是为了理想的生活 ! ​ 目录 ⭐ 专栏简介 📘 文章引言 一…

智能PDU在现代智慧医院机房末端配电系统中的应用分析

随着智慧医院的高速建设和发展,电子计算机及各类通讯设备在医院中广泛应用,医院信息化程度在不断提高,对医院内网、外网、无线网及设备网的稳定运行提出了更高的要求。信息机房作为医院所有网络数据存储交换的中心,它的7x24小时安…

Outlook搜索功能不全

Outlook搜索功能不全 解决方案 1、当打开Outlook想搜索内容,但无法搜索或者搜索不全时。 2、关掉Outlook在桌面上找到此电脑,右键管理 3、进入计算机管理后---服务和应用---服务----找到Windows Search--右键启动或者重新启动即可

(1)(1.14) LightWare SF10/SF11激光雷达

文章目录 前言 1 串行连接 2 I2C 连接 3 参数说明 前言 Lightware SF20 和 LW20 是体积小、测距远(100m)、精度高的测距仪。有两种型号,LW20/Ser 使用串行接口,LW20/I2C 使用 I2C 接口。 1 串行连接 对于串行连接&#xff0…

泊车功能专题介绍 ———— AVP系统技术要求之地图数据感知要求

文章目录 地图数据规范地图图层和表达要求地图各类数据属性要求SLAM地图要求坐标系数据采集车传感器数据采集数据流程 感知功能要求车端感知功能关键安全感知次要安全感知功能感知体验相关感知 车-场协同感知类型一:引导类型二:重点地段增强类型三&#…

万界星空科技智能管理系统低代码平台

低代码平台正成为企业数字化基础设施的重要一环,越来越多的企业为了可持续的数字化建设,开始启用低代码平台,其选型除了平台易用性、应用搭建能力外,也关注与第三方平台的集成性,及厂商对行业knowhow的积累、品牌口碑及…

Outlook无法打印邮件

Outlook无法打印邮件 故障现象 Outlook选择文件无法打印,提示“除非选定某个项目,否则无法打印,请选定某个项目,然后再试” 故障截图 故障原因 此目录配置文件异常C:\Users\"用户名"\AppData\Roaming\Microsoft\Out…

【JAVA学习笔记】69 - 多用户通信系统

项目代码 https://github.com/yinhai1114/Java_Learning_Code/tree/main/QQClient https://github.com/yinhai1114/Java_Learning_Code/tree/main/QQServer 〇、环境设置以及前言 该项目内会弱化UI界面的设计,因为JAVA本质不是用来开发界面的。 项目开发流程 对于…

Final Cut Pro X for Mac:打造专业级视频剪辑的终极利器

随着数字媒体技术的不断发展,视频剪辑已经成为各行各业不可或缺的一部分。Final Cut Pro X for Mac作为一款专业的视频剪辑软件,凭借其强大的功能和易用性,已经成为Mac用户的首选。本文将向您详细介绍Final Cut Pro X for Mac的优势、功能以及…

联想笔记本怎么录屏?这个方法请你收好

“联想笔记本怎么录屏呀?开学刚买的联想笔记本,本来打算用来上网课,现在老师叫把网课录制下来,用来课后复习,可是我不会录屏呀,这怎么办呀,希望大家帮帮我!” 屏幕录制已经成为人们…

Android 基本属性绘制文本对象FontMetrics

FontMetrics对象 它以四个基本坐标为基准,分别为: ・FontMetrics.top ・FontMetrics.ascent ・FontMetrics.descent ・FontMetrics.bottom 如图: 要点如下: 1. 基准点是baseline 2. Ascent是baseline之上至字符最高处的距离 3. Descent是ba…

【中国知名企业高管团队】系列66:老板ROBAM

昨天华研荟为您介绍了厨电领域的TOP企业——方太FOTILE的发展历程,以及作为企一代茅理翔和企二代茅忠群的创业故事。 今天为您介绍同处浙江的老板电器。 一、关于老板电器 以下内容来自老板电器官网介绍: 杭州老板电器股份有限公司创立于1979年&…

DC电源模块的电阻或电位器对输出电压的调节

BOSHIDA博电科技 DC电源模块的电阻或电位器对输出电压的调节 DC电源模块是电子设备中广泛应用的一种电源模块,它能够将交流电转换为稳定的直流电,并为其他电路或设备提供所需的电源。在一些场合中,需要对DC电源模块的输出电压进行调节&#…

postman的使用

Postman的环境变量以及全局变量 设置接口的环境变量(环境变量就是全局变量),设置接口的全局变量(全局变量是能够在任何接口里面访问的变量) 全局变量通过 {{变量名}} 获取 接口关联 场景:需要将“登录接口…

轻松理解 Transformers (4) :Decoder 和 Output 部分

编者按:Transformers凭借其卓越的性能,已经成为自然语言处理领域的代表性模型架构。但是Transformers的内在机制却比较复杂,对许多读者来说可能还存在一定的难度。本系列对 Transformer各组件进行逐一剖析,我们可以更直观地理解这…

HTML表单的基本应用

注释很详细,直接上代码 效果: 涉及内容: 1.信息输入框 2.单选框 3.复选框(多选框) 4.文本输入框 5.下拉栏 6.隐藏域(用于防脚本) 7.确认按钮 8.重置按钮 9.普通按钮 10.禁用部件 11.下拉栏默认选…

Git常用指令以及常见问题解决

摘要:记录本人Git常用指令以及常见问题解决 1.Git流程 2.具体操作 git init:初始化目录(一般直接git clone远端的工程,这一步都可以省略掉); 输入命令“git config --global user.name xxx”来配置你的用…

MySQL最新2023年面试题及答案,汇总版(6)【MySQL最新2023年面试题及答案,汇总版-第三十六刊】

文章目录 MySQL最新2023年面试题及答案,汇总版(6)01、MySQL中DATETIME和TIMESTAMP的区别?02、简单描述MySQL中,索引,主键,唯一索引,联合索引的区别,对数据库的性能有什么影响(从读写…

【毕业论文】基于微信小程序的大学生互助平台设计与实现

完整下载链接https://download.csdn.net/download/No_Name_Cao_Ni_Mei/88519756 基于微信小程序的大学生互助平台设计与实现 Design and Implementation of a College Student Assistance Platform based on WeChat Mini Program 目录 目录 2 摘要 3 关键词 4 第一章 绪论 4 1.…

文案神器:8款AI文案工具轻松搞定文案

无论你是否准备好,它们都已经来了。如果你知道如何使用它们,AI文案工具可以成为你的新朋友。 现在AI文案工具无处不在,眼花缭乱,从内容生成器到电子商务聊天机器人。原因很简单:AI可以节省大量时间和金钱。这是我们都…
最新文章