《数据库原理与应用》实验作业布置
实验1 数据库的建立修改与删除
完成以下实验报告:
《数据库原理与应用》实验报告
院名 学号 专业 姓名 年级 教师 班级 成绩 一、实验题目 实验1 数据库的建立修改与删除 二、实验环境
操作系统:Windows XP。
数据库管理系统:MS SQL Server 2000 或MS SQL Server 2008。 三、实验目的
1.熟悉SQL Server 2000上机环境,学会SQL Server 2000“企业管理器”以及“查询分析器”的启动与退出;或熟悉MS SQL Server 2008上机环境,学会SQL Server Management Studio的启动与退出。
2.掌握建立数据库的两种方法。
3.掌握查看和修改数据库的两种方法。 4.掌握删除数据库的两种方法。 四、实验内容 (一) 规定内容
1. 在用户方便的存储空间上建立存放用户数据库的文件夹。本实验在D盘根目录下建立文件夹:D:\\SQL2000DB,再建立存放T_SQL源代码的文件夹:D:\\SQL2000DB\\T_SQL
2.利用企业管理器创建学生课程数据库ST,参数如表1.1所示。
表1.1 ST数据库属性设置 文件组 文件 类型 逻辑文件名 ST_Data ST_log 物理文件名 D:\\SQL2000DB\\ ST_Data.mdf D:\\SQL2000DB\\ ST_log.ldf 初始 自动 最大 大小 增量 容量 3M 2M 1M 10% 不限制 增长 10M 主文件组 主数据 PRIMARY 文件 日志 文件 3.利用企业管理器查看ST数据库的属性。
4.使用T-SQL语句建立学生-课程数据库ST,参数如表1.1所示。 5.使用T-SQL语句建立数据库JXDB,参数如表1.2所示。
表1.2 数据库JXDB属性设置 文件组 文件 类型 逻辑文件名 物理文件名 初始 自动 最大 大小 增量 容量 3M 2M 10% 10% 不限制 增长 30M 主数据 D:\\SQL2000DB\\ JXDB_Data 主文件组 文件 JXDB_Data.mdf PRIMARY 次数据 JXDB_Data1 D:\\SQL2000DB\\ 1
文件 次数据 JXDB_Data2 自定义 文件 文件组 次数据 JX_Group1 JXDB_Data3 文件 日志 文件 JXDB_log JXDB_Data1.ndf D:\\SQL2000DB\\ JXDB_Data2.ndf D:\\SQL2000DB\\ JXDB_Data3.ndf D:\\SQL2000DB\\ JXDB_log.ldf 1M 1M 2M 1M 1M 10% 20M 10M 不限制 增长 6.使用T-SQL语句为数据库JXDB添加文件组JX_Group2,并为此文件组添加1个数据文件 JXDB_Data4;添加1个日志文件JXDB_log1。参数由用户自己设定。
7.使用T-SQL语句修改数据库JXDB中次数据文件JXDB_Data4的属性:文件初始大小改为5M,增长方式改为每次按20%增长。删除日志文件JXDB_log1。
8.使用T-SQL语句删除数据库JXDB。 (二) 自定内容
五、出现的问题及解决方法
实验2 表结构的建立修改删除及完整性约束条件定义
完成以下实验报告:
《数据库原理与应用》实验报告
院名 学号 专业 姓名 年级 教师 班级 成绩 一、实验题目
实验2 表结构的建立修改删除及完整性约束条件定义 二、实验环境
操作系统:Windows XP。
数据库管理系统:MS SQL Server 2000或MS SQL Server 2008。 三、实验目的
1.掌握建立、修改与删除表结构的两种方法。 2.掌握定义完整性约束条件的方法。
3.掌握利用企业管理器和使用T-SQL语句向表中插入记录的方法。 四、实验内容 (一) 规定内容
1.对学生课程数据库ST进行完整性约束条件规划设计。 设计结果如表2.1所示。
表2.1 学生课程数据库ST完整性约束条件 表名 完整性约束条件 (1) 学号取值唯一且不能为空值 学生 (2) 姓名不能为空值 (3) 性别只能为“男”或“女”。默认值为?男? (4) 课号取值唯一且不能为空值 (5) 课名取值唯一 课程 (6) 先修课号只能是学校已开设的课号 修改课号时,与之对应的先修课号自动级联修改
约束类型 主健 Not null Check;default 主健 unique 外键 触发器 2
若某课程有先修课,则其先修课程删除时该课程的先修课号置空值 触发器 当插入或修改“先修课号”时,若该课号在表中不存在,则递归插入 触发器 (7) 学号、课号取值唯一且不能为空值 主健 check (8) 成绩采用百分制 (9) 学号只能是学生表中已有的学号。 外键 当修改某学生学号时,该生所有选课记录的学号自动级联修改; 级联更改 选修 当删除某学生时,该生所有选课记录自动级联删除。 级联删除 (10) 课号只能是课程表中已有的课号;当修改课程表中的课号时,外键 选修表中所有选修该课程的课号自动级联修改;当删除课程表中某课级联更改 程时,若选修表中该课程有学生选修,则拒绝删除。 拒绝删除 2.对学生课程数据库ST中各个表结构进行详细设计。 学生、课程及选修表结构设计结果分别如表2.2、2.3和2.4所示。
表2.2 “student”表结构 列名 数据类型 允许Null值 约束条件 primary key sno char(9) sname char(8) Not null check(性别 in('男','女')) ssex char(2) default '男' sage sdept smallint char(20) 表2.3 “course”表结构
列名 数据类型 允许Null值 约束条件 primary key cno char(4) cname char(16) unique ccredit smallint references 课程(课号) cpno char(4) 级联更改,置空值删除 触发器 递归插入触发器 表2.4 “sc”表结构 列名 数据类型 允许Null值 约束条件 references 学生(学号) sno char(9) on delete cascade on update cascade references 课程(课号) cno char(4) on update cascade grade decimal(5,1) check(成绩>=0 and成绩<=100) 表级约束:primary key(学号, 课号) 3.使用企业管理器在数据库ST中建立学生、课程及选修表结构。 4.使用企业管理器为学生、课程及选修表录入若干行数据。 5.使用企业管理器删除学生、课程及选修表
6.使用T_SQL语言在数据库ST中建立学生、课程及选修表结构。 7.使用T_SQL语言为学生、课程及选修表插入若干行数据。 (二) 自定内容
五、出现的问题及解决方法
3
实验3 数据查询与更新
完成以下实验报告:
《数据库原理与应用》实验报告
院名 学号 专业 姓名 年级 教师 班级 成绩 一、实验题目
实验3 数据查询与更新 二、实验环境
操作系统:Windows XP。
数据库管理系统:MS SQL Server 2000或MS SQL Server 2008。 三、实验目的
1.掌握SELECT语句的语法、语义及语用。 2.掌握基于单表的查询方法。 3.掌握基于多表的查询方法。 4.掌握相关与不相关的嵌套查询。 5.掌握集合查询。
6.掌握插入(INSERT)、修改(UPDATE)和删除(DELETE)语句的使用。 四、实验内容 (一) 规定内容 1. 单表查询 USE ST
--[3_1] 查询全体学生的详细记录。
select * from student;
运行结果:
sno sname ssex sage sdept --------- -------- ---- ------ --------------------
201313101 李勇 男 20 CS 201313102 刘晨 女 19 CS 201313103 王敏 女 18 MA 201313104 张立 男 19 IS
--[3_2] 查询选修了课程的学生学号。
select distinct sno from sc;
运行结果:
sno --------- 201313101 201313102
--[3_3] 将学生表中的sno、sname这2列合并为1列snosname输出,其余列不变。
select sno+sname snosname,ssex,sage,sdept
4
from student;
运行结果:
snosname ssex sage sdept ----------------- ---- ------ --------------------
201313101李勇 男 20 CS 201313102刘晨 女 19 CS 201313103王敏 女 18 MA 201313104张立 男 19 IS
--[3_4] 查询年龄不在20~23岁之间的学生姓名、系别和年龄。
select sname,sdept,sage from student
where sage<20 or sage>23;
运行结果:
sname sdept sage -------- -------------------- ------
刘晨 CS 19 王敏 MA 18 张立 IS 19
--[3_5] 查询计算机科学系(cs)、数学系(ma)和信息系(is)学生的姓名和性别。SELECT sname,ssex FROM student
WHERE sdept IN ( 'cs','ma','is' );
运行结果:
sname ssex -------- ---- 李勇 男 刘晨 女 王敏 女 张立 男
--[3_6] 查询所有姓刘学生的姓名、学号和性别。
SELECT sname,sno,ssex FROM student
WHERE sname LIKE '刘%';
运行结果:
sname sno ssex -------- --------- ---- 刘晨 201313102 女
--[3_7] 查询名字中第2个字为\阳\字的学生的姓名和学号。
SELECT sname,sno FROM student
WHERE sname LIKE '_阳%';
运行结果:
sname sno -------- ---------
5