【MySQL】DQL

DQL(数据查询语言)用于在MySQL数据库中执行数据查询操作。它主要包括SELECT语句,用于从表中检索数据。

0. 基本语法

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

image.png

1). 查询多个字段

SELECT 字段1,字段2... FROM 表名:

2). 字段设置别名

SELECT 字段1 [ AS 别名1 ] , 字段2 [ AS 别名2 ] ... FROM 表名;
SELECT 字段1 [ 别名1 ] , 字段2 [ 别名2 ] ... FROM 表名;

3). 去除重复记录

SELECT DISTINCT 字段列表 FROM 表名;

1. 条件查询

DQL的主要语句是SELECT语句,它允许我们在数据库表中进行复杂的查询操作。SELECT语句的基本语法如下:

SELECT column1, column2, ...
FROM table_name
WHERE conditions
  • SELECT关键字用于指定要返回的列。
  • FROM关键字用于指定要查询的表。
  • WHERE关键字用于指定查询条件,可选。

示例:从名为users的表中选择所有年龄大于等于18岁的用户的名字和年龄:

SELECT name, age
FROM users
WHERE age >= 18;

image.png

image.png

2. 聚合查询

在MySQL数据库中,DQL(数据查询语言)提供了聚合函数,可以在查询中对数据进行聚合操作。聚合查询用于执行诸如计算总和、平均值、最大值、最小值等统计数据的操作。以下是DQL中常用的聚合函数以及示例:

  1. COUNT:用于计算匹配条件的行数。
    示例:统计名为users的表中的记录数。

    SELECT COUNT(*) FROM users;
    
  2. SUM:用于计算数值列的总和。
    示例:计算名为products的表中价格列的总和。

    SELECT SUM(price) FROM products;
    
  3. AVG:用于计算数值列的平均值。
    示例:计算名为sales的表中销售额的平均值。

    SELECT AVG(sales) FROM sales;
    
  4. MAX:用于找出数值列的最大值。
    示例:找出名为scores的表中分数列的最高分。

    SELECT MAX(score) FROM scores;
    
  5. MIN:用于找出数值列的最小值。
    示例:找出名为temperatures的表中温度列的最低温度。

    SELECT MIN(temperature) FROM temperatures;
    

需要注意的是,聚合函数通常与GROUP BY子句一起使用,以便对分组后的数据进行聚合计算。GROUP BY子句根据指定的列对结果进行分组。

示例:计算名为products的表中每个分类的总销售额。

SELECT category, SUM(sales) FROM products GROUP BY category;

上述是一些常见的聚合函数,MySQL还提供了其他函数和扩展功能,例如DISTINCT(用于查找唯一的值),HAVING(用于过滤分组后的数据)等等。根据实际需求,可以在查询中使用适当的聚合函数来满足特定的统计需求。

3. 分组查询

在MySQL数据库中,DQL(数据查询语言)提供了分组查询的功能,用于根据指定的列对查询结果进行分组。分组查询常与聚合函数一起使用,以便对每个分组进行聚合计算。以下是DQL中分组查询的详细讲解和示例:

分组查询使用 GROUP BY 子句来指定要根据哪些列进行分组。在分组查询中,可以选择一个或多个列作为分组依据。请注意,除了被分组的列,查询的 SELECT 语句中通常还包括聚合函数的使用。

分组查询的基本语法如下:

SELECT column1, column2, ..., aggregate_function(column)
FROM table_name
WHERE conditions
GROUP BY column1, column2, ...

其中 column1, column2, ... 是用于分组的列名, aggregate_function(column) 是应用于每个分组的聚合函数,例如 COUNT(column)、SUM(column)、AVG(column) 等。

示例1:从名为 orders 的表中按客户分组计算每个客户的订单总数。

SELECT customer, COUNT(*) as total_orders
FROM orders
GROUP BY customer;

示例2:从名为 products 的表中按分类分组计算每个分类的产品数量。

SELECT category, COUNT(*) as total_products
FROM products
GROUP BY category;

示例3:从名为 sales 的表中按年份和月份分组计算每个月的总销售额。

SELECT YEAR(sales_date) as year, MONTH(sales_date) as month, SUM(amount) as total_sales
FROM sales
GROUP BY YEAR(sales_date), MONTH(sales_date);

需要注意的是,分组查询中除了 GROUP BY 子句外,还可以使用 HAVING 子句来对分组后的数据进行筛选。 HAVING 子句与 WHERE 子句的功能类似,但是 HAVING 用于过滤分组后的数据,可以使用聚合函数和分组列进行条件筛选。

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

示例4:从名为 products 的表中按分类分组计算每个分类的平均价格,并仅显示平均价格大于等于 100 的分类。

