技术帮
 

Oracle基本练习题1

本网站内容基本都是原创作品,未得到作者同意也欢迎转载
转载请注明出处:技术帮
说你呢,赶紧长按二维码,然后点击识别图中二维码

任何技术难题可进QQ群提问:【小崔说编程
对于提问的原则是:没有你不能问的,只有我不会答的

  查询所有员工的部门编号                          

      select deptno from emp;  

      select distinct deptno,ename from emp;

  查询所有的部门编号

      select deptno from dept;

  将查询的格式写为:ename工作是job,工资是sal

      select ename||'工作是'|| job ||',工资是'||sal from emp;

  将查询的格式写为:ename 工作是XX ,所属部门编号是XX,雇用时间是XX,工资是XX 

      select ename ||'工作是'|| job || ',所属部门编号是'|| deptno||',雇用时间是'|| hiredate||',工资是'|| sal from emp;

  查询工资超过2000的员工

      select * from emp where sal > 3000;

  查询工资小于2000的员工信息

      select * from emp where sal < 2000;

  查询工资是2000的员工信息

      select distinct * from emp where sal = 2000;

  查询工资不是2000的员工信息

      select distinct * from emp where sal != 2000;

  查询在部门编号是20 的员工信息

      select distinct * from emp where deptno = 20;

  查询员工编号是7876的员工信息

      select distinct * from emp where empno = 7876; 

  查询员工名字是SMITH的员工编号  去掉重复列

      select distinct empno from emp where ename='SMITH';   

  查询工资在800 到1200之间的员工姓名

      select distinct ename from emp where sal between 800 and 1200;

  查询部门编号在10-20之间的员工信息 去掉重复列

      select distinct * from emp where deptno between 10 and 20;

  查询部门编号在10,20的员工信息 去掉重复列

      select distinct * from emp where deptno in(10,20);

  查询员工名字中包含'H'的员工信息

      select * from emp where ename like '%H%';

  查询员工名字中以J开头,第三个字母是N的员工信息

      select * from emp where ename like 'J_N%';

  查询出所有没有奖金的员工的信息;

      select distinct * from emp where comm is null;

  查询出所有有奖金的员工的信息:

      select distinct * from emp where comm is not null;

  查询10部门并且薪水大于2000的员工

      select * from emp where deptno=10 and sal>2000;

  查询薪水小于1000并且没有奖金的员工信息

      select distinct * from emp where sal < 1000 and comm is null;

  查询薪水大于5000并且有奖金的员工信息

      select distinct * from emp where sal > 5000 and comm is not null;

  查询部门10或者部门20的员工信息

      select distinct * from emp where deptno=10 or deptno=20;

  查询薪水大于5000或者奖金大于3000的员工信息

      select distinct * from emp where sal > 5000 or comm > 3000;

  查询10部门或20部门中奖金大于300的员工信息

      select distinct * from emp where deptno in (10,20) and comm > 300; 

  查询10部门或20部门有没有‘SMITH’这个人

      select distinct * from emp where deptno in(10,20) and ename = 'SMITH';

  查找薪水不在800 - 2000之间的员工信息

      select distinct * from emp where sal not between 800 and 2000;

  查找不在部门10或20的员工信息

      select distinct * from emp where deptno not in (10,20);   

  查询所有员工信息,按工资的排序。(升序)

      select distinct * from emp Order by sal asc;

  查询所有员工信息,按工资的排序。(降序)

      select distinct * from emp Order by sal desc;

  查询公司中所有员工的薪资情况,并按照年薪降序排列。

      select distinct ename,sal,sal*12 income from emp order by income desc;

  查询公司中所有员工信息,并且部门编号按照降序排列,薪资按照升序排列。

      select distinct * from emp Order by deptno desc,sal asc;

  查询出所有20部门员工的信息并按照员工入职时间从早到晚。

      select distinct * from emp where deptno = 20 order by hiredate ;

  查询出所有员工的姓名,并且姓名小写

      select distinct lower(ename) from emp;

  把'HELLO'转换成小写

      select lower('HELLO') from dual;

  把'hello'转换成大写

      select upper('hello') from dual;         

  把'hello world'中每个单词的首字母大写

      select initcap('hello world') from dual;

  把'hello'和'world'连接起来

      select concat('hello','world') from dual;

  将'hello world'从第三个字符开始,截取3个字符

      select substr('hello world',3,3) from dual;  

  将'hello'左填充为10位

      select lpad('hello',10,'#') from dual;  

  将'hello'右填充为10位

      select rpad('hello',12,'%') from dual; 

  去掉'   hello  '中的空格

      select trim('   hello  ') from dual; 

  将'hello'中的首字符'h'去掉          

      select trim('h' from 'hello') from dual; 

  将'hello'中首尾字符'h'去掉 

      select trim('h' from 'hehllh') from dual; 

  将'hello'中的'l'用'm'替换

      select replace('hello','l','m') from dual; 

  求字符串'hello'的长度

      select length('hello') from dual;

  将234.4557小数点后取三位,并四舍五入

      select round(234.4557,3) from dual;

  将234.4557小数点后取三位,但不四舍五入

      select trunc(234.4557,3) from dual;

  求10%3

      select mod(10,3) from dual;

  求-22.3的绝对值

      select abs(-22.3) from dual;

  获得系统当前时间

      select sysdate from dual;

  计算员工工作的月数

      select ename,months_between(sysdate,hiredate) from emp;

  如果按三个月的试用期算,那么计算查询所有员工转正的时间

      select ename,hiredate,add_months(hiredate,3) from emp;

  获得从系统当前日期开始,下个星期一的日期

      select sysdate,next_day(sysdate,'星期一') from dual;

  获得系统当月最后一天的日期

      select sysdate,last_day(sysdate) from dual;