【示例】MySQL-4类SQL语言-DQL

文章目录

  • 前言
  • DQL | Data Query Language
  • 总述 | 涵盖几乎所有关键字的DQL语句
  • 单表查询
    • 关键字 | 用在Select后面
      • 查询内容:表字段
      • 查询内容:聚合函数
      • 查询内容:[排序函数+] [聚合函数+] 窗口函数
      • 查询内容:表字段函数
    • 关键字 | 用在Where后面
      • 查询条件:比较远算符
      • 查询条件:逻辑运算符
      • 查询条件:表字段处理函数
    • 关键字 | 用在Group By后面 + Having后面
      • 分组内容:字段名
    • 关键字 | 用在Order By后面
      • 排序内容:表字段
    • 关键字 | 用在Limit后面
      • 分页内容:索引、记录数
  • 多表查询
    • 联合查询、子查询【重要】

前言

本文主要讲述MySQL中4中SQL语言的使用及各自特点。

SQL语言总共分四类:DDL、DML、DQL、DCL。

本章主要讲述DQL语言。

DQL | Data Query Language

数据查询语言,用来查询数据库中表的记录

总述 | 涵盖几乎所有关键字的DQL语句

编写顺序

SELECT  字段列表FROM 表名列表WHERE 条件列表GROUP BY 分段字段列表HAVING 分组后条件列表ORDER BY 排序字段列表LIMIT 分页参数

执行顺序

FROM 表名列表WHERE 条件列表GROUP BY 分段字段列表HAVING 分组后条件列表SELECT  字段列表ORDER BY 排序字段列表LIMIT 分页参数

单表查询

关键字 | 用在Select后面

查询内容:表字段

# 查询多个字段
SELECT 字段1, 字段2, 字段3 ... FROM 表名;# 查询所有字段
SELECT * FROM 表名 ;# 查询字段并设置别名(写不写as都一样)
SELECT 字段1 [ AS 别名1 ] , 字段2 [ AS 别名2 ] ... FROM 表名;
SELECT 字段1 [ 别名1 ] , 字段2 [ 别名2 ] ... FROM 表名;# 去重查询
SELECT DISTINCT 字段列表 FROM 表名;# 聚合函数,统计相关信息
SELECT COUNT(1) FROM 表名;

查询内容:聚合函数

聚合查询:以一列数据为整体,进行纵向查询。任何值为Null的字段数据,都不参与聚合查询

函数功能
count( [DISTINCT] expr )统计expr的数量,可以是单纯的列、数字、*
max( column )返回column列的最大值
min( column )返回column列的最小值
avg( [DISTINCT] expr )返回expr的平均值,expr可以是单纯的列,也可以是列之间的四则运算
sum( [DISTINCT] expr )返回expr的总和,expr可以是单纯的列,也可以是表字段函数处理后的结果
# 基础语法
SELECT 聚合函数() FROM 表名;# 示例
SELECT query_name, ROUND(AVG(rating/position), 2) as quality,ROUND(SUM(IF(rating < 3, 1, 0)) * 100 / COUNT(*), 2) as poor_query_percentage
FROM Queries
GROUP BY query_name
having query_name is not null

查询内容:[排序函数+] [聚合函数+] 窗口函数

窗口函数定义:OVER()窗口函数用于定义一个窗口,对一组值进行操作,不需要使用GROUP BY子句对数据进行分组,就能够在同一行同时返回基础列和聚合列。

窗口函数的用法:

OVER ( [ PARTITION BY column ] [ ORDER BY culumn ] )
  • PARTITION BY:用于给指定列进行分组
  • ORDER BY:在分组的前提下,按照指定列对组内数据进行排序,以方便累计处理

应用示例:窗口函数+聚合函数+排序函数

查询内容:表字段函数

参考链接:https://blog.csdn.net/qq_45445505/article/details/137653139

关键字 | 用在Where后面

查询条件:比较远算符

