MySQL多表查询的案例详解

MySQL多表查询是在一个查询语句中操作多张数据表的查询操作,一般有三种方式:内联结(inner join),左联结(left join)和右联结(right join)。下面是多表查询的详细攻略及示例说明:

1. 内联结(inner join)

内联结可以描述两张或以上数据表除了公用的字段外的交集。语法如下:

SELECT column FROM table1 [INNER] JOIN table2 ON condition;

其中,column表示要查询的列(可以使用多个列,以,隔开),table1table2是要查询的两张数据表,condition表示关联条件,也叫内联结条件。

下面是一个多表内联结查询的示例:

假设我们有两张数据表,一张名为students,包含学生的信息和学号,另一张名为scores,包含学生成绩和学号,它们的结构如下:

students表
id  name    sex  age  class_id
1   Tom     M     18        1
2   Jerry   F     17        1
3   Lily    M     18        2
4   Lucy    F     17        3

scores表
id  student_id  Chinese  Math  English
1     1          90        90      90
2     2          80        80      80
3     3          70        70      70
4     4          60        60      60

现在,我们想查询姓名、性别、年龄、班级和各科成绩。我们可以使用如下的SQL语句:

SELECT students.name, students.sex, students.age, students.class_id, scores.Chinese, scores.Math, scores.English
FROM students
INNER JOIN scores
ON students.id = scores.student_id;

运行结果如下:

name  sex  age  class_id  Chinese  Math  English
Tom   M     18         1        90       90       90
Jerry F     17         1        80       80       80
Lily  M     18         2        70       70       70
Lucy  F     17         3        60       60       60

2. 左联结(left join)

左联结可以描述左边数据表与右边数据表的全部几何,以及左边数据表中符合条件的交集数据。语法如下:

SELECT column FROM table1 LEFT [OUTER] JOIN table2 ON condition;

其中,table1作为左表(左边的表),table2作为右表(右边的表),condition表示左联结条件。

下面是一个多表左联结查询的示例:

假设我们要查询student表中所有记录以及它们的成绩,如果该学生没有成绩,则成绩信息为NULL,我们可以使用如下的SQL语句:

SELECT students.name, students.sex, students.age, students.class_id, scores.Chinese, scores.Math, scores.English
FROM students
LEFT JOIN scores
ON students.id = scores.student_id;

运行结果如下:

name  sex  age  class_id  Chinese  Math  English
Tom   M     18         1        90       90       90
Jerry F     17         1        80       80       80
Lily  M     18         2        70       70       70
Lucy  F     17         3        60       60       60
Tim   F     20         4         NULL   NULL  NULL

3. 右联结(right join)

右联结可以描述右边数据表与左边数据表的全部几何,以及右边数据表中符合条件的交集数据。语法如下:

SELECT column FROM table1 RIGHT [OUTER] JOIN table2 ON condition;

其中,table1作为左表(左边的表),table2作为右表(右边的表),condition表示右联结条件。

下面是一个多表右联结查询的示例:

假设我们要查询有成绩信息的学生和他们的成绩,我们可以使用如下的SQL语句:

SELECT students.name, students.sex, students.age, students.class_id, scores.Chinese, scores.Math, scores.English
FROM students
RIGHT JOIN scores
ON students.id = scores.student_id;

运行结果如下:

name  sex  age  class_id  Chinese  Math  English
Tom   M     18         1        90       90       90
Jerry F     17         1        80       80       80
Lily  M     18         2        70       70       70
Lucy  F     17         3        60       60       60
NULL NULL NULL NULL 85      85    85

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:MySQL多表查询的案例详解 - Python技术站

(0)
上一篇 2023年5月22日
下一篇 2023年5月22日

相关文章

  • sql server 2008 数据库管理系统使用SQL语句创建登录用户步骤详解

    下面我将详细讲解“SQL Server 2008 数据库管理系统使用SQL语句创建登录用户步骤详解”的完整攻略。 一、创建登陆账户的SQL语句格式 在SQL Server 2008中,创建登录账户的SQL语句格式如下: CREATE LOGIN 登录名 WITH PASSWORD = ‘登录密码’, DEFAULT_DATABASE = 默认数据库名, DE…

    database 2023年5月21日
    00
  • 数据库之SQL技巧整理案例

    数据库之SQL技巧整理案例 为什么需要学习SQL技巧 SQL技巧是在进行数据库操作时非常重要的一环,掌握一些常见的技巧有助于提高SQL查询语句的效率,并且可以简化复杂的操作。同时,SQL技巧也可以帮助我们更好地理解和解析数据,从而更好地满足我们的需求。 常用的SQL技巧案例 案例一:使用DISTINCT关键字去重 当我们需要查询某个字段的所有不同值的时候,可…

    database 2023年5月19日
    00
  • SQL 反向变换结果集成一列

    SQL反向转换结果集成一列是指,将原本的行数据合并为一列数据。这个过程需要使用SELECT、CASE WHEN、GROUP BY等语句来完成。下面是两条实例演示: 实例1:将多列数据反向变成一列 假设有下面这个表格: | name | gender | age | |——-|——–|—–| | Alice | F | 28 | | B…

    database 2023年3月27日
    00
  • 在CentOS上MySQL数据库服务器配置方法

    下面是在CentOS上配置MySQL数据库服务器的完整攻略: 配置步骤 安装MySQL数据库服务器。 $ sudo yum install mysql-server 启动MySQL服务并设置开机自启动。 $ sudo systemctl start mysqld $ sudo systemctl enable mysqld 进入MySQL服务器并通过命令设置…

    database 2023年5月22日
    00
  • redis-cluster的实例动态调整内存

    当redis.conf中的最大内存配置为10G的时候,恰好程序已经写满了,但是物理主机是有内存的, 此时可以通过config set xxxx xxxx 来设置实例的内存大小,而不需要重启实例。   获取当前最大内存的大小: config get maxmemory   修改内存大小: config set maxmemory 32212254720   有…

    Redis 2023年4月11日
    00
  • CentOS 下 Redis 2.2 安装配置详解

    一. 关于 Redis Redis是一种高级 key-value 数据库。它跟memcached类似,不过数据可以持久化,而且支持的数据类型很丰富。它在保持键值数据库简单快捷特点的同时,又吸收了部分关系数据库的优点。从而使它的位置处于关系数据库和键值数据库之间。Redis不仅能保存Strings类型的数据,还能保存Lists类型(有序)和Sets类型(无序)…

    Redis 2023年4月11日
    00
  • Jedis连接工具 和 SpringBoot整合Redis

    引用学习:https://space.bilibili.com/95256449/ Jedis连接工具 什么是Jedis? 它是官方推荐的Java连接开发工具!使用Java操作 Redis中间件!如果你使用java操作 Redis ,那么要对 jedis 十分的熟悉! 测试 在本地主机进行测试 1、打开 Redis 服务 2、新建maven项目,导入依赖 &…

    Redis 2023年4月13日
    00
  • MySQL修改存储过程(ALTER PROCEDURE)方法详解

    MySQL的ALTER PROCEDURE语句可以用于修改已经存在的存储过程。修改存储过程通常包括修改存储过程的名称、参数、注释、以及存储过程中的SQL语句等。 ALTER PROCEDURE的语法如下: ALTER PROCEDURE procedure_name [characteristic …] 其中procedure_name为要修改的存储过程…

    MySQL 2023年3月10日
    00
合作推广
合作推广
分享本页
返回顶部