从默认表EMP里面调取各种数据
SELECT * FROM EMP
select '['||trim(ename)||']' from emp;
select * from EMP where trim(ename) = 'SMITH';
SELECT * FROM emp
--Instr 第二个字符串出现位置的索引
select Instr('Hello World','or') a from dual
select * from dual
--Substr 字符串处理,1表示起始索引位置,2表示获取字符串的长度
select substr('abc',1,2) from dual
--Lpad 10表示获取的字符串长度,*表示左侧添加的字符(重复添加至需要长度)
select Lpad('abc',10,'*') from dual
--Rpad
select Rpad('abc',10,'*') from dual
--replace 替换字符
Select replace(ename,'A','a') from emp
--Round 四舍五入
select round(477,-2) from dual
select round(412.313,-2) from dual
--Mod 取余
select mod(11,8) from dual
--TRUNC 截断
select TRUNC(49.66666,0) from dual
----日期使用
--sysdate 获取本机时间
select sysdate from dual
--MONTHS_BETWEEN
select * from emp
select * from emp order by hiredate desc
select hiredate from emp where months_between ('1987-05-23','1980-12-17')
select months_between ('01-5月 -81','23-1月 -82') from emp
select months_between ('01-09-95','11-02-94') from dual
select months_between (sysdate,hiredate) from emp
--ADD_MONTHS
select add_months (hiredate,8),hiredate from emp
--NEXT_DAY
select next_day (to_date('2017-6-25','yyyy-mm-dd'),1) from DUAL
--LAST_DAY
select last_day (sysdate) from emp
--To_char,To_date,To_number
select to_char(hiredate) from emp
select to_date(hiredate) from emp
select to_number('12')+to_number('14') from dual
select to_char('sunday') from dual
--分组函数
select * from emp order by sal desc
select avg(sal) from emp
select sum(comm) from emp
select count(*) from emp
--练习
select * from emp
--找出每个月倒数第三天受雇的员工
select * from emp where hiredate = last_day(hiredate)-2
--找出 25 年前雇的员工
select * from emp where ADD_MONTHS(sysdate,-25*12) <=hiredate
select * from emp where to_date(sysdate,'yyyy') = to_date(hiredate,'yyyy')+25
--所有员工名字前加上 Dear ,并且名字首字母大写
select 'Dear'||initcap(ename) from emp
--找出姓名为 5 个字母的员工
select ename from emp where length(ename) = 5
select ename from emp where ename like '_____'
--找出姓名中不带 R 这个字母的员工
select ename from emp where ename not like '%R%'
--显示所有员工的姓名的第一个字
select substr(trim(ename),1,1) from emp
--显示所有员工,按名字降序排列,若相同,则按工资升序排序
select * from (select * from emp order by sal asc) order by trim(ename) desc
--假设一个月为 30 天,找出所有员工的日薪,不计小数
select round(sal/30,0) from emp
--找到 2 月份受雇的员工
select * from emp
select * from emp where to_char(hiredate,'fmmm') = '2'
--列出员工加入公司的天数(四舍五入)
select round(sysdate-hiredate,0) from emp