比较运算符写法示例功能
>、>=、<、<=、=WHERE id > 10大于、大于等于、小于、小于等于、等于
<> 或者 !=WHERE id <> 10不等于
BETWEEN ... AND ...WHERE id BETWEEN 10 AND 100在某个范围之内:[最小值、最大值],是个闭区间
IN(...)WHERE id in (10, 12, 14)在in之后的列表中的值,多选一
NOT IN(...)WHERE id NOT IN (1, 5, 9)返回值不在列表内的行
LIKE 占位符WHERE id LikE _ABC模糊匹配:_匹配单个字符, %匹配任意个字符)
IS NULLWHERE id IS NULL判断是否是NULL
IS NOT NULLWHERE id IS NOT NULL判断是否不是NULL

上述部分语句解析:

  • WHERE id LikE _ABC 返回以ABC为结尾,且整体长度为4的数据,例如:1ABC、AABC、ABABC(这个不是,长度不满足)
  • WHERE id LikE %ABC 返回以ABC为结尾,且整体长度大于等于3的数据,例如:ABC、AABC、AAACABC、AAACABCA(这个不是,不满足)
# 基础语法
SELECT 字段列表 FROM 表名 WHERE 条件列表;# 示例--占位符
select * from emp where name like '__';  		# 查询姓名为两个字的员工
select * from emp where idcard like '%X';		# 查询身份证结尾为X的员工
select * from emp where idcard like '_________________X';		# 查询身份证结尾为X的员工

查询条件:逻辑运算符

常用逻辑运算符功能
AND 或者 &&并且
OR 或者 ||或者
NOT 或者 !非,不是

查询条件:表字段处理函数

# 示例:mod函数
select *
from cinema
where description != "boring" and mod(id, 2) = 1
order by rating desc;

关键字 | 用在Group By后面 + Having后面

分组内容:字段名

# 通用语法
# 分组查询经常和聚合函数一起使用
SELECT 字段列表 FROM 表名 [ WHERE 分组前筛选条件 ] GROUP BY 分组字段名 [ HAVING 分组后过滤条件 ];

Group By的作用:

  • 假设以字段1、字段2进行分组。
  • Select *,返回每一组的第一行数据
  • Select 分组字段, 聚合函数(字段),聚合函数针对每一个分组进行统计,而不是针对全表进行统计

Having的作用:

  • 对Group By分组之后的结果进行条件筛选

  • where和having的区别?

    • 执行时机:where在分组前执行;having在分组后执行

    • 判断条件:where不能对聚合函数进行判断,having可以

    • 执行顺序:where > 聚合函数 > having

示例

# 根据性别分组, 统计男性员工 和 女性员工的数量
select gender, count(*) from emp group by gender;# 根据性别分组 , 统计男性员工 和 女性员工的平均年龄
select gender, avg(age) from emp group by gender;# 查询年龄小于45的员工,并根据工作地址分组,获取员工数量大于等于3的工作地址
select workaddress, count(*) AS address_count from emp where age < 45 group by workaddress having address_count >= 3;  # AS可省略# 示例:返回每个role角色下,所有人的薪水总和,然后根据role分组,筛选总和大于1500的结果
select role, sum(salary) as totle from emp group by role having totle > 1500;

关键字 | 用在Order By后面

排序内容:表字段

SELECT 字段列表 FROM 表名 ORDER BY 字段1 [ASC|DESC] , 字段2 [ASC|DESC];
排序
ASC升序,默认的排序方式
DESC降序

多字段排序的规则:当第一个字段一样时候,才会根据第二个字段排序,后续字段排序同理

示例

# 根据年龄对公司的员工进行升序排序 , 年龄相同 , 再按照入职时间进行降序排序
select * from emp order by age, entrydate desc;

关键字 | 用在Limit后面

分页内容:索引、记录数

SELECT 字段列表 FROM 表名 LIMIT 起始索引, 查询记录数;
  • 分页查询算是数据库的方言,不同的数据库有不同的实现。MySQL中使用的是LIMIT
  • 起始索引、待查询页码、每页记录数之间的关系:
起始索引 = (待查询的页码-1)* 每页记录数

多表查询

联合查询、子查询【重要】

参考文章:https://blog.csdn.net/qq_45445505/article/details/137051199

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

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

相关文章

