中南大学数据库实验.docx

上传人:b****2 文档编号:24116964 上传时间:2023-05-24 格式:DOCX 页数:22 大小:58.69KB
下载 相关 举报
中南大学数据库实验.docx_第1页
第1页 / 共22页
中南大学数据库实验.docx_第2页
第2页 / 共22页
中南大学数据库实验.docx_第3页
第3页 / 共22页
中南大学数据库实验.docx_第4页
第4页 / 共22页
中南大学数据库实验.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

中南大学数据库实验.docx

《中南大学数据库实验.docx》由会员分享,可在线阅读,更多相关《中南大学数据库实验.docx(22页珍藏版)》请在冰豆网上搜索。

中南大学数据库实验.docx

中南大学数据库实验

中南大学

电子技术课程设计

 

 

题目:

数据库实验报告

学院:

信息科学与工程学院

专业班级:

电子信息1002班

学号:

学生姓名:

指导老师:

张祖平

实验一、熟悉ORALCE环境并练习SQL的定义

一、目的与要求

本实验主要是熟悉ORACLE的运行环境,在CLIENT端进行联接设置与服务器联通,进入ORACLE的SQL*PLUS的操作环境,进一步建立表格,并考虑主键,外部键,值约束。

二、操作环境

硬件:

主频2GHz以上服务器(内存2GB以上、硬件空闲2.2GB以上),主频1GHz以上微机,内存1GB以上。

软件:

WINDOWSXP/2000/2003SERVER可安装ORACLE/9i/10g/11g/13iFORNT/WINDOWS(注意在32位与64位的区别,可选企业版)如果windows非server如XP等,安装时请选择个人版(PERSONAL)

三、实验内容

1.上机步骤

单机版:

(1)先启动PERSONALORACLE(STARTDATABASE)

