当前位置:文档之家› 华南理工数据库实验报告

华南理工数据库实验报告

《数据库系统》实验报告姓名:班级:学号:日期:课时一实验1 数据库【实验目的】掌握交互式和脚本执行下列数据库操作:•创建数据库•分离数据库•数据库文件备份•附加数据库•删除数据库【实验内容】1.1 创建数据库1、交互式创建数据库:数据库名称为jxsk;并查看数据库属性;修改数据库参数;把数据库jxsk文件增长参数设置为4MB,文件最大大小参数设置为100MB。

2、使用SQL指定参数创建数据库,查看数据库属性,要求如下:1)创建数据库,其名称为testbase1,其中包括:•数据文件名为testbase1_dat.mdf,存储在“D:\MyDatabase”文件夹;•事务日志文件名为testbase1_log.ldf,存储在“D:\MyDatabase”文件夹。

2)创建数据库,其名称为testbase2,其中包括:•数据文件:主文件组PRIMARY包括文件testbase2_prim_sub1_dat、testbase2_prim_sub2_dat;次文件组Grouptest1包括文件testbase2_group1_sub1_dat、testbase2_group1_sub2_dat;次文件组Grouptest2包括文件testbase2_group2_sub1_dat、testbase2_group2_sub2_dat;所有数据文件都存储在“D:\MyDatabase”文件夹。

•事务日志:事务日志文件名为testbase2_log.ldf,存储在“D:\MyDatabase”文件夹,文件大小初始为20MB,增长量20MB,最大500MB。

1.2 分离数据库1、交互式分离数据库testbase1。

2、使用系统存储过程分离数据库testbase2。

1.3 附加数据库将分离的数据库testbase1和testbase2附加到SQL Server 2005中,方法如下:1)使用交互式方法附加testbase1。

2)使用系统存储过程附加testbase2。

1.4 数据库文件备份复制数据库testbase1和testbase2物理文件到U盘或其他文件夹,方法如下:1)分离数据库testbase1,再复制其物理文件。

2)停止“SQL Server 2005服务”,再复制数据库testbase2物理文件。

实验2 数据库表【实验目的】•掌握交互式创建数据库表的方法。

•掌握使用SQL命令创建数据库表的方法。

•掌握向数据库表中录入数据的方法。

【实验内容】2.1 创建数据库表在数据库jxsk中,创建如下数据库表。

其中表T、表S使用交互式方法创建,其余表使用SQL 创建。

表2-5 授课表TCEvaluation char 20 是评价2.2 修改数据库表结构1、向表S中追加学籍列追加的列定义如下:1、修改表S中的列定义把表S中的NATIVE列定义修改成下列定义:NATIVE char 16 是学籍2、删除表S中的NATIVE列3、用SQL实现14、用SQL实现22.3 删除数据库表1、交互式删除表TC2、用SQL删除表T实验3数据操作【实验目的】•掌握各种录入数据至数据库表的方法。

•掌握修改数据库表中数据的方法。

•掌握删除数据库表中数据的方法。

•掌握复制数据库表的方法。

【实验内容】3.1 录入数据至数据库表1、把一个Excel工作表中的数据导入数据库表S中。

此Excel工作表的文件名为S_EXCEL.xls,其数据格式内容如图3-1所示,满足导入到SQL Server数据库表中的要求。

2、交互式录入数据至数据库表T中,数据如图3-2所示。

3、使用INSERT INTO语句插入数据至数据库表C,数据如图3-3所示。

3.2 修改数据1、用SQL语句修改数据库表S中的数据。

要求:把学生“周武”的系别DEPT改为“信息”。

3.3 删除数据1、用SQL语句删除数据库表T中的数据。

要求:删除教师“王平”的记录数据。

3.4 复制数据表1、用SQL复制数据库表S生成一张新的数据库表test1。

2、用SQL复制数据库表T中的“男”同学记录生成一张新的数据库表test2。

课时二实验4实体完整性约束(若无特别说明,实验4及以后的实验全部用SQL完成)【实验目的】•认识完整性约束对数据库的重要性。

•掌握实体完整性的创建、修改、维护。

•掌握域完整性的创建、修改、维护。

•掌握参照完整性的创建、修改、维护。

•掌握用户定义的完整性的创建、修改、维护。

【实验内容】4.1 实体完整性约束1、为现有表T在TNO列上创建PRIMARY KEY约束。

2、创建数据库表TEST_C,并以列约束形式创建PRIMARY KEY约束,TEST_C表的结构定义如下:表名:TEST_C。

包含的列如下:课程号:CNO CHAR(2);课程名:CN CHAR(10);课时:CT TINYINT;主键:CNO主键约束名:PK_TEST_C。

3、创建数据库表TEST_TC,并以表约束形式创建PRIMARY KEY约束,TEST_TC表的结构定义如下:表名:TEST_TC。

包含的列如下:教师号:TNO CHAR(2);课程号:CNO CHAR(2);主键:(TNO, CNO);主键约束名:PK_TEST_TC。

4、为表C中的CN列创建“UNIQUE”约束UNIQUE_C。

5、为表TEST_TC增加新列ID_TC,并创建此列属性为IDENTITY。

6、删除表C中CN列的UNIQUE约束UNIQUE_C。

4.2 域完整性约束1、为表S创建CHECK约束。

要求本科生的年龄限制在14 —40岁之间,此约束对表S中已有数据做检查。

