【精选资料】Oracle课程实验指导书 下载本文

一、Oracle基础

1、SQL语言基础

实验准备

1、 提前找班主任拿到机房上机卡、登录服务器的用户名和密码。 2、 准时到指定机房,作好实验准备,进入xp64系统; 3、 按以下步骤登录数据库服务器:

(1) 登录本地数据库服务器:开始->运行,输入cmd进入DOS环境后输入:

sqlplus / as sysdba (2) 查看SCOTT用户状态:

select username,account_status from dba_users where username='SCOTT'; 若account_status为‘LOCKED’,修改用户到‘OPEN’状态: alter user SCOTT account unlock;

(3) 以SCOTT用户身份在sqlplus中登陆数据库:

用户名:scott

密 码:tiger

4、 成功登录后,设置好sqlplus的使用环境;

(1) set pagesize 100 (2) set linesize 100

实验一 查询语句练习

1. 实验内容与目的

熟练使用select语句进行简单条件和复合条件的查询操作,掌握子查询、分组及函数的应用。 2. 实验步骤

(1) 通过查数据字典了解SCOTT用户下拥有那些数据库对象,并了解所有表

的结构; (2) 查询emp表中所有信息,并按照职员姓名的字母升序排列;

1

(3) 显示所有部门中地址不以“N”字母打头的部门信息; (4) 查询公司中所有职员所赚工资及所处的工资级别, (5) 统计工资级别为4的总人数;

(6) 显示部门30中所有职员的工资总和,并使显示结果以TOTAL30为列头。 (7) 查询工资与佣金总和低于1000元的职员名宇、工资、佣金和所在部门号。 (8) 查询1981年6月30日之后受雇的职员的最高报酬(包括工资和佣金)。 (9) 查询平均工资大于1500元的部门的部门号,职员人数和平均工资。 (10) 显示各部门的部门号及所属厂职员的平均工资,并按平均值由大到小的次

序排列。

(11) 查询EMP表中在部门10和部门20中工作,且在1981年3月30日以后

雇用的职员的名字、工资、受雇日期、并按照受雇日期的先后顺序排序。 (12) 查询部门20中工资大于该部门平均工资的职员信息;

(13) 查询能获得红利(即在BONUS表中存在)的推销员的名字,受雇日期及

工资额。 (14) 查询在第30号部门工作的所有受雇时间早于他的老板的职员的名字和受

雇日期及其老板的名字及受雇日期。 (15) 查询最先受雇的职员姓名及受雇日期。 3. 实验答案

(1) select * from cat; desc emp; desc dept; desc salgrade; 表结构如下:

emp(empno,ename,job,mgr,hiredate,sal,comm,deptno) dept(deptno,dname,loc) salgrade(grade,losal,hisal) bonus(ename,job,sal,comm); 说明:comm为佣金

注意:日期1981-3-30按格式’yyyy-mon-dd’显示,英文系统表示为‘1981-March-30’,而中文系统表示为’1981-3月-30’。 (2) select * from emp order by ename asc; (3) select * from dept where loc not like ‘N%’;

(4) select e.ename, e.sal, s.grade from emp e, salgrade s where e.sal between

s.losal and s.hisal;

2

(5) select count(*) from emp e, salgrade s where s.grade=4 and e.sal between

s.losal and s.hisal; (6) select deptno, ename, sal+nvl(comm,0) total30 from emp where deptno=30; (7) select ename, sal, comm, deptno from emp where (sal+nvl(comm,0))<1000; (8) select max(sal+nvl(comm,0)) from emp where hiredate> to_date('1981-6-30',

'yyyy-mm-dd'); (9) select deptno,count(*),avg(sal) from emp group by deptno having

avg(sal) >1500; (10) select deptno,count(*),avg(sal) from emp group by deptno order by 3;

注意:缺省为升序排列,3表示第三个变量,group by中不能用; (11) select ename,sal,hiredate from emp where hiredate > to_date('1981-3-30',

'yyyy-mm-dd') and (deptno=10 or deptno=20) order by hiredate; (12) select * from emp where deptno=20 and sal > (select avg(sal) from emp where

deptno =20); (13) select ename,hiredate,sal from emp where job=’SALESMAN’ and ename in

(select ename from bonus); (14) select e.ename,e.hiredate,m.ename,m.hiredate from emp e,emp m where

e.deptno=30 and e.hiredate < m.hiredate and e.mgr=m.empno;

(15) select ename,hiredate from emp where hiredate=(select min(hiredate) from

emp);

实验二 DML/DDL语句练习

1. 实验内容与目的

熟练使用insert、update、delete语句对数据进行维护,并掌握创建和删除数据库表和视图的方法。 2. 实验步骤

(1) 添加一条记录到EMP表中:基本信息如下:

? 姓名:KELLY,部门号10,员工编号7935,工作为CLERK,经理编

号为7782,雇用日期为82年5月23日,工资1300,没有佣金; (2) 修改员工KELLY的信息,将其佣金改为0; (3) 删除名字为KELLY的员工信息;

3