小小的连接查询,其实里面有很多学问,今天我就来简单剖析一下。
左连接,右连接,内连接的本质:将两个表的数据依据一定条件横向连接起来。
给出建表语句:
--------------------------------------------------
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
分享到:
相关推荐
java连接mysql示例,非常简单的示例,不过需要大家自己在本地建立自己的mysql数据库。
自用的Go语音连接MySQL数据库的代码,修改一下数据库地址就可直接用
Dynamic+Jasper+Mysql连接生成报表示例
delphi xe8 dbexpress&mysql;连接示例,+libmySQL.dll+Dbxmys.dll
C Sharp 连接MySQL数据库示例
QT连接阿里云服务器的MySql数据库示例
QT连接MySQL数据库示例代码
示例代码中,我们使用了Python的mysql.connector库来连接MySQL数据库并执行SQL语句。 在实际使用时,你需要将your_username和your_password替换为你的MySQL数据库的用户名和密码,将mydatabase替换为你的数据库名称...
希望给大家帮助,压缩包里有连接mysql的jar包,以及示例代码
MYSQL * get_conn(); map,string> query_for_object(string sql,string * params); vector,string>> query_for_list(string sql, string * params); int update_data(string sql, string * params); int insert_...
基于力控7.2 连接 mysql 数据库 设计的一套关于称重控制的 示例代码 ,全中文编程,源码下载.
实现了使用C#连接MySQL数据库连接完整项目
mysql c# odbc windows7 64位处理器
Winform中连接Mysql8并查询表中数据进行显示示例代码 Winform中连接Mysql8并查询表中数据进行显示示例代码 Winform中连接Mysql8并查询表中数据进行显示示例代码 Winform中连接Mysql8并查询表中数据进行显示示例代码
Java连接MySql的示例程序, 简单的插入操作
本示例使用C# 调用MySql.Data.dll 实现 访问MySql 数据库。请使用Microsoft Visual Studio 2012 打开
JPA连接MySql搭建HelloWorld示例代码,J
MySql示例5:创建并查询视图.zip,MySql示例5:创建并查询视图.zip,MySql示例5:创建并查询视图.zip,MySql示例5:创建并查询视图.zipMySql示例5:创建并查询视图.zip
基于Javaweb+Tomcat+MySQL的大学生公寓管理系统源码+数据库+示例图片.zip基于Javaweb+Tomcat+MySQL的大学生公寓管理系统源码+数据库+示例图片.zip 基于Javaweb+Tomcat+MySQL的大学生公寓管理系统源码+数据库+示例...
Java连接数据库的简单代码过程,里面有一个mysql示例