数据库练习

2012-03-01  王肖璐 

1. 列出至少有一个雇员的所有部门。

select * from dept

  where deptno in

  (select deptno from emp group by deptno having count(*)>1);

2. 列出薪金比“SMITH”多的所有雇员。

select * from emp

  where sal>(select sal from emp where ename='SMITH');

3. 列出所有雇员的姓名及其上级的姓名。

select a.ename,b.ename from emp a,emp b

  where a.mgr=b.empno;

4. 列出入职日期早于其直接上级的所有雇员。

select ename from emp a where

  hiredate<(select hiredate from emp where empno=a.mgr);

5. 列出部门名称和这些部门的雇员,同时列出那些没有雇员的部门。

select dname,ename from dept a,emp b

  where a.deptno = b.deptno(+);

6. 列出所有“CLERK”(办事员)的姓名及其部门名称。

select dname,ename from dept a,emp b

  where a.deptno=b.deptno and job='CLERK';

7. 列出各种类别的最低薪金,以使最低薪金大于 1500

update emp set sal=1501

where empno in(

select empno from emp

where (job,sal)in(

select job,min(sal) from emp group by job having min(sal)<1500));

8. 列出从事“SALES”(销售)工作的雇员的姓名,假定不知道销售部的部门编号。

select ename from emp where deptno=(select deptno from dept where dname='SALES');

9. 列出薪金高于公司平均水平的所有雇员。

select ename from emp where sal>(select avg(sal) from emp);

10. 列出与“SCOTT”从事相同工作的所有雇员。

select * from emp where job=(select job from emp where ename='SCOTT');

11. 列出薪金等于给予在部门 30 工作的雇员的薪金的雇员的所有姓名和薪金。

select * from emp where sal in

  (select sal from emp where deptno=30);

12. 列出薪金高于在部门 30 工作的所有雇员的薪金的雇员的姓名和薪金。

select * from emp where sal>all

  (select sal from emp where deptno=30);

13. 列出在每个部门工作的雇员的数量以及其他信息。

select deptno,count(*) from emp group by deptno;

14. 列出所有雇员的雇员名称、部门名称和薪金。

select ename,dname,sal from emp,dept where emp.deptno=dept.deptno;

15. 列出从事同一种工作但属于不同部门的雇员的不同组合。

Select a.ename,b.ename,a.job ,a.deptno,b.deptno

From emp a,emp b

Where a.job=b.job and a.deptno!=b.deptno

16. 列出分配有雇员数量的所有部门的详细信息,即使是分配有 0 个雇员。

Select dept.deptno,dname,loc,count(empno)

From dept,emp

Where dept.deptno=emp.deptno(+)

Group by dept.deptno,dname,loc

Order by dept.deptno;

17. 列出各种类别工作的最低收入(含津贴)。

select job,min(sal+nvl(comm,0)) from emp group by job;

18. 列出各个部门的 MANAGER(经理)的最低薪金。

 select deptno,min(sal) from emp where job='MANAGER'group by deptno ;

19. 列出按计算的字段排序的所有雇员的年薪。

select ename,sal*12 年薪 from emp order by年薪;

20. 列出薪金水平处于第四位的雇员。

Select * from

(select rownum num,empno from emp order by sal)

Where num=4;

 

查看所有用户名字

select username from all_users;

查看所有用户名字及状态

select username account_status from dba_users;

查看某个用户的状态

select username account_status from dba_users where username='SCOTT‘

修改SCOTT的状态

alter user scott account unlock

因为如果不修改密码的话是不允许访问

alter user scott identified by tiger

退出: SQL 提示符下键入 Exit

184°/1843 人阅读/0 条评论 发表评论

登录 后发表评论
王肖璐
访客 1783
王肖璐 的其他博文 更多