SELECT category, AVG(price) as avg_price
FROM products
GROUP BY category
HAVING avg_price >= 100;

4. 排序查询

在MySQL数据库中,DQL(数据查询语言)提供了排序查询的功能,可以对查询结果按照指定的列进行排序。排序查询可以按照升序(默认)或降序的方式排列结果。以下是DQL中排序查询的详细讲解和示例:

排序查询使用 ORDER BY 子句来指定要按照哪个列进行排序。可以选择一个或多个列进行排序,对于多个列,按照列的顺序进行排序。默认情况下,排序是按照升序进行的(从小到大)。如果需要按照降序进行排序(从大到小),可以通过在排序列名后面加上 DESC 关键字来实现。

排序查询的基本语法如下:

SELECT column1, column2, ...
FROM table_name
WHERE conditions
ORDER BY column1 [ASC|DESC], column2 [ASC|DESC], ...

其中 column1, column2, ... 是要排序的列名,可以选择一个或多个列进行排序。 ASC 是升序排序(默认), DESC 是降序排序。

示例1:从名为 employees 的表中按照薪水进行升序排序。

SELECT name, salary
FROM employees
ORDER BY salary ASC;

示例2:从名为 products 的表中按照价格进行降序排序,如果价格相同,则按照产品名称进行升序排序。

SELECT product_name, price
FROM products
ORDER BY price DESC, product_name ASC;

需要注意的是,可以使用 ORDER BY 子句对多个列进行排序。在多列排序中,按照列在 ORDER BY 子句中的顺序进行排序。如果第一个列的值相同,则按照第二个列进行排序,依此类推。

示例3:从名为 sales 的表中按照销售日期和销售金额进行排序。

SELECT sale_date, amount
FROM sales
ORDER BY sale_date DESC, amount DESC;

在排序查询中,还可以使用表达式进行排序,也可以使用函数对排序列进行处理。此外,还可以使用位置索引来指定排序的列。

示例4:从名为 customers 的表中按照合并姓和名进行排序。

SELECT CONCAT(last_name, ' ', first_name) as full_name, age
FROM customers
ORDER BY 1; -- 使用位置索引 1 表示第一个列

5. 分页查询

在MySQL数据库中,DQL(数据查询语言)提供了分页查询的功能,可以限制查询结果的数量,以便显示在页面上,并允许用户浏览多个结果页。分页查询通常与排序查询一起使用,以确保分页结果的一致性。以下是DQL中分页查询的详细讲解和示例:

分页查询使用 LIMIT 子句来限制查询结果的数量,并使用 OFFSET 子句来指定要跳过的行数。假设每页显示的记录数量为 n,要显示第 k 页的结果,偏移量应为 (k-1) * n。

分页查询的基本语法如下:

SELECT column1, column2, ...
FROM table_name
WHERE conditions
ORDER BY column1, column2, ...
LIMIT n
OFFSET offset;

其中 column1, column2, ... 是要查询的列名,可以选择一个或多个列进行查询。 n 是每页显示的记录数量, offset 是要跳过的行数。

示例1:从名为 employees 的表中查询前10条记录。

SELECT name, salary
FROM employees
LIMIT 10;

示例2:从名为 products 的表中查询第3页的记录,每页显示5条记录。

SELECT product_name, price
FROM products
ORDER BY product_name
LIMIT 5
OFFSET 10;

需要注意的是,LIMIT 子句接受两个参数,可以只提供一个参数。如果只提供一个参数,则表示要返回的记录数量。

示例3:从名为 sales 的表中查询最近的5条记录。

SELECT sale_date, amount
FROM sales
ORDER BY sale_date DESC
LIMIT 5;

可以使用变量或表达式来指定 LIMITOFFSET 的值,以便根据不同的情况进行分页查询。

示例4:从名为 customers 的表中查询根据用户输入动态指定的页码和记录数量。

SET @page = 2; -- 用户输入的页码
SET @per_page = 10; -- 用户输入的每页记录数量SELECT customer_name, age
FROM customers
ORDER BY customer_name
LIMIT @per_page
OFFSET (@page - 1) * @per_page;

通过合理设置 LIMITOFFSET 的值,可以实现灵活的分页查询,以满足用户对查询结果的需求,并提供友好的界面交互体验。

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

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

相关文章

Dockerfile(1) - FROM 指令详解

FROM 指明当前的镜像基于哪个镜像构建dockerfile 必须以 FROM 开头&#xff0c;除了 ARG 命令可以在 FROM 前面 FROM [--platform<platform>] <image> [AS <name>]FROM [--platform<platform>] <image>[:<tag>] [AS <name>]FROM […

阿里云定价_ECS产品价格_云服务器收费标准 - 阿里云官方活动