(2)用sql*plus登录(开始--程序-ORACLEFORWIN-SQLP*PLUS(与网络版相同)进入SQL*PLUS

用户名:

SYSTEM/manager(其中manager为缺省口令,安装需要设定,根据设定的密码进行相应变化;不要数据库联接串,其中SYSTEM为DBA用户)

还有一般用户scott/tiger

(3)进入SQL>状态,可以执行SQL中的任何命令(建表,插入、删除、修改、查询等),还可建立用户、数据库等操作。

(4)退出,在SQL>状态,EXIT回车

网络版:

在实验室上机时,一般安装时管理员已设置好.先找到windows中的oracle服务(一般为oracleserviceORCL),启动此服务,再找到sql*plus所在的位置(一般桌面上有),运行即可进行登录界面.

实验室现有环境操作步骤:

(1)打开控制面板,――>管理工具――>服务――>启动OracleServiceORCL

或者如图通过界面或资源管理器右键找到管理:

再找服务:

启动的服务如下或有OracleService****的服务:

(2)从桌面执行SQL*PLUS或在程序中

(3)输入:

system/manager

(4)在SQL>状态输入建立用户命令:

createuserusernameidentifiedbypassword;

其中username与password不要数字开头,用户名username中按规则加班级学号后缀

如:

U_31521表示3班学号尾数为1521号的用户。

(5)给用户授权:

grantresource,connecttousername;

(6)连接用户:

connectusername/password

在SQL>就可以建表等操作了

 

四、思考题

1.改变表的名称及数据类型再进行相应的操作。

2.先删除主表T_DEPT_?

?

?

?

?

,结果怎么样?

3.修改表中的字段类型与长度,考虑表中有数据或者没数据情况。

4.插入相同的学号与相同的系号会出现什么结果

5.插入空的学号或空的系号会出现的结果

6.改变数据库的别名再进行联接(如有网络版ORACLE)。

五、实验代码

createuserU_21001identifiedbyxiaobai;

grantresource,connecttoU_21001;

connectU_21001/xiaobai

createtablet_dept_21001(dnochar(3)primarykey,dnvarchar2(32),deanchar(8),telchar(8)check(substr(1,4)='8887'));

CREATETABLET_STUD_21001(SNOCHAR(10)PRIMARYKEY,SNAMEvarCHAR2(8),BIRTHDAYDATE,ADDRESSvarCHAR2(10),

DNOCHAR(3)REFERENCEST_DEPT_21001(DNO)

);

INSERTINTOT_DEPT_21001VALUES('D01','计算机系','王大明','88879626');

INSERTINTOT_DEPT_21001VALUES('D02','物理系','张大奔','88879726');

INSERTINTOT_DEPT_21001VALUES('D03','化学系','李水明','88879826');

INSERTINTOT_DEPT_21001VALUES('D04','管理系','欧阳卫红','88879926');

INSERTINTOT_DEPT_21001VALUES('D05','电子信息','张祖平','88875926');

INSERTINTOT_DEPT_21001VALUES('D06','外语系','宽左右','88879526');

INSERTINTOT_STUD_21001VALUES('0909100524','胡明天',SYSDATE-365*21,'湖南长沙','D01');

INSERTINTOT_STUD_21001VALUES('0909100134','唐明海',SYSDATE-365*21,'湖南长沙','D01');

INSERTINTOT_STUD_21001VALUES('0909100224','张丽梅',SYSDATE-365*20,'湖南长沙','D01');

INSERTINTOT_STUD_21001VALUES('0909100324','李有能',SYSDATE-365*22,'湖南长沙','D02');

INSERTINTOT_STUD_21001VALUES('0909100424','王汉中',SYSDATE-365*22,'湖南长沙','D02');

INSERTINTOT_STUD_21001VALUES('0909100464','高强',SYSDATE-365*21,'湖南长沙','D02');

INSERTINTOT_STUD_21001VALUES('0909100474','JONE',SYSDATE-365*23,'湖南长沙','D03');

INSERTINTOT_STUD_21001VALUES('0909100484','SMITH',SYSDATE-365*21,'湖南长沙','D03');

INSERTINTOT_STUD_21001VALUES('0909100594','TOMHONE',SYSDATE-365*22,'湖南长沙','D03');

INSERTINTOT_STUD_21001VALUES('0909100264','张三',SYSDATE-365*22,'湖南长沙','D04');

INSERTINTOT_STUD_21001VALUES('0909100274','李四',SYSDATE-365*21,'湖南长沙','D04');

INSERTINTOT_STUD_21001VALUES('0909101001','白志恒',SYSDATE-365*20,'新疆额敏','D02');

INSERTINTOT_STUD_21001VALUES('0909081116','李友敏',SYSDATE-365*20,'新疆额敏','D03');

INSERTINTOT_STUD_21001VALUES('0909071116','王尼玛',SYSDATE-365*20,'新疆额敏','D01');

INSERTINTOT_STUD_21001VALUES('0909081516','杨坑跌',SYSDATE-365*20,'新疆额敏','D03');

INSERTINTOT_STUD_21001VALUES('0909081016','称飞机',SYSDATE-365*20,'新疆额敏','D03');

INSERTINTOT_STUD_21001VALUES('0909081216','程管子',SYSDATE-365*20,'新疆额敏','D04');

INSERTINTOT_STUD_21001VALUES('0909071314','华超',SYSDATE-365*20,'新疆额敏','D04');

INSERTINTOT_STUD_21001VALUES('0909071612','旷昀',SYSDATE-365*20,'新疆额敏','D02');

实验二、记录查询

一、目的与要求

本实验主要是熟悉在SQL*PLUS环境下进行数据记录查询,其中查询考虑简单查询,复杂查询,嵌套查询。

二、操作环境

同实验一。

三、实验内容

1.查询所有学生记录

2.查询所有系的记录,并按系号升序排列

3.查询有自己姓名的记录

4.查询’李四’的SNO,SNAME,BIRTHDAY

5.查询计算系所有的学生记录

6.查询各计算系学生在各年龄值的人数,如19的为200,20的有500等

7.查询’李四’的SNO,BIRTHDAY,DNO,DN,DEAN

四、思考题

1.查询学生的记录数。

2.在DEPT_?

?

?

?

?

中输入不是’8887’开头的电话记录。

3.查询平均年龄小于22岁的系号及学生SNO,SNAME,AGE

4.找出平均年龄大于20的系名及平均年龄数

5.的多个查询例子.

五、实验代码

select*fromt_dept_21001;

select*fromt_stud_21001;

selectdn,dnofromt_dept_21001orderbydno;

select*fromt_stud_21001wheresnamelike('白志恒');

selectsno,sname,birthdayfromt_stud_21001wheresnamelike('李%四');

selectsno,sname,birthdayfromt_stud_21001wheresname='李四';

selectsno,sname,address,birthday,t_stud_21001.dnofromt_stud_21001,t_dept_21001

wheret_stud_21001.dno=t_dept_21001.dnoandt_dept_21001.dn='计算机系';

selectceil((sysdate-birthday)/365-1)asage,count(*)fromt_stud_21001wherednoin

(selectdnofromt_dept_21001wheredn='计算机系')

groupby(sysdate-birthday)/365-1;

selectsno,birthday,t_stud_21001.dno,dn,deanfromt_stud_21001,t_dept_21001

wheret_stud_21001.dno=t_dept_21001.dnoandsname='李四';

实验三、SQL的数据操纵

一、目的与要求

本实验主要是熟悉在SQL*PLUS环境下进行数据记录的修改、删除及表结构的修改

二、操作环境

同实验一。

三、实验内容

1.在T_STUD中增加AGENUMBER

(2)/*年龄*/字段,并求出每个学生入校时的年龄。

2.将T_STUD_?

?

?

?

?

表中的08级学生的年龄都加3

3.将T_DEPT_?

?

?

?

?

表中的’计算机系’改为’信息科学与工程学院’

4.删除07级以前的所有的学生记录

四、思考题

1.误删了T_STUD_?

?

?

?

?

中的记录,怎么办?

2.怎么样才能做到在一个语句中将学生的年龄加上相应的学习年数(如08级加3,09级加2,10级加1,07级加4等)。

3.建立与T_STUD_?

?

?

?

?

对应的表T_ST_?

?

?

?

?

(SNO,SNAME,AGE/*年龄*/),在T_ST_?

?

?

?

?

输入若干学号(在T_STUD_?

中有的有几个),然后将T_STUD_?

?

?

?

?

中的SNAME,BIRTHDAY转入到T_ST_?

?

?

?

?

相应的SNO,AGE(多表间的更新)。

4.行教材上的更新(包括更新)的例子。

五、实验代码

altertablet_stud_21001addagenumber

(2);

updatet_stud_21001setage=ceil((sysdate-birthday)/365-1);

select*fromt_stud_21001;

updatet_stud_21001setage=age+3wheresubstr(sno,5,2)='08';

select*fromt_stud_21001;

updatet_dept_21001setdn='信息科学与工程学院'wheredn='计算机系';

select*fromt_dept_21001;

deletefromt_stud_21001whereto_number(substr(sno,5,2))<7;

select*fromt_stud_21001;

实验四、视图及权限控制

一、目的与要求

本实验主要是熟悉在SQL*PLUS环境下进行数据视图及权限控制的操作。

二、操作环境

同实验一。

三、实验内容

1.视图的建立

/*视图建立*/CREATEVIEWV_S_D_?

?

?

?

?

ASSELECTSNO,SNAME,T_STUD_?

?

?

?

?

.DNO,DN,TELFROMT_STUD_?

?

?

?

?

T_DEPT_?

?

?

?

?

WHERET_STUD_?

?

?

?

?

.DNO=T_DEPT_?

?

?

?

?

.DNOANDTO_CHAR(BIRTHDAY,'YYYY')>='1991';

2.对视图进行查询

3.分别将对象的各种权限授予相应的用户假若已有用户SCOTT(视系统实际情况),在SCOTT中看操作权限的变化。

GRANTSELECTONT_STUD_?

?

?

?

?

TOSCOTT;/*GRANTINSERTONT_STUD_?

?

?

?

?

TOSCOTT;*//*GRANTUPDATE(BIRTHDAY)ONT_STUD_?

?

?

?

?

TOSCOTT;*//*GRANTDELETEONT_STUD_?

?

?

?

?

TOSCOTT;*//*GRANTSELECTONV_S_D_?

?

?

?

?

TOSCOTT;*/

四、思考题

1.在视图V_S_D_?

?

?

?

?

中只考虑信息09级,视图将怎样建立?

2.如果用户为DBA,还需要给授权吗?

3.考虑基于一个表、简单条件的视图的更新操作。

4.考虑基于多表视图的更新操作。

5.设计与实现

针对用户的不同,建立视图,只出现用户本身的记录

提示:

有用户创建、表创建、视图建立、权限控制、用户联接、查询等操作

五、实验代码

connectsystem/Cheng101;

grantcreateviewtoU_21001;

connectU_21001/xiaobai

createviewv_s_d_21001asselectsno,sname,t_stud_21001.dno,dn,telfromt_stud_21001,

t_dept_21001wheret_stud_21001.dno=t_dept_21001.dno

andto_char(birthday,'yyyy')>='1991';

select*fromv_s_d_21001;

grantselectont_stud_21001toscott;

grantinsertont_stud_21001toscott;

grantupdateont_stud_21001toscott;

grantdeleteont_stud_21001toscott;

grantselectonv_s_d_21001toscott;

select*fromt_dept_21001;

CREATEVIEW1V_S_D_21001ASSELECTSNO,SNAME,T_STUD_21001.DNO,DN,TELFROMT_STUD_21001,T_DEPT_21001WHERET_STUD_21001.DNO=T_DEPT_21001.DNOANDTO_CHAR(BIRTHDAY,'YYYY')>='1991';

实验五、数据库触发器与过程

一、目的与要求

本实验主要是熟悉在SQL*PLUS环境下数据库触发器的建立及作用,了解大型数据库编程。

二、操作环境

同实验一。

三、实验内容

1.先建立表T_ST_?

?

?

?

?

(SNO,SNAME,AGE)

2.建立触发器CREATEORREPLACETRIGGERtg_STUD_TRG_?

?

?

?

?

BEFOREINSERTORUPDATEORDELETEONT_STUD_?

?

?

?

?

FOREACHROWBEGIN/*插入*/IFINSERTINGTHENINSERTINTOT_ST_?

?

?

?

?

VALUES(:

NEW.SNO,:

NEW.SNAME,(SYSDATE-:

NEW.BIRTHDAY)/365);

ENDIF;

/*修改*

IFUPDATINGTHEN

DELETEFROMT_ST_?

?

?

?

?

WHERESNO=:

OLD.SNO;

INSERTINTOT_ST_?

?

?

?

?

VALUES(:

NEW.SNO,:

NEW.SNAME,(SYSDATE-:

NEW.BIRTHDAY)/365);

ENDIF;

/*删除*/

IFDELETINGTHEN

DELETEFROMT_ST_?

?

?

?

?

WHERESNO=:

OLD.SNO;

ENDIF;

END.

3.验证触发器的作用

在T_STUD_?

?

?

?

?

中输入、修改、删除数据时,查看T_ST_?

?

?

?

?

表中的变化。

4.设计并调试过程

(1)分系dno统计T_STUD_?

?

?

?

?

表中各年龄的人数

四、思考题

1.如果在T_STUD_?

?

?

?

?

中不允许修改SNO,触发器将怎样改进?

2.调试过程

(1)中,如只要某系号dno的T_STUD_?

?

?

?

?

表中各年龄的统计人数,过程

(1)怎么样改进?

3.在过程

(2)中,如果要考虑客户或代理或产品的分月统计情况,过程将怎么样设计并实现

五、实验代码

1、已建createtablet_ST_21001(SNOCHAR(10),SNAMECHAR(8),AGENUMBER

(2),PRIMARYKEY(SNO));

2、CREATEORREPLACETRIGGERtg_STUD_TRG_21001

BEFOREINSERTORUPDATEORDELETEONT_STUD_21001

FOREACHROW

BEGIN

/*插入*/

IFINSERTINGTHEN

INSERTINTOT_ST_21001

VALUES(:

NEW.SNO,:

NEW.SNAME,(SYSDATE-:

NEW.BIRTHDAY)/365);

   ENDIF;

/*修改*/

   IFUPDATINGTHEN

   DELETEFROMT_ST_21001WHERESNO=:

OLD.SNO;

   INSERTINTOT_ST_21001

   VALUES(:

NEW.SNO,:

NEW.SNAME,(SYSDATE-:

NEW.BIRTHDAY)/365);

   ENDIF;

   /*删除*/

   IFDELETINGTHEN

   DELETEFROMT_ST_21001WHERESNO=:

OLD.SNO;

   ENDIF;

 END;

3、在T_STUD_21001中输入、修改、删除数据时,查看T_ST_21001表中的变化。

ALTERTABLET_STUD_21001DROPCOLUMNAGEcascadeconstraints;

INSERTINTOT_STUD_21001VALUES('0909080101','陈奕迅',date'1980-05-02','中国香港','D01');

INSERTINTOT_STUD_21001VALUES('0909080120','范逸臣',date'1978-02-15','中国台北','D01');

INSERTINTOT_STUD_21001VALUES('0909070306','黄伟佳',date'1991-01-01','北京','D06');

INSERTINTOT_STUD_21001VALUES('0909070510','王硕',date'1991-03-24','上海','D07');

INSERTINTOT_STUD_21001VALUES('0909090808','刘春光',date'1990-04-24','天津','D02');

SELECT*FROMT_ST_21001;

UPDATET_STUD_21001SETBIRTHDAY=DATE'1978-06-02'WHERESNAME='范逸臣';

SELECT*FROMT_ST_21001;DELETEFROMSTD_31720WHERESNAME='范逸臣';

SELECT*FROMT_ST_21001;

4、

(1)分系dno统计T_STUD_21001表中各年龄的人数

(2)根据Bank数据库,分街道(street)统计客户的存款余额(balance),其中街道名为变量

运行结果

计算机系D01

物理系D02

化学系D03

管理系D04

电子信息D05

外语系D06

已选择6行。

SQL>select*fromt_stud_21001wheresnamelike('白志恒');

SNOSNAMEBIRTHDAYADDRESSDNO

---------------------------------------------

0909101001白志恒08-5月-93新疆额敏D02

SQL>selectsno,sname,birthdayfromt_stud_21001wheresnamelike('李%四');

SNOSNAMEBIRTHDAY

-----

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 理化生

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1