y连接的使用

在前几章节中,我们已经学会了如何在一张表中读取数据,这是相对简单的,但是在真正的应用中经常需要从多个数据表中读取数据。

本章节我们将向大家介绍如何使用 MySQL 的 JOIN 在两个或多个表中查询数据。

你可以在 SELECT, UPDATE 和 DELETE 语句中使用 MySQL 的 JOIN 来联合多表查询。

JOIN 按照功能大致分为如下三类:

INNER JOIN 返回两个表中满足连接条件的匹配行,以下是 INNER JOIN 语句的基本语法:

参数说明:

简单的 INNER JOIN:

以上 SQL 语句将选择 orders 表和 customers 表中满足连接条件的订单 ID 和客户名称。

2. 使用表别名:

以上 SQL 语句使用表别名 o 和 c 作为 orders 和 customers 表的别名。

3. 多表 INNER JOIN:

以上 SQL 语句涉及了 orders、customers、order_items 和 products 四个表的连接。它选择了订单 ID、客户名称和产品名称,连接了这些表的关联列。

4. 使用 WHERE 子句进行过滤:

LEFT JOIN 返回左表的所有行,并包括右表中匹配的行,如果右表中没有匹配的行,将返回 NULL 值,以下是 LEFT JOIN 语句的基本语法:

1. 简单的 LEFT JOIN:

以上 SQL 语句将选择客户表中的客户 ID 和客户名称,并包括左表 customers 中的所有行,以及匹配的订单 ID(如果有的话)。

以上 SQL 语句将选择客户表中的客户 ID 和客户名称,并包括左表 customers 中的所有行,以及匹配的订单 ID(如果有的话)。

2. 使用表别名:

以上 SQL 语句使用表别名 c 和 o 分别代替 customers 和 orders 表的名称。

3. 多表 LEFT JOIN:

以上 SQL 语句连接了 customers、orders、order_items 和 products 四个表,并选择了客户 ID、客户名称、订单 ID 和产品名称。左连接保证了即使在 order_items 或 products 中没有匹配的行,仍然会返回客户和订单的信息。

4. 使用 WHERE 子句进行过滤:

LEFT JOIN 是一种常用的连接类型,尤其在需要返回左表中所有行的情况下。当右表中没有匹配的行时,相关列将显示为 NULL。在使用 LEFT JOIN 时,请确保理解连接条件并根据需求过滤结果。

RIGHT JOIN 返回右表的所有行,并包括左表中匹配的行,如果左表中没有匹配的行,将返回 NULL 值,以下是 RIGHT JOIN 语句的基本语法::

以下是一个简单的 RIGHT JOIN 实例:

以上 SQL 语句将选择右表 orders 中的所有订单 ID,并包括左表 customers 中匹配的客户 ID。如果在 customers 表中没有匹配的客户 ID,相关列将显示为 NULL。

在开发过程中中,RIGHT JOIN 并不经常使用,因为它可以用 LEFT JOIN 和表的顺序交换来实现相同的效果。例如,上面的查询可以通过使用 LEFT JOIN 改写为:

以上 SQL 语句返回相同的结果,因为 LEFT JOIN 与 RIGHT JOIN 是对称的。在实际使用中,你可以根据个人偏好或组织规范选择使用哪种形式。

在使用 INNER JOIN 时,请确保连接条件是准确的,并理解连接的表之间的关系。

我们在 RUNOOB 数据库中有两张表 tcount_tbl 和 runoob_tbl。

尝试以下实例:

接下来我们就使用MySQL的INNER JOIN(也可以省略 INNER 使用 JOIN,效果一样)来连接以上两张表来读取runoob_tbl表中所有runoob_author字段在tcount_tbl表对应的runoob_count字段值:

以上 SQL 语句等价于:

LEFT JOIN 是一种常用的连接类型,尤其在需要返回左表中所有行的情况下。

在使用 LEFT JOIN 时,请确保理解连接条件并根据需求过滤结果。

MySQL left join 与 join 有所不同,LEFT JOIN 会读取左边数据表的全部数据,即使右边表无对应数据。

尝试以下实例,以 runoob_tbl 为左表,tcount_tbl 为右表,理解 MySQL LEFT JOIN 的应用:

以上实例中使用了 LEFT JOIN,该语句会读取左边的数据表 runoob_tbl 的所有选取的字段数据,即使在右侧表 tcount_tbl中 没有对应的 runoob_author 字段值。

MySQL RIGHT JOIN 会读取右边数据表的全部数据,即使左边边表无对应数据。

