MySQL-DQL-案例
发布人:shili8
发布时间:2025-01-13 01:36
阅读次数:0
**MySQL DQL 案例**
DQL(Data Query Language)是 MySQL 中用于从数据库中检索数据的语言。它提供了各种命令来查询、过滤和排序数据。在本文中,我们将通过实践案例来展示 DQL 的使用。
### 案例1:简单 SELECT假设我们有一个名为 `students` 的表,包含学生信息:
| id | name | age |
| --- | --- | --- |
|1 | 张三 |18 |
|2 | 李四 |19 |
|3 | 王五 |17 |
我们想从这个表中获取所有学生的姓名和年龄。
sqlSELECT name, age FROM students;
结果:
| name | age |
| --- | --- |
| 张三 |18 |
| 李四 |19 |
| 王五 |17 |
### 案例2:过滤数据我们想从 `students` 表中获取年龄大于18 的学生。
sqlSELECT * FROM students WHERE age >18;
结果:
| id | name | age |
| --- | --- | --- |
|2 | 李四 |19 |
### 案例3:排序数据我们想从 `students` 表中获取所有学生的姓名和年龄,按年龄降序排列。
sqlSELECT name, age FROM students ORDER BY age DESC;
结果:
| name | age |
| --- | --- |
| 李四 |19 |
| 张三 |18 |
| 王五 |17 |
### 案例4:分组和聚合我们想从 `students` 表中获取每个年龄段的学生人数。
sqlSELECT age, COUNT(*) AS student_count FROM students GROUP BY age;
结果:
| age | student_count |
| --- | --- |
|17 |1 |
|18 |1 |
|19 |1 |
### 案例5:连接表假设我们有两个表 `students` 和 `scores`,分别包含学生信息和成绩信息:
**students**
| id | name | age |
| --- | --- | --- |
|1 | 张三 |18 |
|2 | 李四 |19 |
|3 | 王五 |17 |
**scores**
| id | student_id | score |
| --- | --- | --- |
|1 |1 |90 |
|2 |1 |80 |
|3 |2 |95 |
我们想从这两个表中获取学生的姓名和成绩。
sqlSELECT s.name, sc.score FROM students s JOIN scores sc ON s.id = sc.student_id;
结果:
| name | score |
| --- | --- |
| 张三 |90 |
| 张三 |80 |
| 李四 |95 |
### 案例6:子查询我们想从 `students` 表中获取年龄大于平均年龄的学生。
sqlSELECT * FROM students WHERE age > (SELECT AVG(age) FROM students);
结果:
| id | name | age |
| --- | --- | --- |
|2 | 李四 |19 |
### 总结在本文中,我们通过实践案例展示了 MySQL DQL 的使用。从简单的 SELECT 到过滤、排序、分组和聚合,以及连接表和子查询,DQL 提供了各种命令来帮助我们从数据库中检索数据。