1.lower(列名|表达式)——把字符转换成小写
upper(列名|表达式)——把字符转换成大写
initcap(列名|表达式)——把每个字的头一个字符转换成大写其与转换成小写
2.中文操作系统,而数据库的字符集为美国英语,为了使日期数据显示正确,应该输入:
alter session set nls_date_language=’AMERICAN’;
3.系统日期函数sysdate
select sysdate from dual;(dual表是个虚表,其中只有一列,用来构成select语法规则)
select sysdate-10 from dual;
select to_date(‘15-MAY-15’)-sysdate from dual;(to_date 用来把字符串转换成日期型数据)
5.常用日期函数
months_between(日期1,日期2):返回日期1和日期2 之间的月数
add_months(日期,n):把n个月加到日期上
next_day(日期,字符串):用于返回下一个由字符串指定的日期:select next_day(‘10-MAY-02’,’MONDAY’) from dual;
last_day(日期):返回该日期所在月的最后一天
6.数据类型的隐式转换(自动数据类型转换)——不建议使用,很难看懂
a.赋值语句中:
将变长字符型(VARCHAR2)或定长字符型(CHAR)转换成数字型(NUMBER);
将变长字符型(VARCHAR2)或定长字符型(CHAR)转换成日期型(DATE);
将数字型转(NUMBER)换成变长字符型(VARCHAR2);
将日期型(DATE)转换成变长字符型(VARCHAR2);
b.表达式中:
将变长字符型(VARCHAR2)或定长字符型(CHAR)转换成数字型(NUMBER);
将变长字符型(VARCHAR2)或定长字符型(CHAR)转换成日期型(DATE);
*在将字符型数据转换成数字型时,要保证字符型数据为有效的数,否则转换不会成功。
*在将字符型数据转换成日期型时,要保证字符型数据为有效的日期,否则转换无法进行
*数字型的数据和日期型的数据不能互相转换
7.数据类型的显式转换
*数字型的数据和日期型的数据不能互相转换
to_number
to_char(‘日期’,’fmd’)——to_char(hiredate,’DD/MM/YYYY’)
to_date
8.只要在一个表达式中包含任何NULL,该表达式的值就为NULL
select * from emp where comm is null;
在升序排序中NULL值排在最后
9.nvl(表达式1,表达式2)
空值转换函数,如果表达式1为空值,nvl将返回表达式2的值,否则返回表达式1的值
select ename “name”,sal+nvl(comm,0) “income”,job from emp where job not like ‘sales%’ order by job;
10.decode:逻辑判断语句(分支语句)
select ename “name”,job,sal “salary”,decode(job,’SALESMAN’,sal*1.15,
‘CLERK’sal*1.20,
‘ANALYST’,sal*1.25) “New Salary”
from emp order by job;
11.分组函数(对一批数据进行操作之后返回一个值,这批数据可能是整个表,也可能是按照某种条件把该表分成的组)
count(*):返回表中所有的行,包括空行和重复行
avg():平均值
sum():总值
max()
min()
*如果一个查询中使用了分组函数,则任何不在分组函数中的列或表达式必须在group by子句中
select job,avg(sal) from emp group by job;(正确)
select job,avg(sal) from emp;(错误)
12.Oracle中where子句不能用于限制分组函数,可以使用having子句来限制分组函数
select job,avg(sal) from emp where avg(sal)>1500 group by job;(错误)
select job,avg(sal) from emp group by job having avg(sal)>1500;(正确)
13.分组函数的空值的处理
avg(comm):不包括comm为空值的记录行