一,基本操作语句
select * from emp where comm is not null;
select * from emp where not (sal>1500 and comm is not null);
select * from emp where sal between 1500 and 3000;
//日期要加单引号
select * from emp where hiredate between '1-1月 -81' and '31-12月 -81';
在Oracle中区分大小写
//in用在数字范围上
select * from emp where sal in( 1300,1400,1500);
//in也能用在字符串集合中
select * from emp ename in('SMITH','ALLEN','KING');
select * from emp where ename like '_M%';
select * from emp where deptno=10 order by sal desc,hiredate asc;
二,ORACLE数据库函数
字符函数:接受字符输入并且返回字符或数值
数值函数:接受数值输入并返回数值
日期函数:对日期型数据进行操作
转换函数:从一种数据类型转换为另一种数据类型
通用函数:NVL函数,DECODE函数
2.1 字符函数
2.1.1将小写字母变为大写字母
select * from emp where ename=upper('smith');
2.1.2将一个字符串变为小写字母表示
select * from emp where ename=lower('SMITH');
2.1.3将单词第一个字母大写
select * from emp where ename=initcap('smith');
select initcap('smith') from dual;
select initcap(ename) from dual;
2.1.4字符串除了可以使用“||”连接之外,还可以使用concat()函数进行连接操作
select concat('hello','world') from dual;
2.1.5字符串操作
字符串截取:substr()
字符串长度:length()
内容替换:replace()
select substr('hello',1,3) from dual;
select length('hello') from dual;
select replace('hello','l','x') from dual;
Oracle中substr()函数的截取,从0或从1开始效果是一样的
oracle的substr()函数可以倒着截取数据
select ename,substr(ename,-3,3) from emp;
2.2数值函数
2.2.1四舍五入
select round(18.63) from dual;
//四舍五入保留两位小数
select round(79.635,2) from dual;
//负数位则表示对整数四舍五入
select round(7986.356,-2) from dual;
2.2.2截取数字不进行四舍五入
trunc()与round()不同的是,在trunc()操作中,不会保留任何的小数,而且小数点也不会执行四舍五入的操作。
select trunc(78.65) from dual;
select trunc(79.865,2) from dual;
select trunc(789.654,-2) from dual;
2.2.3取余
select mod(10,3) from dual;
3.3日期函数
日期能进行加减操作
3.3.1当前日期
select sysdate from dual;
//求出星期
select empno,ename,round((sysdate-hiredate)/7) from emp;
MONTHS_BETWEEN():求出给定日期范围的月数
ADD_MONTHS():在指定日期上加上指定的月数,求出之后的日期
NEXT_DAY():下一个的今天是哪个日期
LAST_DAY():求出给定日期的最后一天日期
select empno,ename,months_between(sysdate,hiredate) from emp;
select add_months(sysdate,4) from dual;
select next_day(sysdate,'星期一') from dual;
select last_day(sysdate) from dual;
4.1转换函数
TO_CHAR:转换成字符串
TO_NUMBER:转换成数字
TO_DATE:转换成日期
4.1.1 TO_CHAR
to_char()可以用于数字和日期
select empno,ename,to_char(hiredate,'yyyy') year,to_char(hiredate,'mm') month,to_char(hiredate,'dd') day from emp;
select empno,ename,to_char(hiredate,'yyyy-mm-dd') from emp;
//在yyyy-mm-dd中加上fm去掉前导0
select empno,ename,to_char(hiredate,'fmyyyy-mm-dd') from emp;
//在此'999,999'表示的是格式,每个9表示一位数字
select empno,ename,to_char(sal,'999,999') from emp;
//以美元的形式显示钱数
select empno,ename,to_char(sal,'$999,999') from emp;
//以本地的形式显示钱数
select empno,ename,to_char(sal,'l999,999') from emp;
4.2 TO_NUMBER
select to_number('123')+to_number('123') from dual;
4.3 TO_DATE
select to_date('2009-02-16','yyyy-mm-dd') from dual;
5.1 通用函数
5.1.1 NVL函数
将一个指定的null值变为指定的内容
select empno,ename,nvl(comm,0),(sal+nvl(comm,0))*12 income from emp;
5.1.2 DECODE函数
类似于IF...ELSE IF...ELSE语句
select decode(1,1,'内容是1',2,'内容是2',3,'内容是3') from dual;
如果