oracle数据库.docx
《oracle数据库.docx》由会员分享,可在线阅读,更多相关《oracle数据库.docx(10页珍藏版)》请在冰豆网上搜索。
![oracle数据库.docx](https://file1.bdocx.com/fileroot1/2022-12/30/1897c270-0f49-424d-8354-953120b2b7f4/1897c270-0f49-424d-8354-953120b2b7f41.gif)
oracle数据库
课程名称Oracle11g
实验序号实验三
实验项目数据库对象管理
(一)
实验地点综B—504
实验学时2实验类型操作性
指导教师侯睿实验员
专业计算机科学与技术班级09级计本7班
学号2009324705姓名陈小妹
2012年4月28日
成绩:
教师评语
指导教师签名:
批阅日期:
一、实验目的及要求
通过上机实践加强理解Oracle11g数据库的体系结构。
二、实验原理与内容
(1)使用SQL语句创建表
①创建学生表student(Sno,Sname,Ssex,Sage,Sclass),定义Sno为主键,添加约束:
对列Ssex的取值为男和女,Sage的取值为18到24。
②创建课程表course(Cno,Cname,Ccredit),定义Cno为主键。
③创建选修表SC(Sno,Cno,grade),Sno和cno为主键,Sno为外键,Cno为外键。
④使用insert语句向以上三个表插入以下数据。
student表
Sno
Sname
Ssex
Sage
Sclass
410601
李军
男
18
计算机科学与技术
410602
王红
女
18
计算机科学与技术
410603
赵平
女
19
计算机科学与技术
520801
张强
男
19
网络工程
520802
孙兰
女
18
网络工程
course表
Cno
Cname
Ccredit
1
C程序设计
3
2
数据结构
4
3
数据库原理及应用
4
4
操作系统
4
SC表
Sno
Cno
Grade
410601
2
85
410601
3
88
410601
4
82
410602
3
75
410603
3
90
410603
4
81
520801
3
88
三、实验软硬件环境
多媒体计算机,oralce软件
四、实验过程(实验步骤、记录、数据、分析)
1、启动:
程序——oracle——OraDb11g_home1——配置和移植工具NetManage,修改主机名
2、启动:
运行——输入cmd进入DOS界面;
3、在SQL后输入“netstartoracleserviceorcl”并按下enter键;
4、在SQL后输入“sqlplussys/sysassysdba”并按下enter键,方可在SQL后输入命令
以下是本次实验的操作结果
(1)使用SQL语句创建表
1、创建学生表student(Sno,Sname,Ssex,Sage,Sclass),定义Sno为主键,添加约束:
对列Ssex的取值为男和女,Sage的取值为18到24。
SQL>createtablestudent(
2snonumber(20)primarykey,
3snamevarchar2(20),
4ssexchar(10),
5check(ssexin('男','女')),
6sagenumber(10),
7check(sagebetween18and24),
8sclassvarchar2(30)
9);
表已创建。
2、创建课程
表course(Cno,Cname,Ccredit),定义Cno为主键。
SQL>createtablecourse(
2cnonumber(10)primarykey,
3cnamevarchar(20),
4ccreditnumber(20)
5);
表已创建。
3、创建选修表SC(Sno,Cno,grade),Sno和cno为主键,Sno为外键,Cno为外键。
SQL>createtablesc(
2snonumber(16),
3cnonumber(6),
4gradenumber(30),
5primarykey(sno,cno),
6constraintsc_studentforeignkey(sno)referencesstudent(sno),
7constraintsc_courseforeignkey(cno)referencescourse(cno),
8);
表已创建。
4、使用insert语句向以上三个表插入数据。
Student表:
SQL>insertintostudent(sno,sname,ssex,sage,sclass)
2values(410601,'李军','男',18,'计算机科学与技术');
已创建1行。
SQL>insertintostudent(sno,sname,ssex,sage,sclass)
2values(410602,'王红','女',18,'计算机科学与技术');
已创建1行。
SQL>insertintostudent(sno,sname,ssex,sage,sclass)
2values(410603,'赵平','女',19,'计算机科学与技术');
已创建1行。
SQL>insertintostudent(sno,sname,ssex,sage,sclass)
2values(520801,'张强','男',19,'网络工程');
已创建1行。
SQL>insertintostudent(sno,sname,ssex,sage,sclass)
2values(520802,'孙兰','女',18,'网络工程');
已创建1行。
Course表:
SQL>insertintocourse(cno,cname,ccredit)
2values(1,'C程序设计',3);
已创建1行。
SQL>insertintocourse(cno,cname,ccredit)
2values(2,'数据结构',4);
已创建1行。
SQL>insertintocourse(cno,cname,ccredit)
2values(3,'数据库原理及应用',4);
已创建1行。
SQL>insertintocourse(cno,cname,ccredit)
2values(4,'操作系统',4);
已创建1行。
SC表:
SQL>insertintosc(sno,cno,grade)
2values(410601,2,85);
已创建1行。
SQL>insertintosc(sno,cno,grade)
2values(410601,3,88);
已创建1行。
SQL>insertintosc(sno,cno,grade)
2values(410601,4,82);
已创建1行。
SQL>insertintosc(sno,cno,grade)
2values(410602,3,75);
已创建1行。
SQL>insertintosc(sno,cno,grade)
2values(410603,3,90);
已创建1行。
SQL>insertintosc(sno,cno,grade)
2values(410603,4,81);
已创建1行。
SQL>insertintosc(sno,cno,grade)
2values(520801,3,88);
已创建1行。
(2)用SQL语句实现如下的查询。
1查询性别为女生的平均成绩
代码如下:
SQL>selectavg(grade)fromsc,student
2wheresc.sno=student.snoandssex='女';
AVG(GRADE)
----------
82
2查询选修了课程号为3的所有学生的姓名
代码如下:
SQL>selectcno,snamefromsc,student
2wheresc.sno=student.snoandcno=3;
CNOSNAME
------------------
3李军
3王红
3赵平
3张强
3查询既选修了课程2又选修了课程3的学生姓名和学号
代码如下:
SQL>selectsname,student.snofromsc,student
2wheresc.sno=student.snoandcno=2
3intersect
4selectsname,student.snofromsc,student
5wheresc.sno=student.snoandcno=3;
SNAMESNO
------------------
李军410601
4查询与“孙兰”在同一个系学习的学生
代码如下:
SQL>selectsnamefromstudent
2wheresclass=(selectsclassfromstudentwheresname='孙兰');
SNAME
--------------------
张强
孙兰
(3)使用SQL语句创建student表基于姓名字段的索引,索引名为index_stu_name
代码如下:
SQL>createindexindex_stu_name
2onstudent(sname);
3tablespacemyspace;
索引已创建。
(4)使用SQL语句创建视图:
建立网络工程2班学生所选修的课程名称,视图名称为v_net_cname;并查询该视图
代码如下:
SQL>createviewv_net_cname
2as
3selectstudent.sno,sname,sclass,cname
4fromstudent,course,sc
5wherestudent.sno=sc.snoandsclass='网络工程'andcou
视图已创建。
SQL>SELECT*FROMv_net_cname;
SNOSNAMESCLASSCNAME
--------------------------------------------------------------------
520801张强网络工程数据库原理及应用
(5)创建视图v_net_cname的同义词vnc并使用同义词进行查询。
代码如下:
SQL>createsynonymvncforv_net_cname;
同义词已创建。
SQL>SELECT*FROMv_net_cname;
SNOSNAMESCLASSCNAME
--------------------------------------------------------------------
520801张强网络工程数据库原理及应用
(6)在学生表student2中增加列sid,创建名称为seq_stu_id序列,序列的初值为1,增长值为1,最小值为1,最大值为9999,当向表student2插入数据时,sid列的取值为序列seq_stu_id。
并向student2表中插入一行数据(411605,'王强','男',20,'计算机科学与技术42',seq_stu_id.nextval)。
代码如下:
SQL>altertablestudentaddsidnumber(4);
表已更改。
SQL>createSEQUENCEseq_stu_id
2startwith1
3incrementby1
4minvalue1
5maxvalue9999;
序列已创建。
SQL>insertintostudent(sno,sname,ssex,sage,sclass,sid)
2values(411605,'王强','男',20,'计算机科学与技术',seq_stu_id.nextval);
已创建1行。
SQL>selectsno,sname,ssex,sage,sclass,sidfromstudent;
SNOSNAMESSSAGESCLASSSID
-----------------------------------------------------------------
410601李军男18计算机科学与技术
410602王红女18计算机科学与技术
410603赵平女19计算机科学与技术
520801张强男19网络工程
520802孙兰女18网络工程
已选择5行。
五、测试/调试及实验结果分析
实验分析:
从以上实验截图和代码可以看出已经顺利完成本次实验,并清楚地看到它们的执行结果。
六、实验结论与体会
通过上机实践熟悉Oracle11g的对象管理。
通过这次的实验课初步掌握了创建表、视图、序列等,查询表、视图等操作。
2012年4月28日