2024年最新阿里云服务器租用费用优惠价格表&#xff0c;轻量2核2G3M带宽轻量服务器一年61元&#xff0c;折合5元1个月&#xff0c;新老用户同享99元一年服务器&#xff0c;2核4G5M服务器ECS优惠价199元一年&#xff0c;2核4G4M轻量服务器165元一年&#xff0c;2核4G服务器30元3…

React Switch用法及手写Switch实现

问&#xff1a;如果注册的路由特别多&#xff0c;找到一个匹配项以后还会一直往下找&#xff0c;我们想让react找到一个匹配项以后不再继续了&#xff0c;怎么处理&#xff1f;答&#xff1a;<Switch>独特之处在于它只绘制子元素中第一个匹配的路由元素。 如果没有<Sw…

python:xml.etree.ElementTree 读 Freeplane.mm文件,生成测试案例.csv文件

Freeplane 是一款基于 Java 的开源软件&#xff0c;继承 Freemind 的思维导图工具软件&#xff0c;它扩展了知识管理功能&#xff0c;在 Freemind 上增加了一些额外的功能&#xff0c;比如数学公式、节点属性面板等。 强大的节点功能&#xff0c;不仅仅节点的种类很多&#xf…

LTD264次升级 | 对接AsiaPay • 人民币买外币商品 •知识付费订单可关闭 • 专栏支持VIP免支付购买

​ 1、对接AsiaPay第三方支付平台&#xff0c;支持人民币买外币商品&#xff1b; 2、知识付费购买优化 3、账号绑定的微信号可解除绑定&#xff1b; 4、其他已知问题修复与优化&#xff1b; 01 商城 1) 新增海外跨境支付系统AsiaPay 在本次升级中&#xff0c;商城支付系统新增…

面试笔记系列四之SpringBoot+SpringCloud基础知识点整理及常见面试题

什么是 Spring Boot&#xff1f; Spring Boot 是 Spring 开源组织下的子项目&#xff0c;是 Spring 组件一站式解决方案&#xff0c;主要是简化了使用 Spring 的难度&#xff0c;简省了繁重的配置&#xff0c;提供了各种启动器&#xff0c;开发者能快速上手。 Spring Boot 有哪…

WEB服务器-Tomcat(黑马学习笔记)

简介 服务器概述 服务器硬件 ● 指的也是计算机&#xff0c;只不过服务器要比我们日常使用的计算机大很多。 服务器&#xff0c;也称伺服器。是提供计算服务的设备。由于服务器需要响应服务请求&#xff0c;并进行处理&#xff0c;因此一般来说服务器应具备承担服务并且保障…

ubuntu+QT+ OpenGL环境搭建和绘图

一&#xff0c;安装OpenGL库 安装OpenGL依赖项&#xff1a;运行sudo apt install libgl1-mesa-glx命令安装OpenGL所需的一些依赖项。 安装OpenGL头文件&#xff1a;运行sudo apt install libgl1-mesa-dev命令来安装OpenGL的头文件。 安装GLUT库&#xff1a;GLUT&#xff08;Ope…

Ubuntu18.04 系统上配置并运行SuperGluePretrainedNetwork(仅使用CPU)

SuperGlue是Magic Leap在CVPR 2020上展示的研究项目&#xff0c;它是一个图神经网络&#xff08;Graph Neural Network&#xff09;和最优匹配层&#xff08;Optimal Matching layer&#xff09;的结合&#xff0c;训练用于对两组稀疏图像特征进行匹配。这个项目提供了PyTorch代…

Nginx服务优化与防盗链配置

一.优化Nginx的相关措施 1.优化网页访问速度 &#xff08;1&#xff09;在可重启状态下&#xff0c;为避免同一客户端长时间占用连接&#xff0c;造成资源浪费&#xff0c;可以在http段设置连接超时参数keepalived_timeout实现控制连接访问时间 &#xff08;2&#xff09;当…

【架构笔记1】剃刀思维-如无必要,勿增实体

欢迎来到文思源想的架构空间&#xff0c;前段时间博主做了一个工作经历复盘&#xff0c;10年开发路&#xff0c;走了不少弯路&#xff0c;也算积累了不少软件开发、架构设计的经验和心得&#xff0c;确实有必要好好盘一盘&#xff0c;作为个人的总结&#xff0c;同时也留给有缘…

哪个牌子的电视盒子好用?2024超强电视盒子排名

最近很多朋友问我电视盒子的相关问题&#xff0c;就目前来说&#xff0c;电视盒子的地位依然是不可取代的。我近来要发布的测评内容是哪个牌子的电视盒子好用&#xff0c;耗时两周进行对比后整理了电视盒子排名&#xff0c;看看哪些电视盒子是最值得入手的吧。 NO.1——泰捷新品…