数据库基本查询语句

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;

 

posted @ 2017-07-13 19:10  王耀辉1  阅读(361)  评论(0编辑  收藏  举报