今天学习了Oracle的高级查询,再学习高级之前,我们必须知道表于表之间的关系:表于表之间的关系有:一对一、一对多、多对多3种。
1、 单行函数
这些函数仅对单个行进行运算,并且每行返回一个结果。
它有以下特征:
操作数据对象
接受参数返回一个结果
只对一行进行变换
每行返回一个结果
可以转换数据类型
可以嵌套
参数可以是一列或一个值
2、 字符函数:
主要指参数类型是字符型,不同函数返回值可能是字符型或数字类型。
大小写控制函数:
LOWER(列名|表达式):将大写或大小写混合的字符转换成小写
UPPER(列名|表达式) :将小写或大小写混合的字符转换成大写
INITCAP(列名|表达式) :将每个单词的第一个字母转换成大写,其余的字母都转换成小写
字符控制函数:
CONCAT:连接两个值,等同于|| 格式:CONCAT(column1|expression1,column2|expression2)
SUBSTR:返回第一个参数中从n1字符开始长度为n2的子串,如果n1是负值,表示从后向前数的abs(n1)位,如果n2省略,取n1之后的所有字符 格式:SUBSTR(column |expression,n1[,n2])
LENGTH:取字符长度 格式:LENGTH(column| expression)
INSTR:返回s1中,子串s2从n1开始,第n2次出现的位置。n1,n2默认值为1 格式:INSTR(s1,s2,[,n1],[n2])
LPAD:返回s1被s2从左面填充到n1长度。 格式:LPAD(s1,n1,s2)
RPAD:返回s1被s2从右面填充到n1长度。 格式:RPAD(s1,n1,s2)
TRIM:去除字符串头部或尾部(头尾)的字符 格式:TRIM(leading| trailing | both, trim_character From trim_source)
数字函数:
1、ROUND(列名|表达式, n):将列或表达式所表示的数值四舍五入到小数点后的第n位。
2、TRUNC(列名|表达式,n):将列或表达式所表示的数值截取到小数点后的第n位。
3、MOD(m,n):取m除以n后得到的余数。
日期函数:
常用的日期运算如下:
1、日期类型列或表达式可以加减数字,功能是在该日期上加减对应的天数。如:’10-AUG-06’+15结果是’25-AUG-06’。
2、日期类型列或表达式之间可以进行减操作,功能是计算两个日期之间间隔了多少天。如:’10-AUG-06’-‘4-AUG-06’结果四舍五入后是6天。
3、如果需要加减相应小时或分钟,可以使用n/24来实现。
上边是一些比较常用的函数,还有些不常用的函数就不举例了
分组函数:
分组函数作用于一组数据,并对一组数据返回一个值.
常见的分组函数有:
函数名称 函数描述
Count 返回找到的记录数
Min 返回一个数字列或计算列的最小值
Max 返回一个数字列或计算列的最大值
Sum 返回一个数字列或计算列总和
avg 返回一个数字列或计算列的平均值
select count(*) from emp;
//返回comm不为空的总记录数
select count(comm) from emp;
注意:组函数忽略空值。
//返回所有员工的平均工资
select avg(nvl(sal,0)) fromemp;
//返回员工编号最小值
select min(empno) from emp;
//返回员工工资最大值
select max(sal) from emp;
//求该月本公司发出的工资总额
select sum(comm)+sum(sal) from emp;
还学了多表查询:
笛卡尔集会在下面条件下产生:
省略连接条件
连接条件无效
所有表中的所有行互相连接
为了避免笛卡尔集, 可以在WHERE 加入有效的连接条件。