当前位置:实例文章 » 其他实例» [文章]Mysql DQL 学习记录

Mysql DQL 学习记录

发布人:shili8 发布时间:2024-12-30 01:57 阅读次数:0

**MySQL DQL 学习记录**

**前言**

DQL(Data Query Language)是 MySQL 中用于从数据库中检索数据的语言。它提供了各种命令来查询、过滤和排序数据。在本文中,我们将学习 MySQL DQL 的基本概念、常用命令以及实践示例。

**1. SELECT 命令**

SELECT 命令用于从表中检索数据。它是 DQL 中最常用的命令。

sqlSELECT column_name(s)
FROM table_name;


* `column_name(s)`:指定要检索的列名,可以使用逗号分隔多个列名。
* `table_name`:指定要从中检索数据的表名。

示例:

sqlSELECT name, ageFROM users;


上述命令将从 `users` 表中检索 `name` 和 `age` 列的值。

**2. WHERE 子句**

WHERE 子句用于过滤满足特定条件的数据。

sqlSELECT column_name(s)
FROM table_nameWHERE condition;


* `condition`:指定要过滤的条件,可以使用逻辑运算符(AND、OR、NOT)和比较运算符(=、<>、<、>、<=、>=)。

示例:

sqlSELECT name, ageFROM usersWHERE age >18;


上述命令将从 `users` 表中检索年龄大于18 的用户信息。

**3. ORDER BY 子句**

ORDER BY 子句用于对检索的数据进行排序。

sqlSELECT column_name(s)
FROM table_nameORDER BY column_name(s) ASC|DESC;


* `column_name(s)`:指定要根据哪个列进行排序。
* `ASC`(升序)或 `DESC`(降序):指定排序的顺序。

示例:

sqlSELECT name, ageFROM usersORDER BY age DESC;


上述命令将从 `users` 表中检索用户信息,并按年龄降序排列。

**4. LIMIT 子句**

LIMIT 子句用于限制返回的数据行数。

sqlSELECT column_name(s)
FROM table_nameLIMIT number;


* `number`:指定要返回的数据行数。

示例:

sqlSELECT name, ageFROM usersLIMIT5;


上述命令将从 `users` 表中检索前五条用户信息。

**5. GROUP BY 子句**

GROUP BY 子句用于对检索的数据进行分组。

sqlSELECT column_name(s)
FROM table_nameGROUP BY column_name(s);


* `column_name(s)`:指定要根据哪个列进行分组。

示例:

sqlSELECT name, COUNT(*)
FROM usersGROUP BY name;


上述命令将从 `users` 表中检索用户信息,并按用户名进行分组,统计每个用户名下的用户数量。

**6. HAVING 子句**

HAVING 子句用于过滤满足特定条件的分组数据。

sqlSELECT column_name(s)
FROM table_nameGROUP BY column_name(s)
HAVING condition;


* `condition`:指定要过滤的条件,可以使用逻辑运算符(AND、OR、NOT)和比较运算符(=、<>、<、>、<=、>=)。

示例:

sqlSELECT name, COUNT(*)
FROM usersGROUP BY nameHAVING COUNT(*) >1;


上述命令将从 `users` 表中检索用户信息,并按用户名进行分组,过滤出每个用户名下有多于一条记录的用户名。

**7. JOIN 子句**

JOIN 子句用于连接两个或多个表。

sqlSELECT column_name(s)
FROM table1, table2WHERE condition;


* `table1` 和 `table2`:指定要连接的表名。
* `condition`:指定要连接的条件,可以使用逻辑运算符(AND、OR、NOT)和比较运算符(=、<>、<、>、<=、>=)。

示例:

sqlSELECT users.name, orders.order_idFROM users, ordersWHERE users.id = orders.user_id;


上述命令将从 `users` 和 `orders` 表中检索用户信息和订单信息,并连接两个表,过滤出每个用户下有相关订单的记录。

**8. UNION 子句**

UNION 子句用于合并两个或多个 SELECT语句的结果集。

sqlSELECT column_name(s)
FROM table1UNIONSELECT column_name(s)
FROM table2;


* `table1` 和 `table2`:指定要合并的表名。
* `column_name(s)`:指定要合并的列名,可以使用逗号分隔多个列名。

示例:

sqlSELECT name, ageFROM usersUNIONSELECT name, ageFROM customers;


上述命令将从 `users` 和 `customers` 表中检索用户信息和客户信息,并合并两个结果集,去除重复记录。

**9. EXISTS 子句**

EXISTS 子句用于检查是否存在满足特定条件的数据。

sqlSELECT column_name(s)
FROM table1WHERE EXISTS (SELECT * FROM table2 WHERE condition);


* `table1` 和 `table2`:指定要检查的表名。
* `condition`:指定要检查的条件,可以使用逻辑运算符(AND、OR、NOT)和比较运算符(=、<>、<、>、<=、>=)。

示例:

sqlSELECT users.nameFROM usersWHERE EXISTS (SELECT * FROM orders WHERE orders.user_id = users.id);


上述命令将从 `users` 表中检索用户信息,并检查每个用户下是否有相关订单,如果存在,则返回该用户的名称。

**10. IN 子句**

IN 子句用于检查一个值是否在指定集合中的任何位置。

sqlSELECT column_name(s)
FROM table1WHERE column_name IN (value1, value2, ...);


* `table1`:指定要检查的表名。
* `column_name`:指定要检查的列名。
* `value1`, `value2`, …:指定要检查的值,可以使用逗号分隔多个值。

示例:

sqlSELECT users.nameFROM usersWHERE age IN (18,25,30);


上述命令将从 `users` 表中检索用户信息,并检查每个用户的年龄是否在指定集合中的任何位置,如果存在,则返回该用户的名称。

**总结**

本文介绍了 MySQL DQL 的基本概念、常用命令以及实践示例。通过学习这些内容,读者可以掌握使用 MySQL 进行数据检索和过滤的能力。

相关标签:学习mysql数据库sql
其他信息

其他资源

Top