小小的连接查询,其实里面有很多学问,今天我就来简单剖析一下。
左连接,右连接,内连接的本质:将两个表的数据依据一定条件横向连接起来。
给出建表语句:
--------------------------------------------------
create table test1(
id int,
name varchar(10)
)
create table test2(
id int,
name varchar(10)
)
INSERT INTO `test1` VALUES (1,'2');
INSERT INTO `test1` VALUES (1,'2');
INSERT INTO `test1` VALUES (2,'1');
INSERT INTO `test1` VALUES (2,'2');
INSERT INTO `test1` VALUES (3,'1');
INSERT INTO `test2` VALUES (1,'2');
INSERT INTO `test2` VALUES (2,'1');
INSERT INTO `test2` VALUES (2,'2');
--------------------------------------------------
左连接sql:select * from test1 a left join test2 b on a.id=b.id
如下为左连接示例图:
1,理解左连接查询方式(以两表id相等作为on的条件):
先将左表数据查出,然后根据on后面的条件,将右表中凡是id与左表id相等的记录都查出来,与匹配的左表记录依次排成一行或多行,若无匹配的记录,则显示null。
举例:select * from test1 a left join test2 b on a.id=b.id
说明:先将左表数据查出,然后根据on后面的条件,将右表中凡是id与左表id相等的记录都查出来,与匹配的左表记录依次排成一行或多行,若无匹配的记录,则显示null。
在本例中,我画了6根线,每条线都表示了一条查询结果记录。
当ID为1时:左表有2条ID为1的记录,右表有1条。先查左表的第一条,然后再查询右表中所有ID与左表第一条记录的ID相等(即ID为1)的记录,因右表只有1条记录的ID为1,因此得出查询结果的第一条记录:1,2,1,1。
第二条记录查询方式也同上。
当ID为2时:左右表各有2条ID为2的记录。也是同上,当查左表第一条ID为2的记录时,因右表中有2条ID为2的记录,因此查询结果会有两条,即左表的1条记录会和右表的2条记录一一配对。
第二条记录查询方式也同上。
对于id为3的记录,因右表没有ID为3的记录,因此右边显示为null。
--------------------------------------------------
2,理解了左连接之后,右连接也就不难了。
右连接语句:select * from test1 a right join test2 b on a.id=b.id
右连接查询结果:
--------------------------------------------------
3,而内连接,则是把ID只存在于某一个表中的记录给过滤了。
以下3条sql语句等价:
select * from test1 a join test2 b on a.id=b.id
select * from test1 a inner join test2 b on a.id=b.id
select * from test1 a , test2 b where a.id=b.id
内连接查询结果:
- 大小: 54.6 KB
- 大小: 2 KB
- 大小: 1.9 KB
分享到:
相关推荐
本文将深入探讨七种主要的MySQL连接查询类型,并提供每种查询的实现示例。 1. 内连接(INNER JOIN): 内连接返回两个表中匹配的行。在给定的例子中,`INNER JOIN`被用来查找`employees`和`departments`表中`...
我这里没有修改,使用用默认位置,直接按“Next”继续选择您的网站的一般 mysql 访问量,同时连接的数目,“Decision Support(DSS)/OLAP(20 个左右)”、“Online Transaction Processing(OLTP)(500 个左右)”、...
MySQL中的左右内连接是数据库操作中的重要概念,用于在多个表之间进行复杂的数据查询。这里我们将深入探讨左连接、右连接以及内连接的用法,通过具体的实例来帮助理解。 一、左连接(Left Join) 左连接以左表(本...
在文档"数据库:左连接、右连接、全连接.doc"中,你可能会找到更多关于这些连接类型的详细解释和示例,这将有助于深化你对这些概念的理解,并能帮助你在实际工作中更有效地利用MySQL进行数据操作。
你可以导入这个脚本到你的MySQL数据库中,以建立一个示例的分类树。 `index.php`文件可能是用来操作这个分类系统的PHP脚本。其中前几行可能定义了数据库连接的参数,如数据库主机名、用户名、密码和数据库名称,...
在MySQL数据库中,跨表查询是处理多个相关表数据的关键技术。这允许我们从不同的表中获取并结合信息,以满足复杂的数据需求。本篇文章将深入探讨如何在MySQL中实现跨表查询,以及如何利用共享的字段来关联数据。 ...
- **功能**:客户端尝试连接失败达到此数值后,MySQL服务会暂时禁止其连接,直至执行`FLUSH HOSTS`命令或重启服务。 - **建议**:合理设置该值以防止恶意连接攻击。 6. **table_open_cache**: - **功能**:...
1.2.2 mysql 的多实例结构图.........................................................................................10 1.2.3 实战安装 mysql 多实例需要的依赖包..............................................
### MySQL服务器安装详解 #### 一、安装准备与文件解压 MySQL是一款广泛使用的开源关系型数据库管理系统。本文档详细介绍了MySQL服务器的安装步骤。首先,下载MySQL安装包`mysql-5.0.22-win32.zip`,然后通过解压...
- 示例路径:`F:\Server\MySQL\MySQLServer 5.0`。 ##### 5. 开始安装 - 确认所有设置无误后点击 “Install” 开始安装。 - 安装过程中会提示是否注册mysql.com账户,通常可选择 “Skip Sign-Up”。 #### 二、...
最后,`MYSQL配置.txt`文件可能是详细的配置指南或者具体的配置示例,它能提供更深入的指导。阅读并理解这些文档,结合实际需求调整配置,可以确保MySQL运行在最佳状态。记住,良好的数据库配置是提升系统性能的关键...
交叉连接示例: ```sql SELECT * FROM authors AS a CROSS JOIN publishers AS p ``` 需要注意的是,无论哪种连接操作,都不能直接对text、ntext和image等大数据类型列进行连接,但可以通过间接方式实现。在...
- **注意**:虽然这个例子有助于初学者理解基本概念,但实际开发中应避免使用已废弃的`mysql_`系列函数,而应使用`mysqli`或`PDO`扩展。同时,应当对用户输入进行过滤和验证,防止SQL注入等安全问题。此示例中未...
MySQL是世界上最流行的关系型数据库管理系统之一,其面试中常见的知识点涵盖了数据库设计、SQL查询、事务处理、并发控制等多个方面。以下是对这些知识点的详细解析: 1. **数据库的三大范式**: - **第一范式(1NF...
例如,在并发用户数达到100时,未使用连接池的应用程序平均响应时间为3秒左右,而使用连接池的应用程序平均响应时间降至0.5秒,处理能力提高了6倍以上。 #### 结论 本文详细介绍了基于JDBC的数据库连接池技术,...
这份整理得非常好的函数pdf文档,提供了一个详尽的函数列表及其使用场景和示例,非常适合于对MySQL函数不熟悉或需要深入理解这些函数的开发人员。通过学习和实践,用户可以更好地运用这些函数来处理实际问题。
为了使Django能够连接到MySQL数据库,需要安装`pymysql`库。可以通过以下命令进行安装: ```bash pip install pymysql ``` 接下来,在项目的某个`__init__.py`文件或者配置文件中导入`pymysql`并将其注册为`...
- **示例**:`CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=98;` **自动化监控脚本**:通过编写Shell脚本,可以定期检查从服务器的复制状态,并根据错误类型自动处理一些常见问题。 ####...
MySQL是世界上最受欢迎的关系型数据库管理系统之一,用于存储和管理数据。在进行数据分析或构建应用程序时,了解如何有效...在实际工作中,可以使用`main.mysql`文件中的示例代码作为参考,进一步提高自己的MySQL技能。