表的连接

发布于 2015-08-22 11:13 类别: tech

查询两个或两个以上表的内容,这很重要,在真正的项目开发过程中会发现,都需要多张表联合查询取数据。

如果数据被分散保存到数据库当中,这种数据格式是没问题的,对于数据库来说,提供了一些检索的方式。这些检索方式可以协助你将数据合理的整合在一起,查询出来供用户查看。 对于表来说,一般都是用来做查询,而不是做修改或删除的操作。

连接查询分类:

  1. 内连接查询:自然连接、等值连接、不等值连接三种
  2. 自连接查询:对同一个表进行连接操作
  3. 外连接查询:左外连接、右外连接、全外连接三种
  4. 交叉连接查询:也作无条件查询,cross join:产生笛卡尔积
  5. 复杂查询:三个表以上的连接查询

个人认为,这些分类中主要搞定内连接外连接左连接就足够了。

内连接

sys_book表如下:

Alt text

sys_book_type表如下:

Alt text

假设现在的需求是查询两张表全部的内容 内连接必须保证某一个字段相等,对于这两张表来说,它们是靠type_id联系在一起的。 sql语句如下:

select * from sys_book_type t inner join sys_book b
on t.type_id = b.type_id

查询的结果:

Alt text

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