oracle数据查询所有数列命令,Oracle 数据库所有查询命令

where t.commission_pct is null; --查询姓以B开头的员工 select t.*

from employees t

where t.last_name like 'B%';

--查询部门号为10或者20或者30的员工 select t.*

from employees t

where t.department_id in (10,20,30); --查询没有经理的所有员工的姓氏和职称 select t.last_name,t.job_id from employees t

where t.manager_id is null;

--显示员工名字中的第三个字母为“a”的所有员工的姓氏 select t.last_name from employees t

where t.last_name like '__a%';

4.逻辑运算

--找出部门10中所有的经理(MANAGER)和部门20中所有办事员(**_CLERK) (需用子查询,暂不做)

--找出有佣金的员工的都做什么工作(无重复) select distinct t.job_id from employees t

where t.commission_pct is not null;

--找出不收取佣金或收取的佣金高于100的员工 select *

from employees t

where t.commission_pct is null or t.salary*t.commission_pct>100;

--找出部门10中所有的经理(MANAGER)和部门20中所有办事员(CLERK)和既不是经理又不是办事员但其薪金大于或等于2000的所有员工的详细资料(需用子查询,暂不做) --显示员工姓氏中有“a”和“e”的所有员工的姓氏 select *

from employees t

where t.last_name like '%a%' or t.last_name like '%e%' --显示职务为销售代表(SA_REP)或仓库管理员(ST_CLERK)并且薪金不等于2500,3500,7000的所有员工的姓氏、职务和薪金 select t.last_name,t.job_id,t.salary from employees t

where (t.job_id='SA_REP' or t.job_id='ST_CLERK') and t.salary not in (2500,3500,7000);

--显示薪金不在5000-1200这个范围之间的所有员工的姓氏和薪金 select t.last_name,t.salary from employees t

where t.salary<5000 or t.salary>1200;

5.排序

--查询员工资料,按薪资升序排列 select t.*

from employees t order by t.salary;

--查询员工资料,在部门号从大到小的情况下按按薪资升序排列 select t.*

from employees t

order by t.department_id desc ,t.salary;

--按姓名的字母顺序显示部门20和部门50中的所有员工的姓氏和部门编号 select t.last_name , t.department_id from employees t

where t.department_id in(20,50) order by t.last_name;

--显示可以赚取佣金的所有员工的姓氏、薪金和佣金,按薪金和佣金的降序对数据进行排序 select t.last_name , t.salary,t.commission_pct from employees t

where t.commission_pct is not null

order by t.salary desc,t.commission_pct desc;

6.函数(已看到此处)

--1、显示当前日期 select sysdate from dual;

--2、显示当前日期,格式为****年**月**日,别名为hday select to_char(sysdate,'yyyy\年\月\日\

--3、编写一个查询,显示姓名以J、A或M开始的所有员工的姓氏(第一个字母大写,其余字母小写)和姓氏的长度,给每列一个合适的标签; select initcap(t.last_name) lname,length(t.last_name) len from employees t

where substr(upper(last_name),0,1) in('J','A','M');

--4、计算每位员工截止到当前时间入职的星期数,别名为weeks_worked。按聘用的星期数对结果进行排序。该星期数舍入到最接近的整数。同时显示员工的名字; select t.first_name,round((sysdate-t.hire_date)/7) as weeks_worked from employees t;

--5、计算每位员工截止到当前时间入职的月数,别名为months_worked。该星期数舍入到最接近的整数。同时显示员工的名字。

select t.first_name,round(months_between(sysdate,t.hire_date)) as months_worked from employees t;

--6、查询在1998年2月20日和1998年5月1日之间入职的员工的姓氏、职务标识和起始日期

select t.last_name,t.job_id,t.hire_date from employees t where t.hire_date between to_date('19980220','yyyyMMdd') and to_date('19980501','yyyyMMdd');

--7、创建一个查询。显示所有员工的姓氏和薪金。将薪金格式规定为15个字符长,左边填充$

select lpad(t.salary,15,'$') sal from employees t;

/*8、显示每位员工的姓氏、聘用日期和薪金复核日期,薪金复核日期是服务六个月之后的第一个星期一。将该列标记为review。 这一日期的显示格式类似于:“Monday,the Thirty-First of July,2000”*/

select t.last_name,t.hire_date,/*next_day(add_months(t.hire_date,6),2) from employees t*/ to_char(next_day(add_months(t.hire_date,6),2),'fmday,\\of \from employees t;

/*第八题to_char的第三个参数用于设置本次查询使用的国家和地区,ddspth中spth为后缀,表示Spelled, ordinal number*/

--9、显示员工的姓氏、聘用日期和该员工在星期几开始工作的。 select t.last_name,t.hire_date,to_char(t.hire_date,'DAY') as \开始\from employees t;

--10、计算员工的月收入(工资+佣金)

select t.salary+t.salary*nvl(t.commission_pct,0) from employees t;

--11、创建一个查询,使其显示员工的姓氏,并用星号指明他们的年薪。每个星号代表一千美元。按薪资降序排列数据。

select t.last_name||lpad(' ',trunc(t.salary/1000)+1,'*'),t.salary from employees t order by t.salary desc;

--12、创建一个查询。使其显示员工的姓氏和佣金额。如果某位员工不赚取佣金则显示“No Commission”,将该列标记为COMM

select t.last_name,nvl(to_char(t.salary*t.commission_pct,'999,999.99'),'No Commission') COMM from employees t

/*13、使用decode函数编写一个查询,使其按照以下数据根据JOB_ID列的值显示所有员工

的级别,同时显示员工的姓氏

job grade AD_PRES A ST_MAN B IT_PROG C SA_REP D ST_CLERK E 都不是 0 */

select t.last_name,t.job_id job, decode(t.job_id,'AD_PRES','A' ,'ST_MAN','B' ,'IT_PROG','C' ,'SA_REP','D' ,'ST_CLERK','E' ,'0'

) as grade from employees t;

--14、使用case语法重写一遍上题 select t.last_name,t.job_id job, case t.job_id

when 'AD_PRES'then 'A' when 'ST_MAN' then 'B' when 'IT_PROG' then 'C' when 'SA_REP' then 'D' when 'ST_CLERK' then 'E' else '0'

end

as grade from employees t;

************************************补充************************************ --1、显示当前日期,本月最后一天的日期,以及本月还剩多少天 SELECT SYSDATE,

LAST_DAY(SYSDATE) \

LAST_DAY(SYSDATE) - SYSDATE \ FROM DUAL;

--2、显示今年的第一天

select trunc(sysdate,'year') from dual; --3、显示本月的第一天

select trunc(sysdate,'month') from dual; --4、最近一个星期四是哪天(不含今日) SELECT NEXT_DAY(sysdate,5) FROM DUAL;

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值