当前位置:文档之家› oracle实验报告

oracle实验报告

四川师范大学计算机学院oracle实验报告册院系名称:计算机科学学院课程名称:oracle数据库运用与开发实验学期2012 年至2013 年第 1 学期专业班级:电子商务2010级5班姓名:苏瑶学号:2010110338指导教师:俞晓老师实验最终成绩:实验一了解ORACLE环境,使用ORACLE数据库实用工具(验证性实验 4学时)1.目的要求:了解ORACLE数据库的各个常用工具软件2.实验内容:在ORACEL数据库下使用SQL*PLUS ,SQL*PLUS Worksheet,PL/SQL Developer工具,企业管理器等实用工具与Oracle交互。

并在企业管理器中观察ORACLE的底层存储原理。

在PL/SQL Developer中书写简单的SQL语言。

3.主要仪器设备及软件1)PC2)ORACLE数据库--创建用户create user user1 identified by user1;--赋给用户建表、连接等权限grant connect to user1;grant create any table to user1;grant resource ,dba to u1;--连接用户Conn user1/user1;--收回权限(dba )revoke dba from u1;-------------------------------------------------------------------------实验二熟悉SQL语言(验证性实验 4学时)1.目的要求在SQL*PLUS或PL/SQL Developer工具中编写SQL语句2.实验内容在ORACLE 数据库中定义用户,给用户赋权限,创建,修改和删除表格,视图等数据库对象,并向表格中插入,修改和删除数据。

体会SQL语言中ORACLE的“方言”。

对自己建立的表做查询:包括单表查询,多表查询,嵌套查询,分组查询,相关查询3.主要仪器设备及软件1)PC2)ORACLE数据库--修改数据:update student set sAge=19where sage=18;--删除数据:delete from student where sname='吴芳';--输出成绩大于60小于80的学生的名字select sname from student,sc where grade >60and grade <80and student.sno=sc.sno;--输出学生表中的总人数select count(*)from student;/*表属性职员表:Emp(eid:integer;ename:string,salary:real)部门表:Dept(did:integer,dname:string,managerid:integer,floornum:integer)职员与部分的关系表:Works(eid:integer,did:integer);*/-- 查询“电视”部门的职工人数Select count(*)from dept,works where dept.did=works.did anddept.dname=’电视’;-- 输出每个部门的名字和平均工资select dname ,avg(salary)from dept,works,emp where dept.did=works.did and works.eid =emp.eid grop by dname;-- 查询每个部门的部门编号,及其拥有的雇员的人数Select did,count(eid)from dept,emp,works where dept.did=works.did and works.eid =emp.eid group by dept.did;-- 查询在第10层工作,同时薪水少于¥50000的所有雇员的名字Select ename distinct from dept,emp,works dept.did=works.did and works.eid =emp.eid and floornum=10and salary <50000;-- 查询工资最高的雇员的名字Select ename from emp where salary=(select max(salary)from emp );-- 查询工资最低的雇员的名字及其所在部门的编号和名字Select ename ,did,dname from emp,dept,works where dept.did=works.did and works.eid =emp.eid and salary=(select min(salary)from emp);--找出薪水在20 000以上,并且在电视部门或者玩具部门工作的雇员的名字select ename from emp where salary>=20000and eid in(select eidfrom works where did in(select did from dept where dname='电视'or dname='玩具'));create user u1 identified by u1;grant connect to u1;grant create table,resource to u1;--建立学生表create table Student( Sno char(11)primary key,Sname char(20),Ssex char(2),Sage int,Sdept char(20));--插入数据insert into student values('2','张立文','女',20,'化学');insert into student values('3','王敏','男',20,'数学');insert into student values('4','张山','男','19','化学');--导入表@E:\biao.sql;--添加列:alter table student add address char(40);--修改列定义:alter table student alter column sage char(3);--删除列:alter table student drop column address;--为Student(10行以上),Course(8行以上),SC(25行以上)表添加记录--为Student表添加列“班级号”alter table student add classno varchar(10);--为学生填写班级号(数字);update student set classno=round (dbms_random.value(1,2),0);--将每个同学的班级号前面加上“T”update student set classno='T'||trim(classno);--删除班级号前面的“T”update student set classno=substr(classno,2,10);--删除班级号为空的学生delete from student where classno is null;--删除成绩低于50分的学生的选课信息delete from sc where grade<=50;--查询选修‘c05’课程,并且年龄不大于26岁的学生的学号和成绩,并按成绩降序排列。

(只选出第3个学生?)select s.sno,grade from student s,sc where s.sno=sc.sno and sage <=26and cno='c05'order by grade desc;select*from(select rownum rn ,a.*from(select s.sno,grade from student s,sc where s.sno=sc.sno and sage <=26and cno='c05'order by grade desc)a)wherern=3;--查询MA系的女同学select*from student where sdept='MA';--查询CS系姓李的学生选修的课程,列出学号,课程号和成绩select sc.sno,cno,grade from student s,sc wheres.no=sc.sno and sname='李%'and sdept='CS';--查询选修了数据库课程的学生的学号,成绩,按成绩降序排列select sno,grade from sc,course c where o=oand cname='数据库'order by grade desc;--找出学分为4分以上的课程的选修情况,列出学号,课程名,成绩select sno,o,grade from sc,course c whereo=o and ccredit >=4;--检索数据库的成绩在90分以上的学生的学号和姓名select s.sno,sname from sc,course c,student s wheres.sno=sc.sno and cname='数据库'and grade >=90;--练习(使用嵌套查询)--查询和数据库相同学分的课程。

select cno,cname,ccredit from course where ccredit=(select ccredit from course where cname='数据库');--查询选修了数据库课程的学生的学号。

select sc.sno from sc,course c where o=o ando=(select cno from course where cname='数据库');--查询成绩最高的学生的姓名。

select sname from sc,student s where sc.sno=s.sno andgrade=(select max(grade)from sc);--查询CS系成绩最高的学生的学号、姓名以及成绩。

相关主题