连接查询
- 作用:连接查询可以实现多个表的查询,当查询的字段数据来自不同的表就可以使用连接查询来完成。
- 数据库准备:
CREATE TABLE `hero` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(64) NOT NULL,
`gongfuid` int(10) unsigned NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;
CREATE TABLE `gongfu` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(64) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;
INSERT INTO `hero` VALUES (1,'妲己',2),(2,'李白',1),(3,'程咬金',3),(4,'公孙离',5);
INSERT INTO `gongfu` VALUES (1,'吟诗作对'),(2,'魅惑'),(3,'三板斧'),(4,'沉默');
内连接查询 . inner join . on
- 定义:查询两个表中符合条件的共有记录

- 说明:
inner join 就是内连接查询的关键字,on就是连接查询条件。 - 语法:
select 字段 from 表1 inner join 表2 on 表1.字段1=表2.字段2;
select * from hero inner join gongfu;
- 注意:上面的语句查询出来的叫笛卡尔积,左表和右表一一对应。

- 如上图所示,只需要设置条件让
hero表中的gongfuid和gongfu表中的id相等就可以获取到两个表中的共有记录,即内连接查询的结果是从笛卡尔积结果中取出来的。 - 注意:连接查询的条件使用
on关键字(这里会发发现用where结果与on相同)
select * from hero inner join gongfu on hero.gongfuid=gongfu.id;
select * from hero join gongfu on hero.gongfuid=gongfu.id;
- 狭义理解解释:内连接根据查询条件获取两个表的“交集”。
