题目:已知公司的员工表EMP(EID, ENAME, BDATE, SEX, CITY),部门表DEPT(DID, DNAME, DCITY),工作表WORK(EID,DID,STARTDATE,SALARY)。各个字段说明如下:EID——员工编号,最多6个字符。例如A00001(主键)ENAME——员工姓名,最多10个字符。例如SMITHBDATE——出生日期,日期型SEX——员工性别,单个字符。F或者MCITY——员工居住的城市,最多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 enamefrom emp1where ename like "S%"or ename like "P%" ; 8.delete from emp1where months_between( sysdate, bdate)/12>60;9.update work1set salary= salary*1.1where months_between( sysdate ,startdate)/12>10;Oracle在32位的Linux环境下SGA如何突破2GB内存限制的最终解决方案Oracle用户只有访问其他用户视图的权限相关资讯 Oracle入门教程
- 使用SQLT来构建Oracle测试用例 (08/28/2014 06:17:41)
- Oracle AUTOTRACE 统计信息 (02/18/2013 08:25:40)
- Linux Oracle服务启动&停止脚本与 (12/16/2012 14:42:37)
| - Oracle入门教程:把表和索引放在不 (07/13/2013 11:21:40)
- Oracle直接路径加载--append的深度 (02/07/2013 08:26:36)
- Oracle Connect By用法 (12/16/2012 13:36:10)
|
本文评论 查看全部评论 (0)