2、创建数据库表TEST_S,包含DEFAULT和CHECK约束,表TEST_S的结构定义如表4-1所示。

表4-1 表TEST_S的结构定义CHECK_AGE3、删除表TEST_S中列SEX的DEFAULT约束及列AGE的CHECK约束。

4.3 参照完整性约束1、用SQL创建表T与表TC之间的参照关系。

表T与表TC通过外键TNO实现参照完整性约束FK_T_TC:字表TC中TNO的取值要参照主表T中TNO的取值。

要求取消“创建中检查现有数据”,选择“级联删除相关记录”。

2、删除表C和表TC之间的参照关系。

实验5索引【实验目的】•掌握创建、修改、删除索引的方法。

•掌握索引的管理和维护。

【实验内容】1、交互式为表SC在列SNO和列CNO上创建PRIMARY KEY,系统自动在此PRIMARY KEY上按升序创建聚簇索引PK_SC_1。

2、交互式为表T在TN列上按升序和在AGE列上按降序创建非聚簇索引IND_TN_AGE。

3、为表T在TNO列上按降序创建聚簇索引IND_TNO。

4、为表C在CN列上按升序创建唯一索引IND_CN。

5、删除以上索引。

课时三实验6视图【实验目的】掌握创建、更新、删除视图的方法。

【实验内容】1、交互式创建视图View_S,其数据来源于一个基本表S,包含的数据有SNO、SN、SEX、DEPT。

2、交互式创建成绩表视图View_SCORETABLE,其数据来源于两个基本表C和CS,以及一个已有的视图View_S,包含的数据有来自视图View_S的字段SN、来自表C的字段CN、来自表SC的字段SCORE。

3、使用SQL创建课程表视图View_CTABLE,其数据来源于两个基本表T和C,包含的数据有来自表T的字段TN、表C的字段CN。

4、交互式删除视图View_S中的字段SNO。

5、用SQL给视图View_CTABLE增加一个课时字段CT。

6、交互式修改视图View_S中的数据来实现对其基本表S中数据的修改。

7、修改View_S的定义,使其包含基本表S的主键字段SNO,再对View_S执行插入操作。

8、修改View_S的定义,使其包含基本表S的主键字段SNO,再对View_S执行插入操作。

9、用SQL对视图View_S执行DELETE操作,查看此视图的基本表S中数据的变化。

10、用SQL删除视图View_S和View_CTABLE。

实验7 数据查询【实验目的】•掌握从简单到复杂的各种数据查询,包括单表查询、多表连接查询、嵌套查询、集合查询。

•掌握用条件表达式表示检索条件。

•掌握用聚合函数计算统计检索结果。

【实验内容】7.1单表查询1、指定列或全部列查询1)查询S表中全体学生的详细记录。

2)查询所有学生的姓名及其出生年份。

2、按条件查询及模糊查询1)查询考试成绩有不及格的学生的学号。

2)查询年龄在20 —23岁之间的学生的姓名、系名和年龄。

3)查询姓李的学生的姓名、学号和性别。

4)查询名字中第二个字为“明”字的男学生的姓名和系名。

3、对查询结果排序1)查询信息系、计算机系学生的姓名、系名,结果按系名升序,按姓名降序排序。

2)查询所有有课程号C2成绩的学生的学号、课程号和成绩,并按成绩降序排序。

4、使用聚集函数的查询1)查询计算机系学生总人数。

2)查询选修了微机原理课程的学生人数、平均成绩和最高成绩。

5、分组统计查询1)查询各个课程号及相应的选择人数。

2)查询选修了两门以上课程的学生姓名和平均成绩。

7.2 连接查询1、连接查询1)查询所有选课学生的学号、姓名、选课名称及成绩。

2)查询每门课程的课程号、任课教师姓名及其选课人数。

2、自身连接1)查询所有比“刘伟”工资高的教师的姓名、工资以及刘伟的工资。

2)查询同时选修了“程序设计”和“微机原理”的学生的姓名、课程名。

3、外连接查询所有学生的学号、姓名、选课名称及成绩(没有选课的学生的选课信息显示为空)。

7.3 嵌套查询1、返回一个值的子查询查询与“刘伟”教师职称相同的教师号、姓名和职称。

2、返回一组值的子查询1)使用ANY谓词查询讲授课程号为C5的教师姓名。

2)使用IN谓词查询讲授课程号为C5的教师姓名。

3)使用ALL谓词查询其他系中比计算机系所有教师工资都高的教师的姓名、工资和所在系。

4)使用EXISTS谓词查询没有讲授课程号为C5的课程的教师姓名、所在系。

5)使用NOT EXISTS谓词查询至少选修了学生S2选修的全部课程的学生的学号。

7.4 集合查询1、查询年龄不大于19岁或者属于计算机系的学生。

(使用UNION)课时四实验8 存储过程【实验目的】•通过实验掌握存储过程的概念、功能。

•掌握用户自定义存储过程的创建、修改、删除和执行。

【实验内容】1、交互式创建并执行一存储过程Pro_Qsinf:通过学生学号来查询学生的姓名、年龄、系名。

默认学号是S2。

2、用SQL创建并执行一存储过程Pro_Qscore:通过学生姓名和课程名查询该生该课程的成绩。

3、用SQL修改存储过程Pro_Qsinf:将存储过程的定义修改为根据学号查询姓名、性别、系名,设置默认学号为S1。

相关主题