Union(合并,联合结果集)
简单的结果集联合:
1. select FNumber,FName,FAge from T_Employee
union
select FIdCardNumber,FName,FAge from T_TempEmployee
2. select FNumber,FName,FAge,FDepartment from T_Employee
union
selectFIdCardNumber,FName,FAge,’无部门’ from T_TempEmployee
基本原则:每个结果集必须有相同的列数;每个结果集的列必须类型相容。
如2所示:如果表T_Employee中有FDepartment字段,表T_TempEmployee中没有,
在使用union时一定要在查询表T_TempEmployee时补上一个相同类型的字段。(保证每个结果集必须有相同的列数)
UNION ALL
select FName from T_Employee
union all
select FName from T_TempEmployee
使用union时两个结果集中如果有完全重复的数据,则自动合并为一条。使用union all则不会,会显示全部数据。
union all查询效率比union高。因为union要进行重复值扫描判断。
//查询员工的最低年龄和最高年龄,临时工和正式员工分别查询:
select ‘正式员工最高年龄’,MAX(FAge) from T_Employee
union all
select ‘正式员工最低年龄’,MIN(FAge) from T_Employee
union all
select ‘临时工最高年龄’,MAX(FAge) from T_TempEmployee
union all
select ‘临时工最低年龄’,MIN(FAge) from T_TempEmployee
//查询每位正式员工的信息,包括工号、工资,并且在最后一行加上所有员工工资合计:
select FNumber,FSalary from T_Employee
union
select ‘工资合计’,SUM(FSalary) from T_Employee
数学函数
ABS():求绝对值
CEILING():舍入到最大整数。3.33将被舍入为4、-3.61将被舍入为-3
FLOOR():舍入到最小整数。3.33—>3、2.89—>2
ROUND():四舍五入。舍入到“离我半径最近的数”。Round为“半径”。
Round(-3.61,0)—> -4.00 Round(3.1425,2)—>3.1400 (2表示小数点后2位有效数字)
字符串函数