MySQL多表查询的案例详解

yizhihongxing

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日

相关文章

  • 【Redis】windows下redis服务的安装

    https://github.com/MicrosoftArchive/redis/releases Redis 支持 32 位和 64 位。这个需要根据你系统平台的实际情况选择,这里我们下载 Redis-x64-xxx.zip压缩包到 D 盘redis文件夹下。   解压:   回到顶部 二、Redis临时服务 1.打开cmd,进入到刚才解压到的目录,启动…

    Redis 2023年4月12日
    00
  • mysql高效查询left join和group by(加索引)

    下面是详细讲解MySQL高效查询left join和group by的完整攻略。 1. 背景分析 在MySQL中,当使用left join和group by时,如果不合理地使用索引,查询效率会非常低下,甚至会因为全表扫描而导致查询速度慢的问题。因此,在使用left join和group by时,必须要注意合理使用索引。 2. left join的优化 2.1…

    database 2023年5月22日
    00
  • Mysql在项目中相关使用方法指南(简单操作数据库)

    MySQL在项目中相关使用方法指南 MySQL是一种关系型数据库管理系统,广泛用于网站、企业管理系统等应用程序的数据存储。在项目中使用MySQL,需要掌握基本的SQL语法和MySQL客户端的使用方法。 安装MySQL客户端和服务端 在使用MySQL之前,需要先安装MySQL客户端和服务端。客户端提供了与MySQL服务器之间通讯的功能,服务端提供了对数据库的读…

    database 2023年5月22日
    00
  • PostgreSQL 数据库性能提升的几个方面

    下面是对“PostgreSQL 数据库性能提升的几个方面”的详细讲解: 1. SQL 优化 SQL 优化是提升 PostgreSQL 数据库性能的一个关键方面,在使用 PostgreSQL 数据库时,合理地编写 SQL 查询语句是尤为重要的。 1.1 使用合适的数据类型 在创建表的时候,选择合适的数据类型可以提高查询和运算的效率。比如说,使用整型代替字符型可…

    database 2023年5月19日
    00
  • linux下搭建hadoop环境步骤分享

    Linux下搭建Hadoop环境步骤分享 简介 Hadoop是当下最为流行的分布式计算框架之一,能够处理海量数据,并提供并行处理能力。本文将详细介绍如何在Linux系统下搭建Hadoop环境。 步骤 1. 安装JDK 首先需要安装JDK,步骤如下: sudo apt update sudo apt install default-jdk 2. 下载Hadoo…

    database 2023年5月22日
    00
  • DBMS中3NF和BCNF的区别

    下面是关于DBMS中3NF和BCNF的区别的详细讲解攻略: 1. 了解3NF和BCNF的概念 在介绍3NF和BCNF的区别之前,需要先了解它们的概念。 3NF(第三范式):一个关系模式R符合3NF,当且仅当R中的每一个非主属性都不传递依赖于任何一个候选码。 BCNF(巴斯-科德范式):一个关系模式R符合BCNF,当且仅当R中的每一个非主属性都不传递依赖于任何…

    database 2023年3月28日
    00
  • C#如何实现对sql server数据库的增删改查

    对SQL Server数据库的增删改查操作是C#开发中需要掌握的关键技能之一。下面是实现增删改查的完整攻略: 连接数据库 首先需要在C#中连接SQL Server数据库。可以通过SqlClient命名空间提供的SqlConnection类来实现连接。 using System.Data.SqlClient; string connectionString =…

    database 2023年5月21日
    00
  • 如何在Python中插入数据到MongoDB数据库?

    以下是如何在Python中插入数据到MongoDB数据库的完整使用攻略,包括安装PyMongo库、连接MongoDB数据库、插入数据等步骤。同时,提供了两个示例以便更好理解如何在中插入数据到MongoDB数据库。 步骤1:安装PyMongo库 在Python中,我们可以使用pip命令安装Py库。以下是装PyMongo库的基本语法: pip install p…

    python 2023年5月12日
    00
合作推广
合作推广
分享本页
返回顶部