没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
《数据库原理及应用-
ORACLE》
实
验
指
导
书
1
信息科学与工程学院 2014 年 9 月
作者:何小卫
目
目
录
录
实验一 ORACLE 平台下基本 SQL 语言的应用
实验二 ORACLE 基本操作与用户权限基本管理
实验三 数据字典视图
实验四 PL-SQL 语言设计
实验五 存储过程
实验六 游标
实验七 数据库触发器
2
实验一:ORACLE 平台下基本 SQL 语言的应用
实验目的
在 oracle 下熟练运用 SQL 语言来完成基本表的管理、索引的建立和删除、
数据查询、数据更新、视图建立和删除等等操作。
实验要求
1、 件基本配置:Intel PentiumIII 以上级别的 CPU,大于 512MB 的内存。
2、 软件要求:Window XP 操作系统,ORACLE 9i
3、 实验学时:4 学时。
4、 实验报告。
实验准备
ORACLE 9i
实验内容
上机题 1:利用 Create Table 创建 scott 用户下的 3 个表,包括每个表的码和
外码的定义。
EmpC 员工表字段内容如下:
empno 员工号(主码),ename 员工姓名,job 工作,mgr 上级编号(外
码),hiredate 受雇日期,sal 薪金,comm 佣金,deptno 部门编号(外
码);
create table Empc(empno number,ename varchar(10),job varchar(20),mgr
number,hiredate date,sal number,comm number,deptno number,primary
key(empno),foreign key(mgr) references Empc(empno));
alter table empc add constraint deptno foreign key(deptno) references
deptc(deptno);
DeptC 部门表字段内容如下:
deptno 部门号(主码),dname 部门名称,loc 办公地方
create table Deptc(deptno number,ename varchar(10),loc
varchar(10),primary key(deptno));
BonusC 奖金表字段内容如下:
ename 员工姓名,job 工作名称,sal 薪金,comm 佣金
create table bounsc(ename varchar(10),job varchar(10),sal number,comm
number);
上机题 2:用 Alter Table 向表中 BonusC 增加 comm 的约束为 0-3000 元之
间。
alter table bounsc add constraint comm check(comm between 0 and
3000);
上机题 3:将一个员工记录插入到 Emp 中(每个属性值自定);
insert into emp values(102,'zhangsan','manager',102,to_date('2010-
05-06','yyyy-mm-dd'),null,null,10);
上机题 4:删除所有张三职工记录;
Delete from emp where ename=’zhangsan’;
3
上机题 5:创建如下的视图:创建“research”部门的职工情况,包含如下字段
的视图 view_research:包括 empno、ename、sal、comm。
create view research as select empno,ename,sal,comm from emp;
上机题 6:使用 SELECT 语句创建查询:
1、列出至少有一个员工的全部部门及人数。
select count(empno),deptno from emp group by deptno having
count(ename)>1;
2、列出薪金比“SMITH”多的全部员工。
select ename,sal from emp where sal>(select sal from emp where
ename='SMITH');
3、列出全部员工的姓名及其直接上级的姓名
select table1.ename,table2.ename from emp table1,emp table2 where
table1.mgr=table2.empno;
4、列出受雇日期早于其直接上级的全部员工。
select a.ename from emp a,emp b where a.mgr=b.empno and
a.hiredate<b.hiredate;
5、列出部门名称和这些部分的员工信息,同时列出那些没有员工的部门。
select emp.*,dept.dname from emp right outer join dept on
dept.deptno=emp.deptno;
6、列出全部 “CLERK”(做事员)的姓名及其部分名称。
select ename,dname from emp,dept where emp.deptno=dept.deptno and
emp.job='CLERK';
7、列出最低薪金大于 1500 的种种工作 。
select job from emp group by job having min(sal)>1500;
8、列出在部分门“SALES”(贩卖部)做事的员工的姓名,假定不知道贩卖部的
部门编号。
select ename from (select deptno from dept where dname='SALES')a,emp
where a.deptno=emp.deptno;
9、列出薪金高于公司平均薪金的全部员工。
select emp.* from emp where sal>(select avg(sal)from emp);
10、列出与“SCOTT”从事相同工作的全部员工。
select emp.* from emp where job in(select job from emp where
ename='SCOTT');
11、列出薪金是部门 30 中员工的薪金的全部员工的姓名和薪金。
select ename,sal from emp where sal in (select sal from emp where
deptno=30);
12、列出薪金高于在部门 30 做事的全部员工的薪金的员工姓名和薪金。
select ename,sal from emp where sal >(select max(sal) from emp where
deptno=30);
13、列出在每个部门做事的员工数量 、均匀收入、平均做事限期。
select count(ename),avg(sal),floor(sysdate-hiredate/365) from emp
group by(deptno);
14、列出全部员工的姓名、部门名称和收入。
select ename,dname,sal from emp,dept where emp.deptno=dept.deptno;
4
15、列出从事同一种工作但属于不同部门的员工。
select a.ename from emp a,emp b where a.job=b.job and
a.deptno<>b.deptno;
16、列出全部部门的具体信息和部门人数。
select * from dept a left join(select deptno.count(*)from emp group
by dept(no) b on a.deptno=b.deptno;
17、列出种种工作的最低收入。
select job,min(sal) from emp group by job;
18、列出各个部门的 MANAGER(司理)的最低薪金。
select min(sal) from emp where job='MANAGER'group by deptno;
19、列出全部员工的年收入 ,按年薪从低到高排序。
select ename,sal*12 a from emp order by a asc;
20、找出佣金高于薪金的 60%的员工.
select ename from emp where comm>sal*0.6;
21、找出部门 10 中所有经理(MANAGER),部门 20 中所有办事员(CLERK),既不
是经理又不是办事员但其薪金大于或等于 2000 的所有员工的详细资料.
Select * name emp where (deptno=’10’ and job=’MANAGER’) or
(deptno=’20’ and job=’CLERK’) or (job not in (‘MANAGER’,’ CLERK’) and
sal>=2000)
22、找出不收取佣金或收取的佣金低于 100 的员工.
select * from emp where comm<100 or comm=0;
23、找出各月倒数第 3 天受雇的所有员工.
select * from emp where hiredate=last day(hiredate)-2;
24、显示正好为 5 个字符的员工的姓名.
select ename from emp where ename like' ';
25、显示不带有"R"的员工的姓名
select ename from emp where ename not like'%R%';.
26、显示所有员工姓名的前三个字符.
select substr(ename,1,3)from emp;
27、显示所有员工的姓名、工作和薪金,按工作的降序排序,若工作相同则按薪金
排序.
select ename,sal,job from emp order by job desc,sal;
28、对于每个员工,显示其加入公司的天数.
select ename,round(sysdate-hiredate) emp_date from emp;
29、显示姓名字段的任何位置包含"A"的所
有员工的姓名.
select ename from emp where ename like'%A%';
30、查询和“李建国”是同一部门的职工姓名。(使用子查询)
select ename from emp where deptno=(select deptno from emp where
ename='李建国');
31、查询“Research”和”Manager”部门的职工姓名(UNION)
select ename from emp where job='RESEARCH' or job='MANAGER';
5
剩余24页未读,继续阅读
资源评论
老帽爬新坡
- 粉丝: 79
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功