在实际开发过程中,RIGHT JOIN 并不经常使用,因为它可以用 LEFT JOIN 和表的顺序交换来实现相同的效果。

尝试以下实例,以 runoob_tbl 为左表,tcount_tbl 为右表,理解MySQL RIGHT JOIN的应用:

以上实例中使用了 RIGHT JOIN,该语句会读取右边的数据表 tcount_tbl 的所有选取的字段数据,即使在左侧表 runoob_tbl 中没有对应的runoob_author 字段值。

PHP 中使用 mysqli_query() 函数来执行 SQL 语句,你可以使用以上的相同的 SQL 语句作为 mysqli_query() 函数的参数。

THE END
0.MySQL教程(超详细,零基础可学第一篇)mysql教程在以上实例中,我们使用了 root 用户登录到 MySQL 服务器,当然你也可以使用其他 MySQL 用户登录。 如果用户权限足够,任何用户都可以在 MySQL 的命令提示窗口中进行 SQL 操作。 成功连接到 MySQL 后,你可以在命令行中直接执行 SQL 查询。 列出所有可用的数据库: jvzquC41dnuh0lxfp0tfv8r2a8:2;;<571gsvrhng1jfvjnnu1752=;;93<
1.MySQL数据库基础篇1mysql菜鸟入门系列MySQL数据库基础篇-1 本文章是菜鸟在学习 MySQL数据库时做的记录,从基础 到 进阶 到 运维,实现轻松掌握MySQL数据库技能知识。 本文围绕以下展开介绍: 安装MySQL数据库 SQL 语句基本语法 SQL 约束语句与条件语句 SQL 聚合语句 查询方式:排序查询、分组查询、分页查询jvzquC41dnuh0lxfp0tfv8vsa5<16@6:41gsvrhng1jfvjnnu1754B65258
2.Mysql内连接菜鸟教程MySQL教程 | 菜鸟教程 装数据库失败后的重装步骤!!! --[创建数据库]CREATE DATABASE <数据库名>: --使用mysqladamin 创建数据库-- 使用普通用户,你可能需要特定的权限来创建或者删除MySQL数据库.-- 所以我们这边使用用户登陆,root用户拥有最高权限,可以使用mysql mysqladmin 命令来创建数据库.-- 以下命令简单jvzquC41yy}/uqz|jkjvq7hqo1zprrh1o{yrn.J7':<&:>*G:'HG'BJ'G8+9G.F7'G>&:O*;E'K:'K=';H+F8.>7';?&G@*C:'>C1
3.MySQL创建数据库|菜鸟教程php $dbhost = 'localhost:3306'; // mysql服务器主机地址 $dbuser = 'root'; // mysql用户名 $dbpass = '123456'; // mysql用户名密码 $conn = mysqli_connect($dbhost, $dbuser, $dbpass); if(! $conn ) { die('连接错误: ' . mysqli_errorjvzq<84yyy4489iqe0ipo8hqpvkov86912;2986:16712<956a<66@;645>/uqyon
4.陪你沉浸式快速上手MySql本文介绍了数据库的概念、发展历程,重点讲解了层次模型、网状模型和关系型数据库的特点。此外,还提到了如何选择数据库,以及MySQL的安装、连接和基本操作,包括数据定义语言(DDL)、数据操作语言(DML)和数据控制语言(DCL)的应用。 目录 0. 开场 1. 什么是数据库 jvzquC41dnuh0lxfp0tfv8VaDqun1jwvkerf1mjvckrt1:8937:79B
5.MYSQL学习指南(看完这篇就够了,万字收藏!!!)mysql学习准备好一个安装 MySQL 程序的目录,如:D:/software 在本教程中,您已经学会了如何使用MySQL安装程序在Windows系统中安装MySQL,下载MySQL示例数据库并将其加载到MySQL服务器中,以通过此MySQL教程练习和学习MySQL。 这里解压后的目录为:D:\software\mysql-5.7.18-winx64, 此目录下的文件如下所示 : 第 jvzquC41dnuh0lxfp0tfv8vsa67449<221gsvrhng1jfvjnnu1755=>;36?
6.MySQL数据库菜鸟教程叫我二当家MySQL菜鸟教程: http://www.runoob.com/mysql/mysql-tutorial.htmljvzquC41yy}/ewgnqiy/exr1ecrmon4ctvodnnx17:67;;<0jvsm
7.mysql查询语句菜鸟教程数据库的查询语句大全MySQL语法的执行数序: (1) 先找到查询的左表(2) 指定左表和右表联表的条件(3) 找到联表的右表生成笛卡尔积临时表(4) 根据判断条件找出符合条件的数据(5) 把结果按照指定的字段进行分组(6) 通过分组再次过滤出符合 企鹅号小编 2018/02/01 1.5K0 MySQL【二】---数据库查询详细教程{查询、排序、聚合函数、jvzquC41enuvf7ygpekov7hqo1jfxnqqrgx0c{ykenk04:863;8
8.python3菜鸟教程51CTO博客已为您找到关于python3菜鸟教程的相关内容,包含IT学习相关文档代码介绍、相关教程视频课程,以及python3菜鸟教程问答内容。更多python3菜鸟教程相关解答可以来51CTO博客参与分享和学习,帮助广大IT技术人实现成长和进步。jvzquC41dnuh0>6evq4dqv4vqrod1y~vjqt4ejnpkcukkjtejgth0qyon
9.Node.js连接MySQL|菜鸟教程本章节我们将为大家介绍如何使用 Node.js 来连接 MySQL,并对数据库进行操作。 如果你还没有 MySQL 的基本知识,可以参考我们的教程:MySQL 教程。 本教程使用到的 Websites 表 SQL 文件:websites.sql。 安装驱动 本教程使用了淘宝定制的 cnpm 命令进行安装: jvzq<84yyy4489iqe0ipo8hqpvkov8741371886913>45=:3;a717==53:<50|mvon
10.Vue菜鸟教程腾讯云开发者社区Vue菜鸟教程适合初学者吗? Vue菜鸟教程包含哪些主要内容? 学习Vue菜鸟教程需要多长时间? 大家好,又见面了,我是你们的朋友全栈君。 Vue框架快速入门 1.Vue的认识 1.1 什么是Vue? Vue是一个开源的javascript框架,并且Vue支持mvc和mvvm两种模式。 Vue是一个构建数据驱动的 web 界面的渐进式框架。采用自底向上增量开发jvzquC41enuvf7ygpekov7hqo1jfxnqqrgx0c{ykenk049:7::9
11.菜鸟教程的mysqlconnector基础Hany47315菜鸟教程的 mysql-connector 基础 安装驱动 python-m pip install mysql-connector 导包importmysql.connector mydb =mysql.connector.connect( host="localhost",#数据库主机地址user="root",#数据库用户名passwd="root"#数据库密码) 创建游标 mycursor= mydb.cursor()jvzquC41yy}/ewgnqiy/exr1jctz/ytuvs:85:6353;0r86525=23A3jvor
12.MySQLDELETE语句|菜鸟教程如果没有指定 WHERE 子句,MySQL 表中的所有记录将被删除。 你可以在 WHERE 子句中指定任何条件 您可以在单个表中一次性删除记录。当你想删除数据表中指定的记录时 WHERE 子句是非常有用的。 实例 以下实例演示了如何使用 DELETE 语句。1. 删除符合条件的行:jvzquC41o0xvpxtd0eun1v~usn5n{|vn/fkmg}j/swks{7mvon
13.MySQL运算符本章节我们主要介绍 MySQL 的运算符及运算符的优先级。 MySQL 主要有以下几种运算符:算术运算符比较运算符逻辑运算符位运算符算术运算符MySQL 支持的算术运算符包括:运算符作用+加法-减法*乘法/ 或 DIV除法% 或 MOD取余jvzquC41yy}/ejnpkcuke7hqo1szuzq1o{yrn6trgtguq{3jvor
14.MySQLWHERE子句|菜鸟教程mysqli_select_db($conn,'RUNOOB');$retval=mysqli_query($conn,$sql);if(!$retval){die('无法读取数据:'.mysqli_error($conn));}echo'菜鸟教程 MySQL WHERE 子句测试';echo'教程 ID标题作者提交日期';while($row=mysqli_fetch_array($retval,MYSQLI_ASSOC)){echo"{$row['runoob_id']}"."{$row[jvzquC41yy}/t~sqqd4dqv4o{uwm1v~usn3xjnwg/erbw|j0jvsm
15.MySQLSQL菜鸟教程(一)mysql菜鸟教程【MySQL】SQL菜鸟教程(一) 1.常见命令 1.1 总览 命令 作用 SELECT 从数据库中提取数据 UPDATE 更新数据库中的数据 DELETE 从数据库中删除数据 INSERT INTO 向数据库中插入新数据 CREATE DATABASE 创建新数据库 ALTER DATABASE 修改数据库 CREATETABLE 创建新表jvzquC41dnuh0lxfp0tfv8r2a9:94<;:51gsvrhng1jfvjnnu1757B8;758