mysql关联查询

关联查询:数据查询是Mysql数据库管理最重要的一个功能,连接查询是关系型数据库最主要的查询,包括了内连接(INNER JOIN),外链接(LEFT JOIN,RIGHT JOIN)等,通过连接可以实现多个表的同时查询。

基本定义:
  left join (左连接):返回包括左表中的所有记录和右表中连接字段相等的记录。
  right join (右连接):返回包括右表中的所有记录和左表中连接字段相等的记录。
  inner join (等值连接或者叫内连接):只返回两个表中连接字段相等的行。
  full join (全外连接):返回左右表中所有的记录和左右表中连接字段相等的记录。

准备

新建两张表

CREATE TABLE `a_table` (
  `a_id` int(11) DEFAULT NULL,
  `a_name` varchar(10) DEFAULT NULL,
  `a_part` varchar(10) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8
CREATE TABLE `b_table` (
  `b_id` int(11) DEFAULT NULL,
  `b_name` varchar(10) DEFAULT NULL,
  `b_part` varchar(10) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8

插入数据

INSERT INTO `a_table` VALUES(1,'赵','销售');
INSERT INTO `a_table` VALUES(2,'钱','技术');
INSERT INTO `a_table` VALUES(3,'孙','人事');
INSERT INTO `a_table` VALUES(4,'李','销售');
a.PNG
INSERT INTO `b_table` VALUES(2,'钱','技术');
INSERT INTO `b_table` VALUES(4,'李','销售');
INSERT INTO `b_table` VALUES(6,'周','技术');
INSERT INTO `b_table` VALUES(8,'吴','人事');
b.PNG

内连接

select * from a_table a inner join b_table b on a.a_id = b.b_id;

inner.PNG

将表a_table和表b_table中a.id和b.id相同的行筛选出,相当于求交集
inner2.png

左连接

select * from a_table a left join b_table b on a.a_id = b.b_id;

left.PNG

左表(a_table)的记录将会全部表示出来,而右表(b_table)只会显示符合搜索条件的记录。右表记录不足的地方均为NULL。
left2.png

右连接

select * from a_table a right join b_table b on a.a_id = b.b_id;

right.PNG

和左连接规则相反
right2.png

参考链接

链接1
链接2

你可能感兴趣的:(mysql关联查询)