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日

相关文章

  • Django读取Mysql数据并显示在前端的实例

    下面是一个完整攻略,讲解如何使用Django从MySQL数据库中读取数据并在前端显示。 环境准备 在开始之前,需要准备好以下环境: Python 3.x Django 3.x MySQL及mysqlclient库 数据库设置 在使用Django连接MySQL数据库之前,需要先在settings.py文件中进行相应的配置。按以下步骤操作: 打开settings…

    database 2023年5月22日
    00
  • SPSS26怎么激活?IBM SPSS Statistics 26中文许可授权安装教程(Mac/Win/Linux)

    SPSS26激活及安装教程 什么是SPSS? SPSS是一种商业化的统计分析软件,可以进行数据挖掘、决策支持、预测分析等。在科研、统计分析领域中广泛应用,是目前全球领先的统计分析软件之一。 SPSS26激活方法 方式一:手动输入序列号激活 打开SPSS Statistics软件,选择“许可证管理器”。 在“许可证管理器”中选择“授权”,手动输入产品序列号,然…

    database 2023年5月22日
    00
  • 29_对项目的redis cluster实验多master写入、读写分离、高可用性

    redis cluster搭建起来了 redis cluster,提供了多个master,数据可以分布式存储在多个master上; 每个master都带着slave,自动就做读写分离; 每个master如果故障,那么久会自动将slave切换成master,高可用 redis cluster的基本功能,来测试一下 1、实验多master写入 -> 海量数…

    Redis 2023年4月11日
    00
  • 熟悉这几道 Redis 高频面试题(面试不用愁)

    下面我将为你详细讲解“熟悉这几道 Redis 高频面试题(面试不用愁)”的完整攻略。 前言 Redis 是一种基于内存的键值型数据库系统,并支持多种数据结构,如 字符串、哈希、列表、集合、有序集合 等等。Redis 的出现大大提高了数据操作效率,因此在高并发场景下使用较为广泛。不少公司在面试中都会考察 Redis 相关的知识点,因此我们有必要对 Redis …

    database 2023年5月22日
    00
  • 如何在SQL Server中实现 Limit m,n 的功能

    在SQL Server中实现类似于MySQL中的 LIMIT m,n 的限制结果集的功能,可以采用 OFFSET FETCH 的方法。 使用 OFFSET FETCH 实现 Limit m,n 语法格式如下: SELECT column FROM table ORDER BY column OFFSET m ROWS FETCH NEXT n ROWS ON…

    database 2023年5月21日
    00
  • MySQL DATE_ADD和ADDDATE函数实现向日期添加指定时间间隔

    MySQL DATE_ADD和ADDDATE函数可以帮助我们在指定日期上添加时间间隔,这样我们可以很方便地进行日期计算。下面我会详细介绍这两个函数的使用方法及示例。 DATE_ADD函数 DATE_ADD函数可以用于在指定日期上添加时间间隔。它的基本语法如下: DATE_ADD(date, INTERVAL expr unit) 其中,date是一个日期或日…

    database 2023年5月22日
    00
  • sqlserver中通过osql/ocmd批处理批量执行sql文件的方法

    SQL Server是一款非常强大的关系型数据库管理系统,它可以通过osql/ocmd等工具来执行批量的SQL文件。下面是通过osql/ocmd批处理批量执行sql文件的方法详解: 1. osql工具 1.1 osql简介 osql是一个命令行工具,可以用来连接SQL Server数据库,并执行SQL语句或者批处理文件。使用osql工具需要安装SQL Ser…

    database 2023年5月21日
    00
  • MySql安装启动两种方法教程详解

    MySql安装启动两种方法教程详解 MySql是一种广泛使用的开源关系型数据库管理系统,具有跨平台,高效、稳定等特点,并且被广泛应用于Web应用程序的开发中。 本文将为大家介绍两种MySql安装启动的方法。 方法1:下载安装 下载MySql安装文件:在官网(https://dev.mysql.com/downloads/mysql/ )下载适合自己操作系统版…

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