MySQL DQL(数据查询语言)深度解析与实践

本文涉及的产品
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
RDS DuckDB + QuickBI 企业套餐,8核32GB + QuickBI 专业版
RDS MySQL DuckDB 分析主实例,基础系列 4核8GB
简介: MySQL DQL(数据查询语言)深度解析与实践

MySQL DQL(数据查询语言)深度解析与实践

数据查询语言(DQL,Data Query Language)是SQL中用于检索数据库中数据的部分,最核心的命令便是SELECT语句。MySQL作为广泛应用的关系型数据库,其DQL能力非常强大,支持从简单查询到复杂联接、子查询等多种数据检索方式。本文将详细介绍MySQL中的DQL语法,通过实例代码帮助你掌握数据查询的艺术。

一、基础查询

单表查询

SELECT column1, column2
FROM table_name;

例如,从employees表中选取所有员工的姓名(name)和职位(title):

SELECT name, title
FROM employees;

通配符 *

星号(*)可以用来选择表中的所有列:

SELECT *
FROM employees;

二、条件过滤(WHERE子句)

使用WHERE子句对查询结果进行筛选:

SELECT column1, column2
FROM table_name
WHERE condition;

假设我们要找到薪资(salary)超过50000的员工:

SELECT name, salary
FROM employees
WHERE salary > 50000;

三、排序(ORDER BY)

ORDER BY用于对结果集进行排序:

SELECT column1, column2
FROM table_name
ORDER BY column_name [ASC|DESC];

按照员工薪资降序排序:

SELECT name, salary
FROM employees
ORDER BY salary DESC;

四、分组(GROUP BY)与聚合函数

GROUP BY用于将结果集按照一个或多个列进行分组,配合聚合函数(如COUNT(), SUM(), AVG()等)使用:

SELECT column, AGGREGATE_FUNCTION(column)
FROM table_name
GROUP BY column;

统计各部门的员工人数:

SELECT department, COUNT(*)
FROM employees
GROUP BY department;

五、HAVING子句

HAVING子句用于对GROUP BY后的结果进行过滤:

SELECT column, AGGREGATE_FUNCTION(column)
FROM table_name
GROUP BY column
HAVING condition;

找出平均薪资超过部门平均值的部门:

SELECT department, AVG(salary) AS avg_salary
FROM employees
GROUP BY department
HAVING avg_salary > (SELECT AVG(salary) FROM employees);

六、联接查询(JOIN)

联接是将多个表中的行基于某些匹配条件组合起来的过程。MySQL支持多种联接类型,如内联接(INNER JOIN)、左联接(LEFT JOIN)等。

内联接

SELECT table1.column, table2.column
FROM table1
INNER JOIN table2
ON table1.matching_column = table2.matching_column;

查询员工姓名和他们所在部门的名称:

SELECT employees.name, departments.department_name
FROM employees
INNER JOIN departments
ON employees.department_id = departments.department_id;

左联接

SELECT table1.column, table2.column
FROM table1
LEFT JOIN table2
ON table1.matching_column = table2.matching_column;

展示所有员工及其对应的部门,即使某些员工未分配部门:

SELECT employees.name, departments.department_name
FROM employees
LEFT JOIN departments
ON employees.department_id = departments.department_id;

七、子查询

子查询是嵌套在其他查询中的查询,可以作为条件或数据来源。

SELECT column
FROM table_name
WHERE column IN (SELECT column FROM another_table WHERE condition);

找出薪资高于公司平均薪资的员工:

SELECT name, salary
FROM employees
WHERE salary > (SELECT AVG(salary) FROM employees);
相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
10月前
|
存储 SQL 关系型数据库
MySQL中binlog、redolog与undolog的不同之处解析
每个都扮演回答回溯与错误修正机构角色: BinLog像历史记载员详细记载每件大大小小事件; RedoLog则像紧急救援队伍遇见突發情況追踪最后活动轨迹尽力补救; UndoLog就类似时间机器可倒带历史让一切归位原始样貌同时兼具平行宇宙观察能让多人同时看见各自期望看见历程而互不干扰.
559 9
|
11月前
|
存储 SQL 关系型数据库
MySQL 核心知识与索引优化全解析
本文系统梳理了 MySQL 的核心知识与索引优化策略。在基础概念部分,阐述了 char 与 varchar 在存储方式和性能上的差异,以及事务的 ACID 特性、并发事务问题及对应的隔离级别(MySQL 默认 REPEATABLE READ)。 索引基础部分,详解了 InnoDB 默认的 B+tree 索引结构(多路平衡树、叶子节点存数据、双向链表支持区间查询),区分了聚簇索引(数据与索引共存,唯一)和二级索引(数据与索引分离,多个),解释了回表查询的概念及优化方法,并分析了 B+tree 作为索引结构的优势(树高低、效率稳、支持区间查询)。 索引优化部分,列出了索引创建的六大原则
286 2
|
11月前
|
存储 SQL 关系型数据库
MySQL 核心知识与性能优化全解析
我整理的这份内容涵盖了 MySQL 诸多核心知识。包括查询语句的书写与执行顺序,多表查询的连接方式及内、外连接的区别。还讲了 CHAR 和 VARCHAR 的差异,索引的类型、底层结构、聚簇与非聚簇之分,以及回表查询、覆盖索引、左前缀原则和索引失效情形,还有建索引的取舍。对比了 MyISAM 和 InnoDB 存储引擎的不同,提及性能优化的多方面方法,以及超大分页处理、慢查询定位与分析等,最后提到了锁和分库分表可参考相关资料。
227 0
|
关系型数据库 MySQL
MySQL字符串拼接方法全解析
本文介绍了四种常用的字符串处理函数及其用法。方法一:CONCAT,用于基础拼接,参数含NULL时返回NULL;方法二:CONCAT_WS,带分隔符拼接,自动忽略NULL值;方法三:GROUP_CONCAT,适用于分组拼接,支持去重、排序和自定义分隔符;方法四:算术运算符拼接,仅适用于数值类型,字符串会尝试转为数值处理。通过示例展示了各函数的特点与应用场景。
|
SQL 运维 关系型数据库
MySQL Binlog 日志查看方法及查看内容解析
本文介绍了 MySQL 的 Binlog(二进制日志)功能及其使用方法。Binlog 记录了数据库的所有数据变更操作,如 INSERT、UPDATE 和 DELETE,对数据恢复、主从复制和审计至关重要。文章详细说明了如何开启 Binlog 功能、查看当前日志文件及内容,并解析了常见的事件类型,包括 Format_desc、Query、Table_map、Write_rows、Update_rows 和 Delete_rows 等,帮助用户掌握数据库变化历史,提升维护和排障能力。
|
分布式计算 关系型数据库 MySQL
E-Mapreduce如何处理RDS的数据
目前网站的一些业务数据存在了数据库中,这些数据往往需要做进一步的分析,如:需要跟一些日志数据关联分析,或者需要进行一些如机器学习的分析。在阿里云上,目前E-Mapreduce可以满足这类进一步分析的需求。
5237 0
|
9月前
|
缓存 关系型数据库 BI
使用MYSQL Report分析数据库性能(下)
使用MYSQL Report分析数据库性能
548 158
|
9月前
|
关系型数据库 MySQL 数据库
自建数据库如何迁移至RDS MySQL实例
数据库迁移是一项复杂且耗时的工程,需考虑数据安全、完整性及业务中断影响。使用阿里云数据传输服务DTS,可快速、平滑完成迁移任务,将应用停机时间降至分钟级。您还可通过全量备份自建数据库并恢复至RDS MySQL实例,实现间接迁移上云。
|
9月前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS费用价格:MySQL、SQL Server、PostgreSQL和MariaDB引擎收费标准
阿里云RDS数据库支持MySQL、SQL Server、PostgreSQL、MariaDB,多种引擎优惠上线!MySQL倚天版88元/年,SQL Server 2核4G仅299元/年,PostgreSQL 227元/年起。高可用、可弹性伸缩,安全稳定。详情见官网活动页。
1444 152
|
9月前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS支持MySQL、SQL Server、PostgreSQL和MariaDB引擎
阿里云数据库RDS支持MySQL、SQL Server、PostgreSQL和MariaDB引擎,提供高性价比、稳定安全的云数据库服务,适用于多种行业与业务场景。
1056 156

推荐镜像

更多