Mysql join连接查询的语法与示例

连接查询:

是将两个查询(或表)的每一行,以“两两横同对接”的方式,所得到的所有行的结果,即一个表中的某行,跟另一个表中的某行。进行“横向对接”,得到一个新行。

连接查询包括以下这些不同形式,连接方式:

交叉连接、内连接、外连接(分:左外连接,右外连接)

连接查询语法:

select * from 表名 [连接方式] join 表名 [on 连接条件] where ...;

测试数据:

mysql> select * from test;
+----+--------+------+------+
| id | name | sex | age |
+----+--------+------+------+
| 1 | name1 | 女 | 15 |
| 2 | name1 | 女 | 15 |
| 4 | name2 | 男 | 30 |
| 5 | name50 | 男 | 12 |
+----+--------+------+------+

mysql> select * from user;
+----+-------+------+
| id | name | age |
+----+-------+------+
| 1 | name1 | 18 |
| 2 | name2 | 15 |
| 3 | name3 | 20 |
| 4 | name4 | 30 |
+----+-------+------+

交叉连接 (cross join)

1、交叉连接其实可以认为是连接查询的“完全版本”, 即所有行都无条件地都连接起来。

2、关键字 “cross” 可以省略;

3、交叉连接又称为“笛卡尔积”,通常应用价值不大

语法形式:

select * from 表名, 表名;
select * from 表名 join 表名;
select * from 表名 cross join 表名;

规范的交叉连接写法

mysql> select * from test cross join user;
+----+--------+------+------+----+-------+------+
| id | name | sex | age | id | name | age |
+----+--------+------+------+----+-------+------+
| 1 | name1 | 女 | 15 | 1 | name1 | 18 |
| 2 | name1 | 女 | 15 | 1 | name1 | 18 |
| 4 | name2 | 男 | 30 | 1 | name1 | 18 |
| 5 | name50 | 男 | 12 | 1 | name1 | 18 |
| 1 | name1 | 女 | 15 | 2 | name2 | 15 |
| 2 | name1 | 女 | 15 | 2 | name2 | 15 |
| 4 | name2 | 男 | 30 | 2 | name2 | 15 |
| 5 | name50 | 男 | 12 | 2 | name2 | 15 |
| 1 | name1 | 女 | 15 | 3 | name3 | 20 |
| 2 | name1 | 女 | 15 | 3 | name3 | 20 |
| 4 | name2 | 男 | 30 | 3 | name3 | 20 |
| 5 | name50 | 男 | 12 | 3 | name3 | 20 |
| 1 | name1 | 女 | 15 | 4 | name4 | 30 |
| 2 | name1 | 女 | 15 | 4 | name4 | 30 |
| 4 | name2 | 男 | 30 | 4 | name4 | 30 |
| 5 | name50 | 男 | 12 | 4 | name4 | 30 |
+----+--------+------+------+----+-------+------+

直接使用 join 进行连接,相当于 cross join,默认就是 交叉连接

mysql> select * from test join user;

查询结果跟上面一致!!!

还可以直接 from 表,表... 也相当于是交叉连接

mysql> select * from test, user;

查询结果跟上面一致!!!

内连接 (inner join)

1、内连接其实是交叉连接的基础上,再通过> mysql> select * from test inner join user> mysql> select * from test as t inner join user as u> mysql> select * from test inner join user> mysql> select * from test as t inner join user as u> mysql> select * from test left join user> mysql> select * from test right join user on test.name=user.name; +------+-------+------+------+----+-------+------+ | id | name | sex | age | id | name | age | +------+-------+------+------+----+-------+------+ | 1 | name1 | 女 | 15 | 1 | name1 | 18 | | 2 | name1 | 女 | 15 | 1 | name1 | 18 | | 4 | name2 | 男 | 30 | 2 | name2 | 15 | | NULL | NULL | NULL | NULL | 3 | name3 | 20 | | NULL | NULL | NULL | NULL | 4 | name4 | 30 | +------+-------+------+------+----+-------+------+

总结

到此这篇关于Mysql join连接查询的语法与示例的文章就介绍到这了,更多相关Mysql join连接查询内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

Mysql join连接查询的语法与示例

扫一扫手机访问