【MySQL精通之路】InnoDB(18)-备份与恢复

目录 1.InnoDB备份 1.1 热备份 1.2 冷备份 1.3 使用mysqldump的逻辑备份 2.InnoDB恢复 2.1 实时恢复 2.2 从数据损坏或磁盘故障中恢复 2.3 InnoDB崩溃恢复 2.3.1 表空间发现 2.3.2 Redolog应用程序 2.3.3 未完成交易的回滚 2.3.4 更改缓冲区合并 2.3.5 清除 2.4 …

GPT-3可以用于哪些行业

GPT-3的应用已经渗透到了多个行业&#xff0c;其广泛的用途和强大的能力使得它成为了各行各业的重要工具。以下是一些GPT-3的主要应用领域&#xff1a; 在线客服&#xff1a;GPT-3可以理解和生成人类语言&#xff0c;使得它能够更好地满足用户的需求。它可以根据用户的提问实时…

数据湖对比(hudi,iceberg,paimon,Delta)

Delta 数据湖 Delta 更新原理 update/delete/merge 实现均基于spark的join功能。 定位 做基于spark做流批一体的数据处理 缺点 本质为批处理。强绑定spark引擎。整体性能相较其他数据湖比较差 hudi 数据湖 hudi 更新原理 通过hudi自定义的主键索引hoodiekey 布隆过…

Ali-Sentinel-集群流控

归档 GitHub: Ali-Sentinel-集群流控 测试 参考&#xff1a;热点流控-测试 新建 ClusterDemoApplication2 public class ClusterDemoApplication2 {public static void main(String[] args) {System.setProperty("csp.sentinel.dashboard.server", "127.0.…

华为手机卡顿(仅针对于部分人来说,我也不清楚是否真的有用)

关机&#xff01; 之前一段时间手机变得特别卡顿&#xff0c;然后网上搜了一堆教程一点用没有&#xff0c;结果因为昨天下午在考试所以把手机关机了一个多小时&#xff0c;再打开之后手机就变得很流畅&#xff0c;原因不详&#xff0c;但效果显著&#xff0c;如有需要可尝试一…

docker使用PostgreSQL容器

要执行 db/migrations/ 目录下的多个 SQL 文件以迁移数据库&#xff0c;可以按照以下步骤进行&#xff1a; 1 确认 PostgreSQL 容器正在运行&#xff1a; 确认你已经启动了 PostgreSQL 容器并且它在运行&#xff1a; docker ps -a2 确认容器 beaconchain 是 Up 状态。 将 SQ…

docker 挂载运行镜像

文章目录 前言docker 挂载运行镜像1. 作用2. 命令3. 测试 前言 如果您觉得有用的话&#xff0c;记得给博主点个赞&#xff0c;评论&#xff0c;收藏一键三连啊&#xff0c;写作不易啊^ _ ^。   而且听说点赞的人每天的运气都不会太差&#xff0c;实在白嫖的话&#xff0c;那欢…

软考 软件设计师 场景分析题 速成篇

文章目录 试题一&#xff1a;数据流图&#x1f496; 基本图形元素1. 外部实体2. 数据存储3. 加工4. 数据流 &#x1f4da; 例题&#xff08;1&#xff09;实体名称&#xff08;2&#xff09;数据存储名称&#xff08;3&#xff09;数据流① 父子图平衡② 加工有输入有输出④ 数…

在Windows10中重命名文件和文件夹的6种方法,有你熟悉和不熟悉的

序言 你可以通过多种方式在Windows 10上重命名文件。如果每次你想更改文件名时仍右键单击并选择“重命名”,那么我们有一些技巧可以加快更改速度。 使用文件资源管理器重命名文件和文件夹 Windows 10的文件资源管理器是一个功能强大的工具。你知道吗,有四种不同的方法可以…

电商API接口接入电商平台抓取热门商品推荐上货api接入示例

电商API接口接入电商平台抓取热门商品推荐上货的示例代码如下&#xff1a; # coding:utf-8 """ Compatible for python2.x and python3.x requirement: pip install requests """ from __future__ import print_function import requests # 请求…

