数据库大作业

更新时间:2023-10-17 14:23:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

2015 - 2016 年 课程名称:学生管理系统

班级:14级软件设计4班 学号:1415925316 姓名:汪奎

《 大 型 数 据 库 技 术 》 大 作 业

一. ORACLE11g的安装与配置实验,数据名为wk。实验要求截图如下: 企业版与只安装oralce服务器以及安装完成为以下3张截图

利用DBCA创建数据库并以汪奎首字母wk命名

所有账户使用同一管理口令为本人学号1415925316

共享数据库以及选择示例模式截图如下

二. 用户的创建与权限管理

(1)新建一个用户表空间MYTBS,要求大小为500M。MYTBS表空间下有两个数据文件MYTBS1.DBF和MyTBS2.DBF,文件分别放在E和F两个不同的磁盘分区。

在E盘建立一个wk的文件夹,在F盘建立一个wk的文件夹,开始创建表空间。

输入

Create tablespace MYTBS

Datafile ‘E\\wk\\MYTBS1.dbf’ size 250M, ‘F\\wk\\MYTBS2.dbf’ size 250M;

2. )创建用户配置文件userprofile

输入代码如下:Create profile userprofilelimit

Password_life_time 10密码生存周期10天 Failed_login_attempts 3密码输入不得超过3次 Password_lock_time 1;超过3次锁一天

查询代码以及截图 select * from dba_profiles:

3.创建一个用户名称为wk的用户,密码为1415925316为新帐号设置默认表空间为MYTBS。系统所有对象必须建立在该帐号下,所有对象必须存储在MYTBS表空间中。用户的配置文件为userprofile; 输入代码:Create user wk indentified by 1415925316 Default tablespace MYTBS;

查询以及查询结果

(4)为用户赋予登录Oracle的权限;为用户赋予创建任何表、创建任何索引的权限;将DBA的角色给新建用户;查看对应的用户获得的权限和角色(用数据字典表user_sys_privs,user_tab_privs,user_role_等,,截图语句及查询结果)

(5)用新建的帐号登录。并执行show user命令,显示当前登录用户。 完成以上命令,并写入文档中。

(三)Oracle对象的创建与管理 1.课题简介

学生信息管理系统是因需求而必须具备相应管理功能的系统。采用pl/sql作为编程语言,oracle作为数据存储。在完成用户需求同时,针对学生成绩及其数据特点,可以全面实现对学生成绩的插入、查询、修改、删除和输出等功能的计算机管理。大大减轻了工作量,减少人为的工作失误,提高学生成绩管理的效率。 2.数据库表清单

数据库所有数据表的清单,包括表的类型,表的名称和中文含义。 学生表:

字段名 Sname Sno Ssex Sage Sdept 课程表:

字段名 Cname Cno Score Tname 成绩表: 字段名 Sno Cno Grade 老师表:

字段名 Tname Tno Tage Tsex Cname 学生表:

create table wk_student( Sname char(30) not null, Sno char(20) primary key, Ssex char(4) not null, Sage char(8) not null, Sdept char(40) not null ); 课程表

类型 Char(30) Char(20) Int Char(4) Char(40) 属性 老师姓名 老师编号 老师年龄 老师性别 所授课程 备注 Not null Primary(主键) Not null Not null Not null 类型 Char(20) Char(20) fioat 属性 学号 课程号 该成绩 备注 联合Primary(主键) Sno与wk_student表中的sno外键关联 Cno与wk_couese表中的cno外键关联 Not null 类型 Char(30) Char(20) Numeric(2,1) Char(40) 约束 Not null Primary(主键) Not null Not null 属性 课程名 课程号 学分 任课老师 类型 Char(30) Char(20) Char(4) Char(8) Char(40) 属性 学生姓名 学生学号 学生性别 学生年龄 学生系别 备注 Not null Primary(主键) Not null Not null Not null create table wk_course( Cname char(30) not null, Cno char(20) primary key, Score Numeric(2,1) not null, Tname char(40) not null ); 成绩表:

create table wk_grade(

Sno char(20) references wk _student(Sno) , Cno char(20) references wk _course(Cno), Grade float not null,

constraint sc_wk_grade primary key(Sno,Cno) ); 老师表:

create table wk_teacher( Tname char(30) not null, Tno char(20) primary key, Tage int not null, Tsex char(4) not null, Cname char(40) not null );

3.普通数据表及索引的实现

普通表的创建语法(含主键、外键及自定义约束的实现)。

查看建立的四个表:

4.索引、视图的实现

SQL> create index student_name on wk_student(Sname); 索引已创建。

SQL> create unique index student_grade on wk_grade(Grade);

索引已创建。

SQL> create index course_name on wk_course(Cname ASC); 索引已创建。

SQL> create view wk_teacher_view as 2 select Tname,Tno,Tage,Tsex,Cname 3 from teacher; 视图已创建。

SQL> create view wk_course_view as 2 select Cname,Cno,Score,Tname 3 from wk_course; 视图已创建。

SQL> create view wk_grade_view as 2 select Sno,Cno,Grade 3 from wk_grade; 视图已创建。

SQL> create view wk_student_view as 2 select Sname,Sno,Ssex,Sage,Sdept 3 from wk_student; 视图已创建。

