广东金融学院实验报告
课程名称:Oracle数据库
《数据库原理及应用
-Oracle》
实
验
报
告
姓名: 李奕 学号: 12600120 班级:
实验一:Oracle平台下基本SQL语言的
应用
1、列出至少有一个员工的全部部门及人数。
SQL> select deptno ,count(ename) from emp group by deptno having count(ename)>1;
2、列出薪金比“SMITH”多的全部员工。
SQL> select ename from emp where sal>ALL(select sal from emp where ename='SMITH');
3、列出全部员工的姓名及其直接上级的姓名
SQL> SELECT 员工.ENAME,上级.ENAME FROM EMP 员工,emp 上级 WHERE 员工.MGR=上级.EMPNO;
4、列出受雇日期早于其直接上级的全部员工。
SQL> SELECT e.ename FROM emp e,emp m WHERE e.mgr = m.empno AND e.hiredate < m.hiredate;
5、列出部门名称和这些部门的员工信息,同时列出那些没有员工的部门。 select d.dname,ename,empno,job,hiredate,sal from emp e right join dept d on e.deptno=d.deptno;
6、列出全部 “CLERK”(做事员)的姓名及其部门名称。
select e.ename,d.dname from emp e,dept d where e.deptno=d.deptno and e.job='CLERK';
7、列出最低薪金大于1500的种种工作 。
SQL> select job from emp group by job having min(sal)>1500;
8、列出在部分门“SALES”(贩卖部)做事的员工的姓名,假定不知道贩卖部的部门编号。
select ename from emp where deptno=(select deptno from dept where dname='SALES');
SELECT e.ename FROM emp e,dept d WHERE e.deptno = d.deptno AND d.dname='SALES';
SELECT e.ename FROM emp e JOIN dept d ON e.deptno = d.deptno AND d.dname='SALES';
9、列出薪金高于公司平均薪金的全部员工。
select ename from emp where sal>all(select avg(sal) from emp);
10、列出与“SCOTT”从事相同工作的全部员工。
select ename,empno from emp where job=(select job from emp where ename='SCOTT');
11、列出薪金是部门30中员工的薪金的全部员工的姓名和薪金。 select ename,sal from emp where deptno=30;
12、列出薪金高于在部门30做事的全部员工的薪金的员工姓名和薪金。
select ename,sal from emp where sal>any (select sal from emp where deptno=30);
13、列出在每个部门做事的员工数量 、均匀收入、平均做事限期。
select count(ename),avg(sal),AVG((SYSDATE-hiredate)/365) from emp group by(deptno);
14、列出全部员工的姓名、部门名称和收入。
select e.ename,d.dname,e.sal from emp e,dept d where e.deptno=d.deptno;
15、列出从事同一种工作但属于不同部门的员工。
select a.ename, b.ename, a.job, b.job, a.deptno, b.deptno from emp a,emp b where a.job=b.job and a.deptno<>b.deptno;
16、列出全部部门的具体信息和部门人数。
select dept.*,(select count(*) from emp where dept.deptno = emp.deptno) as pop from dept;
17、列出种种工作的最低收入。
select job,min(sal) from emp group by job ;
18、列出各个部门的MANAGER(jing理)的最低薪金。
select deptno,min(sal) from emp where job='MANAGER' group by deptno; 19、列出全部员工的年收入 ,按年薪从低到高排序。
select ename,12*(sal+nvl(comm,0))as year_sal from emp order by year_sal;
20、找出佣金高于薪金的60%的员工.
select ename from emp where comm>sal*0.6;
21、找出部门10中所有经理(MANAGER),部门20中所有办事员(CLERK),既不是经理又不是办事员但其薪金大于或等于2000的所有员工的详细资料.
22、找出不收取佣金或收取的佣金低于100的员工.
select ename from emp where comm is null or comm<100;
23、 找出各月倒数第3天受雇的所有员工.
select ename from emp where hiredate=last_day(hiredate)-3;
24、 显示正好为5个字符的员工的姓名.
select ename from emp where length(ename)=5;
25、 显示不带有"R"的员工的姓名.
select ename from emp where ename not like '%R%';
26、 显示所有员工姓名的前三个字符.
select substr(ename,1,3)from emp;
27、显示所有员工的姓名、工作和薪金,按工作的降序排序,若工作相同则按薪金
排序.
Select ename,job,sal from emp order by job desc,sal asc;
28、 对于每个员工,显示其加入公司的天数.
Select ename,sysdate-hiredate 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')union(select ename from emp WHERE JOB='MANAGER');
一、 疑难点分析
1、分组查询是通过加入Group by 字句实现的。
2、聚合函数的使用规范。
3、连接查询中的相等连接、自身连接、不等连接、左外连接、右外连接、全外连接,连接查询的实际使用,清楚各个连接语句的规则。
4、子查询语句,语句之间的嵌套。
二、 实验体会
1、通过学习本次实验,掌握了Oracle数据库经常用且必须掌握的关系数据库标准语言SQL,select/create/update/alter/drop/insert/delete等基本语句的用法。
2、学会了创建表格、创建视图以及对表格的修改及其他一些对表格的操作语法。
3、重点学习了数据库中使用频率最高的select语句。可以从表中获取目的数据。
实验二:Oracle基本操作与用户权限基
本管理
上机题1:连接命令
connect system/sys;
disconnect system/sys;
show user;
exit;
上机题2:创建用户
connect system/sys;
create user zhao identified by zhao;
grant create session to zhao;
grant unlimited tablespace to zhao;
grant create table to zhao;
connect zhao/zhao;
create table Student
(id number(10),
name varchar2(20),
age number(4));
select * from user_sys_privs;
上机题3:限制用户和密码修改
alter user zhao account lock;
alter user zhao account unlock;
alter user zhao password expire;
drop user zhao;
create user qian identified by qian;
alter user qian identified by "qianqian";
上机题4:对象权利的管理
grant select on emp to qian;
connect qian/qianqian;
select * from scott.emp;
connect system/sys;
grant delete,update on emp to qian;
connect qian/qianqian;
update scott.emp set sal=2000 where ename='ALLEN';
上机题5:权限的传递
connect system/sys;
create user sun identified by sunsun;
grant create any table to sun with admin option;
grant create session to sun;
grant unlimited tablespace to sun;
connect sun/sunsun;
create table student
( id number(10),
name varchar2(20));
select * from user_tab_privs;
create user li identified by li;新建一个用户“李”。
grant create session to li;
grant unlimited tablespace to li;给这个用户登录和不受限制的权利。 connect scott/tiger;连接scott用户。
grant select on emp to sun with grant option;把对emp表查询的权限给sun并给他传递权限的权限。
connect sun/sunsun;连接sun。
grant select on scott.emp to li;把查询权限给li。
connect li/li;连接li。
select * from scott.emp;查询scott下的emp表。
实验证明:查询成功,说明权限的传递成功。
上机题6:角色的管理
connect system/sys;连接到system.
create role mydear;新建一个角色。
grant create session to mydear;给角色登录的权限。
grant create table to mydear;给角色建表的权限。
create user nuer identified by nuer;新建一个nuer用户。 grant mydear to nuer;将mydear角色的两个权限给nuer.
select * from role_sys_privs where role='MYDEAR';查询mydear
角色的系统权限。
select * from role_sys_privs;查询nuer的系统权限。
一、疑难点分析
1、查询用户的各类权限。
2、角色的创建及权限的给予和传递。
3、对Oracle提供的多种系统权限理解使用。
4、当用户数量和角色足够多时,对赋予的各个角色权利易混淆。
二、 实验体会
1、学会了各个角色之间权限的分配问题。
2、创建新用户,可以修改用户相关信息。
3、权限的给予和传递,能让角色或用户实现不同的功能。
4、学会对角色的管理。
广东金融学院实验报告课程名称Oracle数据库第1页共2页第2页共2页第3页共2页第4页共2页第5页共2页第6页共2页第7页共2页…
西安财经学院本科实验报告学院部实验室实验楼619课程名称大型数据库系统概论Oracle学生姓名学号专业信息管理与信息系统教务处制二…
存档资料成绩:华东交通大学理工学院课程设计报告书所属课程名称Oracle11g数据库基础教程题目图书管理系统分院电信分院专业班级电…
河南财经政法大学计算机与信息工程学院20xx年20xx年第一学期专业信息管理与信息系统课程名称Oracle数据库班级姓名学号指导教…
Oracle数据库管理系统实习总结学习完oracle数据库后,我们进行了一次大实习,实习是分组进行的,我们组根据老师的安排,采用O…
实训报告教学院课程名称专业班级姓名指导教师计算机数据库实训计算机科学与技术1班陈建辉张国军20xx年1月3日课程设计任务书20xx…
重庆文理学院软件工程学院实验报告专业软件工程班级软件二班学号20xx58234069姓名程清课程名称oracle数据库指导教师李瑞…
大型数据库Oracle实验报告指导老师彭虎适用班级信B093220xx年8月25日制定实验一Oracle安装与维护一实验目的1了解…
广东金融学院实验报告课程名称Oracle数据库第1页共2页第2页共2页第3页共2页第4页共2页第5页共2页第6页共2页第7页共2页…