多表查询例题
发布人:shili8
发布时间:2025-01-12 11:48
阅读次数:0
**多表查询例题**
在实际的数据库应用中,往往需要从多个表中提取数据。这种情况下,我们就需要使用多表查询来实现。这一节将介绍如何使用多表查询来处理不同类型的数据。
###例题1:学生信息和成绩假设我们有两个表:`student` 和 `score`,分别存储学生信息和成绩数据。
**student 表结构**
| 字段名 | 类型 | 描述 |
| --- | --- | --- |
| id | int | 学生ID |
| name | varchar(20) | 学生姓名 |
| age | int | 学生年龄 |
**score 表结构**
| 字段名 | 类型 | 描述 |
| --- | --- | --- |
| id | int | 成绩ID |
| student_id | int | 学生ID(外键) |
| subject | varchar(20) | 科目名称 |
| score | int | 成绩 |
我们需要从这两个表中提取学生姓名和对应的最高分数。
###代码示例
sqlSELECT s.name, MAX(sc.score) AS max_scoreFROM student sJOIN score sc ON s.id = sc.student_idGROUP BY s.name;
**注释**
* `JOIN` 关键字用于连接两个表。
* `ON` 子句指定了连接条件,即学生ID相等。
* `GROUP BY`语句用于分组数据,根据学生姓名进行分组。
* `MAX` 函数用于计算每个学生的最高分数。
###例题2:订单信息和商品信息假设我们有两个表:`order` 和 `product`,分别存储订单信息和商品信息。
**order 表结构**
| 字段名 | 类型 | 描述 |
| --- | --- | --- |
| id | int | 订单ID |
| customer_id | int | 客户ID(外键) |
| order_date | date | 订单日期 |
**product 表结构**
| 字段名 | 类型 | 描述 |
| --- | --- | --- |
| id | int | 商品ID |
| product_name | varchar(20) | 商品名称 |
| price | decimal(10,2) | 单价 |
我们需要从这两个表中提取订单日期和对应的商品名称。
###代码示例
sqlSELECT o.order_date, p.product_nameFROM order oJOIN product p ON o.id = p.id;
**注释**
* `JOIN` 关键字用于连接两个表。
* `ON` 子句指定了连接条件,即订单ID相等。
###例题3:员工信息和部门信息假设我们有两个表:`employee` 和 `department`,分别存储员工信息和部门信息。
**employee 表结构**
| 字段名 | 类型 | 描述 |
| --- | --- | --- |
| id | int | 员工ID |
| name | varchar(20) | 员工姓名 |
| department_id | int | 部门ID(外键) |
**department 表结构**
| 字段名 | 类型 | 描述 |
| --- | --- | --- |
| id | int | 部门ID |
| department_name | varchar(20) | 部门名称 |
我们需要从这两个表中提取员工姓名和对应的部门名称。
###代码示例
sqlSELECT e.name, d.department_nameFROM employee eJOIN department d ON e.department_id = d.id;
**注释**
* `JOIN` 关键字用于连接两个表。
* `ON` 子句指定了连接条件,即部门ID相等。
以上就是多表查询的例题和代码示例。通过这些例子,我们可以看到多表查询在实际应用中的重要性和灵活性。