SQL> SELECT VIEW_NAME,VIEW_TYPE,READ_ONLY,TEXT_LENGTH 2 FROM USER_VIEWS;

VIEW_NAME VIEW_TYPE R TEXT_LENGTH ------------------------------ ------------------------------ - -----------

wk_COURSE_VIEW N 44 wk_GRADE_VIEW N 35 wk_STUDENT_VIEW N 49 wk_TEACHER_VIEW N 45

(四)PL/SQL编程(30分)

(1)创建函数功能

1.1实现功能为:在wk_student_表和wk_grade表中查询出任意给定的学生号的姓名及学生的课程号。 SQL> create or replace function wkfun_name (s_Sno wk_student.Sno%type) 2 return wk_student.Sname%type 3 as

4 s_sname wk_student.Sname%type; 5 c_cno wk_grade.Cno%type; 6 begin

7 select Sname into s_sname from wk_student where Sno = s_Sno; 8 select Cno into c_cno from wk_grade where Sno = s_Sno; 9 return s_sname; 10 exception

11 when no_data_found then

12 dbms_output.put_line('未找到该学号。'); 13 end; 14 / 函数已创建。 【截图】

1.2函数

SQL> create or replace function wkfun_name (s_sno wk_grade.Sno%type) 2 return wk_grade.Cno%type 3 as

4 s_grade wk_grade.Grade%type;

5 begin

6 select sum(grade) into s_grade from wk_grade where Sno = s_sno; 7 return s_grade; 8 exception

9 when no_data_found then

10 dbms_output.put_line('未找到该学号。'); 11 end; 12 / 函数已创建。

创建触发器功能:实现更新wk_grade表中的Grade值,级联更新wk_student表相应值。 SQL> create or replace trigger wk_tri 2 after update of sno on wk_student 3 for each row 4 begin

5 update wk_grade set Sno=:new.Sno 6 where Sno=:old.Sno;

7 dbms_output.put_line('更新完毕。'); 8 end; 9 / 触发器已创建

过程1:计算老师的总人数。

SQL> create or replace procedure wk_pcd1_eacher_count is 2 t_count number; 3 begin

4 select count(*) into t_count from wk_student;

5 dbms_output.put_line('教师总人数为:'||' '|| t_count); 6 end; 7 / 过程已创建。

(五)数据库的备份与恢复(20分) (1)设置归档模式。

SQL> conn sys/1415925316 as sysdba 已连接。

SQL> archive log list

数据库日志模式 非存档模式 自动存档 禁用

存档终点 USE_DB_RECOVERY_FILE_DEST 最早的联机日志序列 8

当前日志序列 10SQL> shutdown immediate 数据库已经关闭。 已经卸载数据库。 ORACLE 例程已经关闭。 SQL> starup mount

SP2-0734: 未知的命令开头 \忽略了剩余的行。 SQL> startup mount ORACLE 例程已经启动。

Total System Global Area 1670221824 bytes Fixed Size 2176328 bytes Variable Size 989858488 bytes Database Buffers 671088640 bytes Redo Buffers 7098368 bytes 数据库装载完毕。

SQL> alter database archivelog; 数据库已更改。

(2)归档当前日志。 SQL> alter database open;

数据库已更改。

SQL> alter system switch logfile; 系统已更改。

(3)数据库完全备份及实现。 SQL> select name from v$controlfile 2 union all

3 select member from v$logfile 4 union all

5 select name from v$datafile 6 union all

7 select name from v$tempfile;

NAME

-------------------------------------------------------------------------------- E:\\APP\\ASUS\\ORADATA\\wk\\CONTROL01.CTL

E:\\APP\\ASUS\\FLASH_RECOVERY_AREA\\wk\\CONTROL02.CTL E:\\APP\\ASUS\\ORADATA\\wk\\REDO03.LOG E:\\APP\\ASUS\\ORADATA\\wk\\REDO02.LOG E:\\APP\\ASUS\\ORADATA\\wk\\REDO01.LOG E:\\APP\\ASUS\\ORADATA\\wk\\SYSTEM01.DBF E:\\APP\\ASUS\\ORADATA\\wk\\SYSAUX01.DBF E:\\APP\\ASUS\\ORADATA\\wk\\UNDOTBS01.DBF E:\\APP\\ASUS\\ORADATA\\wk\\USERS01.DBF E:\\APP\\ASUS\\ORADATA\\wk\\EXAMPLE01.DBF E:\\APP\\MYTBS1.DBF NAME

-------------------------------------------------------------------------------- F:\\wk\\MYTBS2.DBF

E:\\APP\\ASUS\\ORADATA\\wk\\TEMP01.DBF 已选择13行。

(4)数据库完全恢复及实现。

启动mount模式:startup mount;打开数据库:alter database open;

(5)利用数据泵实现逻辑导出与导入。

首先在 g:\\wk 下创建directory 目录 dump_dir 用来存放转储文件

create directory dump_dir as 'g:\\wk';

然后打开CMD,输入以下代码: C:\\Users\\asus>expdp 用户名:wk 口令:1415925316

本文来源:https://www.bwwdw.com/article/r5vf.html

Top