当前位置:  数据库>oracle

Oracle习题带答案

    来源: 互联网  发布时间:2017-04-29

    本文导语: 题目:已知公司的员工表EMP(EID, ENAME, BDATE, SEX, CITY), 部门表DEPT(DID, DNAME, DCITY), 工作表WORK(EID,DID,STARTDATE,SALARY)。各个字段说明如下: EID——员工编号,最多6个字符。例如A00001(主键) ENAME——员工姓名,最多10个字符。...

题目:已知公司的员工表EMP(EID, ENAME, BDATE, SEX, CITY),

部门表DEPT(DID, DNAME, DCITY),

工作表WORK(EID,DID,STARTDATE,SALARY)。各个字段说明如下:

EID——员工编号,最多6个字符。例如A00001(主键)

ENAME——员工姓名,最多10个字符。例如SMITH

BDATE——出生日期,日期型

SEX——员工性别,单个字符。F或者M

CITY——员工居住的城市,最多20个字符。例如:上海

DID——部门编号,最多3个字符。例如 A01 (主键)

DNAME——部门名称,最多20个字符。例如:研发部门

DCITY——部门所在的城市,最多20个字符。例如:上海

STARTDATE——员工到部门上班的日期,日期型

SALARY——员工的工资。整型。

请使用Oracle的sql*plus 完成下列的操作

1、 创建表EMP,DEPT,WORK,并定义表的主键和外键。

2、 向每个表中插入适当的数据。例如:插入三条部门的数据,分别为每个部门插入两条员工数据

3、 查询“研发”部门的所有员工的基本信息

4、 查询拥有最多的员工的部门的基本信息(要求只取出一个部门的信息),如果有多个部门人数一样,那么取出部门编号最小的那个部门的基本信息。

5、 显示部门人数大于5的每个部门的编号,名称,人数

6、 显示部门人数大于5的每个部门的最高工资,最低工资

7、 列出员工编号以字母P至S开头的所有员工的基本信息

8、 删除年龄超过60岁的员工

9、 为工龄超过10年的职工增加10%的工资

答案如下:

create table emp1(
eid number(6),
ename varchar2(20),
bdate date,
sex   char(2),
city varchar2(20)
);





create table dept1(
did number(6),
dname varchar2(20),
dcity varchar2(20)
);



create table work1(
eid number(6),
did number(6),
startdate date,
salary integer
);




1.
alter table emp1
add constraint emp1_eid_pk primary key(eid);

alter table dept1
add constraint dept1_did_pk primary key (did);

alter table work1
add constraint work1_eid_fk foreign key(eid) references emp1(eid);

alter table work1
add constraint work1_did_fk foreign key (did) references dept1(did);

2.
往emp1 表添加数据
insert into emp1 (eid,ename, bdate)
select empno, ename, hiredate
from emp;



update emp1
set (sex,city) =('男','北京'); ( 这种写法是错误的,只有利用子查询更新表,可以这样)

update emp1
set sex='男' , city='北京';

往dept1表添加数据

insert into dept1(did,dname)
select deptno,dname
from dept;

update dept1
set dcity='北京';

/把其中的一个部门改成开发,为了后面练习用
update dept1
set dname='developer'
where did=10;


往work1表添加数据

insert into work1 (eid,did,startdate,salary)
values(7369,10, '', 2500);

insert into work1 (eid,did,startdate,salary)
values(7499,10, '', 2501);

insert into work1 (eid,did,startdate,salary)
values(7521,10, '', 2500);

3.
select emp1.eid, emp1.ename,dept1.dname,work1.salary
from emp1,dept1,work1
where emp1.eid=work1.eid
and dept1.did=work1.did;



4.

select max(e.renshu), d.did
from (select did,count(eid) renshu
              from work1
              group by did)e,dept1 d
where d.did=e.did
group by d.did;




5.

select e.*, d.did, d.dname, d.dcity
from (select did,count(eid)
              from work1
              group by did
              having count(eid)>5)e,dept1 d
where d.did=e.did;




6.

select max(salary), min(salary)
from work1
having count(eid)>2
group by did;


7.

select ename

from emp1

where ename like 'S%'

or ename like 'P%' ;

 

8.

delete from emp1

where months_between( sysdate, bdate)/12>60;

9.

update work1

set salary= salary*1.1

where months_between( sysdate ,startdate)/12>10;


    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Oracle 12c发布简单介绍及官方下载地址
  • 在linux下安装oracle,如何设置让oracle自动启动!也就是让oracle那个服务自动启动,不是手动的
  • oracle 11g最新版官方下载地址
  • 请问su oracle 和su - oracle有什么不同?
  • Oracle 数据库(oracle Database)Select 多表关联查询方式
  • 虚拟机装Oracle R12与Oracle10g
  • Oracle数据库(Oracle Database)体系结构及基本组成介绍
  • Oracle 数据库开发工具 Oracle SQL Developer
  • 如何设置让Oracle SQL Developer显示的时间包含时分秒
  • Oracle EBS R12 支持 Oracle Database 11g
  • Oracle 10g和Oracle 11g网格技术介绍
  • SCO unix下安装oracle,但没有光盘,请大家推荐一个oracle下载站点(unix版本的)。谢谢!!!!
  • oracle中如何把表中具有相同值列的多行数据合并成一行
  • 请问大家用oracle数据库, 用import oracle.*;下的东西么? 还是用标准库?
  • Oracle 数据库(oracle Database)性能调优技术详解
  • Linux /$ORACLE_HOME $ORACLE_HOME
  • ORACLE日期相关操作
  • Linux系统下Oracle的启动与Oracle监听的启动
  • ORACLE数据库常用字段数据类型介绍
  • 请问在solaris下安装ORACLE,用root用户和用oracle用户安装有什么区别么?
  • Oracle 12c的九大最新技术特性介绍
  • 网间Oracle的连接,远程连接Oracle服务器??


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,