表的连接
发布于 2015-08-22 11:13 类别: tech
查询两个或两个以上表的内容,这很重要,在真正的项目开发过程中会发现,都需要多张表联合查询取数据。
如果数据被分散保存到数据库当中,这种数据格式是没问题的,对于数据库来说,提供了一些检索的方式。这些检索方式可以协助你将数据合理的整合在一起,查询出来供用户查看。 对于表来说,一般都是用来做查询,而不是做修改或删除的操作。
连接查询分类:
- 内连接查询:自然连接、等值连接、不等值连接三种
- 自连接查询:对同一个表进行连接操作
- 外连接查询:左外连接、右外连接、全外连接三种
- 交叉连接查询:也作无条件查询,cross join:产生笛卡尔积
- 复杂查询:三个表以上的连接查询
个人认为,这些分类中主要搞定内连接、外连接、左连接就足够了。
内连接
sys_book表如下:

sys_book_type表如下:

假设现在的需求是查询两张表全部的内容 内连接必须保证某一个字段相等,对于这两张表来说,它们是靠type_id联系在一起的。 sql语句如下:
select * from sys_book_type t inner join sys_book b
on t.type_id = b.type_id
查询的结果:

它的底层靠笛卡尔积,从sys_book_type表的第一条数据开始,因为要做内连接,所以将数据取出后上sys_book做查找,反复进行对比,将数据取出。