Oracle实验三 基于大数据集的数据库操作

一、实验内容

    1.以常用“名字大全”与“百家姓”数据集为基础,生成不小于1千万条stud记录,要求,姓名的重复率不超过10%,学号以ABCD16EFGH为格式模板,即其中16是固定的,AB为从01到80,CD为从01到90,EF为01到50,GH为01到32;性别中,男、女占比为99%到99.5%。TEL与E-mail不作要求,但不能全空。Birthday要求从‘19940101’到‘19990731’分布。要求记录ORACLE数据文件的大小变化。(需要编制过程)

    2.分别测试stud有主键与没有主键情形下生成记录的时间。

    3.建立基于name的索引index_name,测试建立的时间与建立索引前后查询某一姓名及某一姓的时间长度。

    4.测试索引index_name建立前后,分姓(简单地理解为姓名的第1,2位)的记录数统计时间。

    5.按学号首位建立10个分区分别为part_0到part_9,测试建立分区前后分首位统计人数与分专业(EF位)统计人数的时间差别。

二、实验分析

    1.实验思路

    分别完成姓名表,学号表,学生其他信息表的建立和数据生成,最后将三张表数据同时插入学生信息表。

    2.实验过程

    0)写一个记录系统时间的过程,方便记录时间差

    1)导入基本的姓名表

    2)创建姓名各个字的视图

    3)将视图进行笛卡尔积插入学生姓名表

    4)成学生学号表

    5)建立相关随机函数:性别,电话,邮箱,出生日期

    6)生成学生其他信息表数据

    7)将三张表数据同时插入学生信息表

    8)记录各个操作的时间

    3.生成姓名表分析

    对原始的姓名创建3个视图,分别选出第一、二、三个字,其分别有572、1504和1200条记录,对于生成千万条数据,随机选出500、1200和20条记录就可达到实验要求。

    4.生成学生学号分析

--  ABCD16EFGH:每次生成两位,分四批生成,可以在1分钟左右完成生成

--建立过程中要使用的表

drop table t_student_sno_gh_j432;

drop table t_student_sno_ef_j432;

drop table t_student_sno_cd_j432;

drop table t_student_sno_ab_j432;

create table t_student_sno_gh_j432(sno number(10));

create table t_student_sno_ef_j432(sno number(10));

create table t_student_sno_cd_j432(sno number(10));

create table t_student_sno_ab_j432(sno varchar2(10));

--通过批处理,建立过程分批生成:

declare

i int;

begin

for i in 1..32 loop--先生成班级内学生序号

insert into t_student_sno_gh_j432 values(i);

end loop;

for i in 1..50 loop--生成班级序号

insert /*+ append */ into t_student_sno_ef_j432 select 160000+i*100+t_student_sno_gh_j432.sno from t_student_sno_gh_j432;

commit;

end loop;

for i in 1..90 loop--生成专业序号

insert /*+ append */ into t_student_sno_cd_j432 select i*1000000+t_student_sno_ef_j432.sno from t_student_sno_ef_j432;

commit;

end loop;

for i in 1..80 loop--生成学院序号

insert /*+ append */ into t_student_sno_ab_j432 select substr(10000000000+i*100000000+t_student_sno_cd_j432.sno,2,10) from t_student_sno_cd_j432;

commit;

end loop;

end;

/

    5.生成学生其他信息表分析

    1)建立随机生成性别函数f_getSex_j432,在性别表中插入143条记录,其中男女占142条,还有一条为“其他”,每次调用函数会随机返回一条记录,可是男女占比为99.3%,达到实验要求。

    2)另外建立随机产生电话函数f_getTel_j432、随机产生邮箱函数f_getEmail_j432、随机产生生日函数f_getBirthday_j432

    3)通过批处理产生大量数据

--建立基本信息模板表

create table t_sequence_id(

id number(10),

sex varchar2(32),

tel varchar2(3

评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值