联接查询
1、内联接
格式:数据表1 inner join 数据表2 on 联接表达式。
例子:select * from 员工数据表 inner join 项目数据表
on 员工数据表.员工编号=项目数据表.负责人
2、外联接
(1)左向外联接
格式:数据表1 left (outer) join 数据表2 on 联接表达式。
例子:select * from 员工数据表 left join 项目数据表
on 员工数据表.员工编号=项目数据表.负责人
查询结果集中包括表1中的所有记录,而不仅仅是联接字段所匹配的记录。如果数据表1的某一条记录在数据表2中没有匹配的记录,则结果集相应记录中的有关数据表2的所有字段为空值。
(2)右向外联接
格式:数据表1 right(outer) join 数据表2 on 联接表达式。
例子:select * from 员工数据表 left join 项目数据表
on 员工数据表.员工编号=项目数据表.负责人
查询结果集中包括表2中的所有记录,而不仅仅是联接字段所匹配的记录。如果数据表2的某一条记录在数据表1中没有匹配的记录,则结果集相应记录中的有关数据表1的所有字段为空值。
(3)完整外联接
格式:数据表1 full(outer) join 数据表2 on 联接表达式。
使用完整外联接进行查询的结果集将包括两个数据表中的所有记录,当某一条记录在另一个数据表中没有匹配记录时,则另一个数据表的选择列表字段将指定为空值
(4)交叉联接
格式 数据表1 cross join 数据表2
返回两个数据表的笛卡尔乘积。记录的数目是两个表记录数目的相乘。
嵌套查询
主要用到 in/not in 、all/any、exist/not exist等等,这里就不详细介绍。
汇总函数:SUM、AVG、MAX、MIN、COUNT、COUNT(*)。
COUNT返回表达式中值的个数,这个表达式通常是数据表中的字段名称。COUNT(*)返回符合条件的记录条数。
COUNT函数将忽略对象中的空值,COUNT(*)函数把所有符合条件的记录都计算在内. COUNT函数中可使 用DISTINCT去除重复值,而COUNT(*)函数没有这种用法。
补:向数据库中添加多条记录时可使用临时表。例如:
insert into 员工数据表 (字段)
select *
from 临时员工数据表