一.分组查询
1.多字段分组
使用group by语句
例
select company 公司, max(milse) 最长线路里程
from line
group by company
2.使用having聚合函数在分组之后筛选表条件having 子句的作用是筛选满足条件的组,即在分组之后过滤数据。having 子句的位置放在 group by 子句之后,常包含聚合函数。
例
3.group by 子句的 with rollup 选项
group by 子句将结果集分为若干个组,使用聚合函数可以对每个组内的数据进行信息统计,有时对各个组进行汇总计算时,需要在分组
之后再加上一条汇总记录,这个任务可以通过 with rollup 选项来实现。
例
二.连接查询
1.内连接查询:
种类:交叉连接、相等连接和自然连接
(1)交叉连接(笛卡尔积)
交叉连接(Cross Join),又称“笛卡尔连接(Cartesian Join)”或“叉乘(Product)”,它是所有类型的内连接的基础。
例:select *
from line
join vehicle on line.lineID=vehicle.lineI
(2)自然连接
自然连接 (Natural Join) 是一种特殊的内连接,它要求相连接的两张表的连接依据列必须是相同的字段(字段名相同,字段属性相同)。
语法:SELECT 字段名
FROM 表一 NATURAL JOIN 表二
[where 字段名]
2.多表连接:
(1)三表查询与两表查询类似:
三表查询:
SELECT 字段名
FROM 表1 JOIN 表2 ON 表1.字段名1=表2.字段名2_1 JOIN 表3 on表2.字段名2_2=表3.字段名3
[where 字段名]
例
两表查询:
SELECT 字段名
FROM 表1, 表2
WHERE 表1.字段名1=表2.字段名2 [and 其他条件]