CSS【常用CSS样式、盒子模型、定位、浮动 、扩展样式】--学习JavaEE的day46

day46 CSS 练习 页面实现&#xff1a; 分析&#xff1a; 未优化&#xff1a; 优化&#xff1a; 参考代码&#xff1a;&#xff08;包含样式优化–选择器CSS属性&#xff09; 先写上table方便实现&#xff0c;之后再去除即可 name没有服务器&#xff0c;可暂时不写 <!…

智能驾驶核心伪代码

智能驾驶是一个复杂且广泛的领域&#xff0c;涉及多个子系统和组件&#xff0c;包括但不限于感知、定位、决策规划、控制等。由于智能驾驶系统的复杂性&#xff0c;不可能简单地提供一个通用的代码片段。然而&#xff0c;我可以提供一个简单的示例&#xff0c;展示如何使用一些…

mysql - explain执行计划

explain执行计划 explain是mysql中一关键字&#xff0c;用于查看执行计划, 模拟执行器执行sql查询语句, 从而分析sql语句或表结构的性能瓶颈或优化方向。 explain用途 可分析得到以下信息&#xff1a; 表读取顺序数据读取操作的操作类型可使用的索引实际使用的索引表间引用…

微软开源多模态大模型Phi-3-vision,微调实战来了

节前&#xff0c;我们组织了一场算法岗技术&面试讨论会&#xff0c;邀请了一些互联网大厂朋友、今年参加社招和校招面试的同学。 针对大模型& AIGC 技术趋势、大模型& AIGC 落地项目经验分享、新手如何入门算法岗、该如何准备面试攻略、面试常考点等热门话题进行了…

零部件销售|基于SSM+vue的轻型卡车零部件销售平台系统的设计与实现(源码+数据库+文档)

轻型卡车零部件销售平台 目录 基于SSM&#xff0b;vue的轻型卡车零部件销售平台系统的设计与实现 一、前言 二、系统设计 三、系统功能设计 1 系统功能模块 2 管理员功能模块 3 用户后台功能模块 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题…

stream( ).collect ( Collectors.groupingBy ( ) ) 的用法

文章目录 第一种解释1、基本用法2、指定值收集器3、多级分组4、常见应用场景和用处 第二种解释1、基本语法2、示例3、更复杂的用法 第一种解释 Collectors.groupingBy 是 Java 8 引入的 Stream API 中的一个收集器&#xff08;Collector&#xff09;&#xff0c;它用于将流&am…

Golang:flosch/pongo2是一个类似Django模板语法的模板引擎

模板引擎可以用来做一些字符串渲染拼接工作&#xff0c;避免在代码中出现大量的字符串拼接 文档 https://www.schlachter.tech/solutions/pongo2-template-engine/https://github.com/flosch/pongo2 安装 go get -u github.com/flosch/pongo2/v6使用示例 1、字符串模板 p…

【笔记】Qt 按钮控件介绍(QPushButton,QCheckBox,QToolButton)

文章目录 QAbstractButton 抽象类(父类)QAbstractButton 类中的属性QAbstractButton 类中的函数QAbstractButton 类中的信号QAbstractButton 类中的槽 QPushButton 类(标准按钮)QPushButton 类中的属性QPushButton 类中的函数、槽 QCheckBox 类(复选按钮)QCheckBox 类的属性QCh…

Html中,想利用JS引入Jquery文件;$.getScript()无效

在使用$.getScript()时&#xff0c;会爆出错误&#xff1a;ReferenceError: $ is not defined &#xff0c;这是因为没有在JS文件前引入Jquery。 那么可以这样使用&#xff1a;(这个方式只适合放在页面代码最后面使用) (function () {var script window.document.createEleme…

Kettle简介

一、Kettle简介 Kettle是一个开源的ETL&#xff08;Extract-Transform-Load的缩写&#xff0c;即数据抽取、转换、装载的过程&#xff09;项目。 项目名很有意思&#xff0c;水壶。按项目负责人Matt的说法&#xff1a;把各种数据放到一个壶里&#xff0c;然后呢&#xff0c;以…