一.单行函数字符函数
(1).LOWER() 字符小写
(2).UPPER() 字符大写
(3).INITCAP() 首字符大写
(4).CONCAT() 字符串连接
(5).SUBSTR() 字符串截取
(6).LENGTH() 返回字符串长度
(7).INSTR() 返回字符串的位置
(8).LPAD() 左对齐
(9).RPAD() 右对齐
(10).TRIM() 去除字符串首尾的字符
(11).REPLACE() 替换字符串中所有的字符
2.数字函数
(1).round() 四舍五入
(2).trunc() 截取
(3).mod() 取余
3.日期函数
(1).sysdate 返回当前日期和时间
(2).months_between() 两个日期相差的月数
(3).add_months() 向指定日期中加上若干月数
(4).next_day() 指定日期的下一个日期
(5).last_day() 本月的最后一天
(6).round() 日期四舍五入
(7).trunc() 日期截断
4.转换函数
(1).to_char 转换为字符
(2).to_date 转换为日期
(3).to_number 转换为数值
5.通用函数
(1).nvl() 将控制转换为一个已知的值,可以使用的数据类型有日期,字符,数字
(2).nvl2()
(3).nullif()
(4).coalesce()
二.多行函数(分组函数)
分组函数作用于一组数据,并对一组数据返回一个值
分组函数忽略空值,NVL函数使分组函数无法忽略空值,例如avg(nvl(expr1,expr2))
(1).avg() 求平均值
(2).count() 求记录总数
a.count(expr) 返回expr不为空的记录总数
b.count(*) 返回表中记录总数
c.count(distinct expr) 返回expr非空且不重复的记录总数
(3).max() 求最大值
(4).min() 求最小值
(5).stddev()
(6).sum() 求和值
可以使用group by子句将表中的数据分成若干组,在select列表中所有未包含在组函数中的列都应该包含在group by 子句中(所有包含于select列表中而未包含于组函数中的列都应该包含在group by子句中),包含在group by 子句中的列不必包含在select 列表中
不能在where子句中使用分组函数,可以在having子句中使用分组函数
group by. . having不分前后顺序
三.条件表达式
(1).case ...when ...then
when ... then
else ...
end
(2).decode(expression,search1,result1[,search2,result2...])
四.多表查询笛卡尔积 查询中省略连接条件,表行数相乘为返回结果
多表查询有相同列时,列名之前需加入表前缀
内连接
a.等值连接
b.连接N个表至少需要N-1个连接条件
c.非等值连接
4.外连接
a.使用外连接可以查询不满足连接条件的数据
b.外连接的符号是(+), 理解"(+)"的位置:以左外连接为例,因为左表需要返回更多的记录, 右表就需要"加上"更多的记录,所以在右表的连接条件上"(+)"
两边都加上"(+)"符号,会发生语法错误
这种语法为oracle所独有,不能在其他数据库中使用,其他数据库需使用SQL 1999语法标准
c.左外连接
d.右外连接
e.全外连接
5.自连接
五.子查询子查询要包含在括号内
讲子查询放在比较条件的右侧
单行 操作符对应单行子查询,多行操作符对应多行子查询
单行子查询操作符:>
<
>=
<=
<>
=
多行子查询操作符