oracle数据库作业

来源:互联网 发布:java jasperreports 编辑:程序博客网 时间:2024/05/16 08:03

我们oracle老师留了一些作业,然后百度不到,所以我来给学弟学妹们提供个方便,我真棒~


在scott用户的emp表下

1.查询工资最高的雇员名字和工资

select ename,sal from emp where sal=(select max(sal) from emp);


2.查询工资比SCOTT高或者雇佣时间比SCOTT早的雇员的编号和名字

select empno,ename 

   from emp 

   where sal>(select sal from emp where ename = 'SCOTT') or

   hiredate>(select hiredate from emp where ename = 'SCOTT');


3.SCOTT的职务改为MANAGER,工资改为4000

update emp set job = 'manager',sal = 4000 where ename = 'SCOTT';


4.统计人数小于4的部门的平均工资

 select avg(sal) from emp group by deptno having count(deptno)<4;

解释一下having,按条件过滤,比如说统计部门平均工资大于2000的就是:

select avg(sal) from emp group by deptno having avg(sal)>2000;


5.查询名字A开头的员工相关信息

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

(要注意a要大写,表里的名字是区分大小写的,不像oracle自己的语句不区分大小写,%是通配符,查的是A开头后面不管字符多少个都行的员工名字)


6.字符串连接相关的题目

select ename || ' is ' || job from emp;

这句中的||可以连接前后的字符串,输出结果就是 SCOTT is ANALYST 这种样子,第一个ename的查询结果后面加上 is 再加上job的查询结果

所以||不是逻辑运算符“or”


7.查询每个部门的最高工资,最低工资,平均工资,工资总和

select avg(sal),sum(sal),max(sal),min(sal) from emp group by deptno;


据字典相关的作业:

8.查询当前数据库中所有用户的名字。

conn sys/syspwd @orcl as sysdba

select username from dba_users;


9.用spool命令将输出定位到c:\emp.txt

输出emp表中的所有内容到emp.txt

spool C:/emp.txt

conn scott/tiger @orcl

select * from emp;


10.在系统动态视图中查询数据库的相关信息。

select * from v$database;


11.在系统数据字典中查询表空间users的相关信息。

conn sys/syspwd @orcl as sysdba

select * from dba_tablespaces where tablespace_name='USERS';


12.以scott用户身份登录sqlplus,查询该用户所具有角色。

conn scott/tiger@orcl

select * from session_roles;


用SCOTT用户的部门表dept和雇员表emp,写出完成如下操作的SQL语句:

  1. 列出所有员工的姓名及其直接上司的姓名;

  2. 列出在“IT”部门工作的员工姓名;

  3. 列出工资高于公司平均工资的所有雇员的姓名、编号及部门号;

  4. 列出在每个部门的员工数量、平均工资;

  5. 列出所有部门的详细信息和部门人数;

  6. 列出各种职位的最低工资;

  7. 列出部门经理中工资最低的那个经理的姓名、工资和部门号;

  8. 列出公司里工资最高的五位员工的基本信息。

答:

1.select e1.ename,e2.ename from emp e1,emp e2 where e1.empno=e2.mgr;

2.select ename from emp,dept where dept.deptno=emp.deptno and dept.dname='IT'

3.select ename,empno,deptno from emp where sal>(select avg(sal) from emp )

4.select avg(sal),count(*) from emp group by deptno;

5.select * from dept a left join (select deptno,count(*) from emp group by deptno) b on a.deptno=b.deptno ;

6.select min(sal) from emp group by job;

7.select ename,sal,deptno from emp where sal=(select min(sal) from emp where job='MANAGER')

8.select ename,job,mgr,hiredate,sal,comm,deptno,rownum from (select  ename,job,mgr,hiredate,sal,c

omm,deptno from emp order by sal desc)where rownum<=5;



今天也是收获满满的一天~

0 0
原创粉丝点击