`

mysql join

    博客分类:
  • db
阅读更多

mysql 的 join

 

------

基本格式:

 

select ... from A

join B1 on ...

join B2 on ...

...

where ...

 

------

join 类型

 

join 内连接

left join 左连接,左表所有数据查出,右表跟左表有关联的数据才查出

right join 右连接,右表所有数据查出,左表跟右表有关联的数据才查出

inner join 内连接,同 join,

全连接 mysql 不支持全连接,可以通过 union 2个 left join 或 right join 实现全连接,

 

= 如果不用 join 语句,直接用 = 号关联,则相当于 内连接,

 

------

例子:

 

 

* 建表:

	-- create table boy & gril
	create table boy(
		id int(10) primary key auto_increment,
		name varchar(50) not null,
		girl_id int null,
		cdate timestamp default current_timestamp
	)
	engine=innodb default charset=utf8;

	create table girl(
		id int(10) primary key auto_increment,
		name varchar(50) not null,
		boy_id int null,
		cdate timestamp default current_timestamp
	)
	engine=innodb default charset=utf8;
 

 

* 插入测试数据:

	
	-- clear table
	truncate table boy;
	truncate table girl;
	-- init data
	insert into boy(name,girl_id) values
	('boy_01',2),
	('boy_02',5),
	('boy_03',1),
	('boy_04',4),
	('boy_05',3),
	('boy_06',100);

	insert into girl(name,boy_id) values
	('girl_1',3),
	('girl_2',1),
	('girl_3',5),
	('girl_4',4),
	('girl_5',2),
	('girl_6',100);
 

 

* 各种 join 的 sql 语句:

	-- 内连接
	select b.id as boy_id, g.id as girl_id from boy b join girl g on b.girl_id = g.id order by b.id asc;

	-- 用 = 关联,相当于 内连接
	select b.id as boy_id, g.id as girl_id from boy b, girl g where b.girl_id = g.id order by b.id asc;

	-- 左连接
	select b.id as boy_id, g.id as girl_id from boy b left join girl g on b.girl_id = g.id order by b.id asc;

	-- 右连接
	select b.id as boy_id, g.id as girl_id from boy b right join girl g on b.girl_id = g.id order by b.id asc;

	-- 2个 左连接,通过 union 合并,相当于 全连接
	select b.id as boy_id, g.id as girl_id from boy b left join girl g on b.girl_id = g.id
	union
	select b.id as boy_id, g.id as girl_id from girl g left join boy b on g.boy_id = b.id
 

------


分享到:
评论

相关推荐

    mysql Join使用以及优化

    MySQL数据库中Join操作的使用及优化是一项重要的技能,它涉及到数据库中表与表之间的关联查询。在执行Join操作时,数据库管理系统需要按照某种算法将多个表中的数据记录联合起来,并返回查询结果。Join操作的主要...

    MySQL JOIN之完全用法

    MySQL JOIN是数据库操作中用于合并多个表的数据的关键技术,尤其在处理复杂的数据关系时显得尤为重要。在优化数据库性能,特别是涉及多表连接查询时,理解JOIN的完全用法至关重要。 首先,JOIN操作主要分为三类:...

    MySQL JOIN 语法说明与 INNER JOIN 语法用法实例.docx

    本文档详细介绍了 MySQL 中的 JOIN 语法,包括 INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL JOIN 等,并提供了实际的实例来说明 JOIN 的用法。 首先,MySQL 的 JOIN 语法用于根据两个或多个表中的字段之间的关系,从...

    MySQL JOIN 工作原理浅析1

    "MySQL JOIN 工作原理浅析" MySQL JOIN 工作原理浅析是数据库管理系统中的一种关键技术,用于将多个表连接起来以获取所需数据。本文将对 MySQL 中的 JOIN 工作原理进行浅析,包括 Nested Loop Join 和 Hash Join ...

    mysql join所有方法总结

    在MySQL中,主要的Join方法包括INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL JOIN、SELF JOIN以及CROSS JOIN等。 INNER JOIN(内连接):是所有Join中最常见的类型。使用INNER JOIN后,只有两个表中能够相互匹配的记录...

    了解复杂MySQL JOIN

    当我们需要从两个或更多个表中联合检索数据时,MySQL的JOIN操作就显得尤为重要。本篇文章将深入探讨如何利用JOIN,嵌套查询,LIKE运算符以及聚合函数来处理复杂的数据库查询。 1. **JOIN操作**: JOIN是SQL中用于...

    浅析Mysql Join语法以及性能优化

    MySQL中的JOIN操作是数据库查询中不可或缺的部分,它用于在多个表之间建立关联,获取符合特定条件的数据。在本文中,我们将深入理解JOIN语法,并探讨如何进行性能优化。 首先,JOIN的基本语法涉及FROM子句后的两个...

    Mysql join联表及id自增实例解析

    MySQL中的JOIN操作是数据库查询中常用的一种方式,用于合并两个或更多表的数据。JOIN的关键在于找到不同表之间的关联条件,以此来组合出所需的结果。在本实例中,我们讨论了LEFT JOIN及其与ID自增的关系。 LEFT ...

    Mysql中Join的使用实例详解

    MySQL提供了多种JOIN类型,包括INNER JOIN、LEFT JOIN、RIGHT JOIN和FULL OUTER JOIN等,来满足不同的查询需求。 本章节主要讲解了在MySQL中使用JOIN进行多表查询的方法,特别是LEFT JOIN和JOIN(通常指的是INNER ...

    mysql 开发技巧之JOIN 更新和数据查重/去重

    1 INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL JOIN(MySQL 不支持)、CROSS JOIN 这是在网上找到的非常好的一篇博文,图解 join 语句: CODING HORROR-A Visual Explanation of SQL Joins 下图可以很清楚的明白,join ...

    MySQL中Nested-Loop Join算法小结

    MySQL中的Nested-Loop Join(NLJ)是一种基本的JOIN操作实现方式,主要用于处理两个或多个表之间的连接。NLJ的基本思想是逐行遍历一张表(称为外部表),然后对每一行与另一张表(称为内部表)进行匹配。这个过程...

    MySQL中(JOIN/ORDER BY)语句的查询过程及优化方法

    在MySQL查询语句过程和EXPLAIN语句基本概念及其优化中介绍了EXPLAIN语句,并举了一个慢查询例子: 可以看到上述的查询需要检查1万多记录,并且使用了临时表和filesort排序,这样的查询在用户数快速增长后将成为噩梦...

    MySQL中join语句的基本使用教程及其字段对性能的影响

    MySQL中的JOIN语句是数据库操作中的重要组成部分,它允许我们基于两个或更多表之间的关联字段来合并数据。本文将深入探讨JOIN的基本使用方法以及字段字符集编码如何影响性能。 JOIN语句的基础在于它能根据两个表中...

Global site tag (gtag.js) - Google Analytics