表连接函数:
内连接(小频率):只关联有关联的数据,即拼接的每个表都要有某人
A inner join B on A.id=B.id
只有A与B中同时存在的id号才会被查询到
外连接:左表全查 右表查出对应数据 如果不对应 null值显示
1.左连接 left join
A left join B on A.id=B.id
只要A中存在的id,都会被查询到;
A中存在B中不存在的id也会被查询到,但B因为没有对应的id,所以B的其他字段为null值
(一旦使用外连接,必须一直使用外连接)
2.右连接 right join
A right join B on A.id=B.id
与左连接相反,基本不用;
查询时连接表注意事项:
1.一旦使用left join 不能再使用inner join
2.一旦使用left join,再使用where条件也会导致
left join失效,可在连接条件on后and其他条件代替
全连接:
1.union
特点:
1>通过union连接的SQL上下表查询出来的列的数量必须保持一致,
上下表的列的类型也必须保持一致
2>使用union 时,完全相等的行,将会被合并,
由于合并比较耗时,一般不直接使用 union 进行合并,而是通常采用union all 进行合并;
3>被union 连接的sql 子句,单个子句中不用写order by ,
因为不会有排序的效果。但可以对最终的结果集进行排序
使用:
(select colum1,colum2...columN from A ) union
(select colum1,colum2...columN from B )
2.union all
特点:
会保留那些重复的数据;
使用:
(select colum1,colum2...columN from A ) union all
(select colum1,colum2...columN from B )
聚合函数
sum 求和
avg 平均值
max 最大值
min 最小值
count(*) count(变量) 求数量
注:在查询中若使用了聚合函数,前面的变量都要用group by分组
order by 索引排序(asc默认值正序/desc倒序)
group by 变量1...n 分组依据某些变量来分组
(1)Group by语法可以根据给定数据列的每个成员对查询结果进行
分组,这里的分组就是将一个“数据集合”划分成若干个“小块”,
然后对这些“小块”进行数据处理。最终得到按一个分组汇总的结果表。
(2)SELECT子句后面的字段一般是聚合函数或者是Group by 后面的。
(3)Group by 一般和sum、max、avg等聚合函数一起使用。
(4)一般我们在Group by子句后面增加一个HAVING子句,来获得满足条件
的分组的返回结果。HAVING可对限定条件进行分组, HAVING子句后
可以通过一个或多个用AND和OR作为连接条件。
dateformat 将时间转换成指定格式
变量 in(值1,值2,值n) 查询变量中包含某值
substring(截取变量,开始第x个字符,结束第y个字符) 截取变量字符
可缩写:substr(截取变量,开始第x个字符,结束第y个字符)
replace(变量,‘aa’,‘bbb’) 将变量中的aa替换成bbb
ifnull(变量,'N/A') 将变量中的控制替换成‘N/A’或其他字符串
在Oracle中:nvl(变量,'N/A')