数据库的查询方式

来源:互联网 发布:厂牌制作软件 编辑:程序博客网 时间:2024/06/11 03:36

数据库的查询方式


数据库的连接查询分为3种方式

  1. 内连接
  2. 外连接
    1. 左外连接
    2. 右外连接
    3. 全外连接
  3. 自然连接

内连接

内连接有三种表示方式:

1. 方言版(不一定适用于所有数据库)
select *from table1 t1, table2 t2where t1.column1=t2.column2;

上述代码会先将table1的每一行和table2的每一行进行笛卡尔积组合,然后将符合条件的行筛选出来。

2. 标准版
select *from table1 t1 inner join table2 t2on t1.column1=t2.column2;

上述代码会先将table1的每一行和table2的每一行进行笛卡尔积组合,然后将符合条件的行筛选出来。

3. 自然连接版
select *from table1 t1 natural join table2 t2;

上述代码会将table1和table2中所有共同属性列的值都相同的行进行组合并筛选出来。
其中natural join和natural inner join是一样的,因为自然连接默认就是内连接。

外连接

1. 左外连接
select *from table1 t1 left outer join table2 t2on t1.column1=t2.column2;

左表(即t1)是主表,每一行记录无论是否符合条件都会被查询出来。
右表(即t2)是从表,只有符合条件才能和主表记录连接。
若主表中的记录无法在从表中找到匹配,从表对应属性值为NULL。

2. 左外自然连接版
select *from table1 t1 natural left outer join table2 t2;

大致与左外连接相同,区别只在于筛选条件。左外连接需要on语句,左外自然连接没有on语句,左主右从,只有所有共同属性列的值都相同才能连接,否则为NULL。

3. 右外连接
select *from table1 t1 right outer join table2 t2on t1.column1=t2.column2;

右表(即t2)是主表,每一行记录无论是否符合条件都会被查询出来。
左表(即t1)是从表,只有符合条件才能和主表记录连接。
若主表中的记录无法在从表中找到匹配,从表对应属性值为NULL。

4. 右外自然连接版
select *from table1 t1 natural right outer join table2 t2;

大致与右外连接相同,区别只在于筛选条件。右外连接需要on语句,右外自然连接没有on语句,右主左从,只有所有共同属性列的值都相同才能连接,否则为NULL。

5. 全连接
select *from table1 t1 full outer join table2 t2on t1.column1=t2.column2;

返回左表和右表中的所有行。当某行在另一个表中没有匹配行时,则另一个表的属性值为NULL。
相当于左外连接的结果表和右外连接的结果表用union连接。
(union将两个表连接后删除重复项,union all将两个表连接但不会删除重复项)

原创粉丝点击