select基本查询语句
使用oracle中scott用户中的表进行的基本查询语句
select * from emp;
--列出职位为MANAGER的员工的编号,姓名--
select empno,ename from emp where job = 'MANAGER';
--like模糊查询我也不懂
SELECT * FROM EMP WHERE ENAME LIKE'%*_%'ESCAPE'*';
--找出奖金高于工资的员工
select * from emp where comm>sal;
--找出每个员工工资和奖金的总和
select sal+comm,ename from emp;
--找出部门10中的经理和部门20中的普通员工
select * from emp where
 (deptno = 10 and job = 'MANAGER')or (deptno = 20 and job ='CLERK' );
--找出部门10中既不是经理也不是普通员工,而且工资大于等于2000的员工
select * from emp where
 deptno = 10 and job not in('MANAGER','CLERK')and sal >= 2000;
 --找出有奖金的员工的不同工作
 select distinct job from emp where comm is not null and comm>0;
 --找出没有奖金或者奖金低于500的员工
 select * from emp where comm is null or comm<500;
 --显示雇员的姓名,根据其服务年限,将最老的雇员排在前面
 select ename from emp order by hiredate;
 --upper变成大写
 select Upper('adcde') from dual;
 select * from emp where ename = upper('smith');
 --lower变成小写
 select lower('ADGDFD') from dual;
 --initcap首字母变大写
 select initcap(ename) from emp;
 -- concat连接两个字符
 select concat ('a','b')from dual;
 select 'a'||'b' from dual;
 --substr截取字符串
 select substr ('abcde',length('abced')-2) from dual;
 --从某位开始截取字符,负值代表末尾开始数,正值代表从首尾开始数
 select substr ('abcdef',3) from dual;
 --length 获取某个属性的长度
 select length(ename) from emp;
 --replace 替换 将ename列中名字所以后名字中的A换成a
 select replace (ename,'A','a')from emp;
 --instr 得到指定字符在原有中字符中的位置
 select instr('hello world','or')from dual ;
 --lpad左侧填充(指定的长度内用指定字符填充以后的字符)
 select lpad ('sminth',11,'*')from dual
 --rpad右侧填充
 SELECT RPAD('king',13,'*') from dual;
--过滤首尾的空格
SELECT TRIM(' hello world ') from dual
----------------------------------------------------
--数值函数
--round四舍五入
select round(413,-2)from dual;
select round (446,-2)from dual;
select round (450,-2)from dual; --从个位开始向前两位进行四舍五入
select round (412.313,2)from dual;
select round (421.353,2)from dual; --小数点后保留两位进行四舍五入
--trunc小数点前两位四舍五入
select trunc(412.13,-2)from dual;
select trunc (412.131,2)from dual;
--mod取余前面的数除后面数取余
select mod(412.323,3) from dual
select mod(10,3)from dual;
------------------------------------
--日期函数
--month_between()
select Months_between(sysdate,hiredate)from emp;
--add_months()增加指定个月
select add_months(sysdate,1)from dual;
select add_months(sysdate ,-2)from dual;
--next_day接下来的指定某个星期几的日期
select next_day(sysdate,'星期一') from dual;
select next_day(sysdate,'星期二') from dual;
--last_day当前日期月份的最后一天
select last_day(sysdate) from dual;
------------------------------------------
--转换函数
--to_char
--获得当前年份
select to_char(sysdate,'yyyy') from dual;
--以当前格式显示当前日期
select to_char(sysdate,'fmyyyy-mm-dd')from dual;
select to_char(sysdate,'dd-mm-yyyy') from dual;
select to_char(sysdate,'mm-dd-yyyy')from dual;
select to_char(sal,'l999,999,999')from emp;--返回指定格式的字符
select to_char(sysdate,'D')from dual;--显示当前日期是本周的第几天
--to_number
select to_number('13')+to_number('15')from dual;--将两个字符的相加
select to_char('13')+to_number('15')from dual;
select to_char('3')*to_number('4')from dual;
--to_date指定格式输出日期
select to_date('20090210','yyyymmdd')from dual;
-----------------------------------
----通用函数
--nvl()
-在指定的属性列中如果有值就返回本值,如果没有就返回赋予的值即0,括号内只能写数字
select nvl(comm,0)from emp;
select nvl(comm,11)from emp;
--nvl2()表达式1和2比较,如果值相同就返回表达式3的值,如果不相等就返回表达式2的值。total返回值得列名
select empno,ename,sal,comm,nvl2(comm,sal+comm,sal)total from emp;