数据库应用实验二
- 格式:docx
- 大小:63.16 KB
- 文档页数:7
数据库应用报告
学 院:计算机学院
班 级:
姓 名:
学 号:
课程名称:数据库应用(实验二)
第四章数据表与表数据
1.实验目的
1.了解SQL Sever的数据类。
2.了解数据表的结构特点。
3.学会使用对象资源管理器和T-SQL语句创建数据表。
4.学会在对象资源管理器中对数据表进行插入修改和删除数据操作。
5.学会使用T-SQL语句对数据表进行插入修改和删除数据的操作。
6.学会定义约束,使用默认值和规则。
2.实验准备
参照4.1.1节给出的数据库样本,为数据表设计列名称、列类型、列宽度、是否允许为空、。同时需要实施数据完整性,及PRIMARY KEY (主键)约束,FOREIGN KEY(外键)约束,UNIQUE(唯一)约束,CHECK(检查)约束,DEFAULT(默认值)约束,除此之外还需要默认值和规则。
3.实验内容和步骤
1)独立实践:为学生考试管理创建对应的数据表stud_exam。数据包括考试课程,考试类型,考试人数,考试时间,考试编号,监考人,考试班级,考试规则,考场记录等。
createtablestud_exam
(
Course nvarchar(20),
CourseTypenvarchar(20),
Number int,
testTimedatetime,
CourseIndexint,
TestTeachernvarchar(20),
TestGradenvarchar(10),
TestRulestext,
TestRectext
)
2)独立实践:写几个批处理,完成下列任务:首先创建一个名为dept_code的院系代码表,然后构建一个无穷循环结构,插入数据到列表中,直到有10条记录。用变量记录已存储到表中的记录数,当变量的值到达10时,使用BREAK语句退出循环。最后显示所输入的记录。
createtabledept_code
(
deptcodechar(2),
deptnamenvarchar(20)
)
go
declare @count int
set @count = 1
label:
while @count > 0
insertintodept_codevalues(N'01',N'abc')
if @count = 10
break
else
goto label
go
select*fromdept_code
go
3)独立实践:为表stud_info的zipcodee建立DEFAULT约束。
usestudent
go
altertablestud_info
addconstraintzipcode_dfltdefault'210004'forzipcode
4)独立实践:请参见4.1.1节学生管理数据库的样本,完成stud_info数据表的其他数据输入。
4)独立实践:请参见4.1.1节学生管理数据库的样本,完成teacher_info数据表的其他数据输入。
5)独立实践:将赵明同学的入学成绩更新成与学号为“0401040123”的孔荣同学的入学成绩相同。
usestudent
go
updatastud_info
setmark=(selectmarkfromstud_infowherestud_id='0401040123')
wherename= N'赵明'
第五章数据查询
1.实验目的
(1)掌握了select语句的基本语法。
(2)学会使用order by子句进行排序,使用group by子句进行分组统计。
(3)学会数据汇总,连接查询,嵌套查询的方法。
2.实验准备
(1)在服务器上创建用户数据库student;
(2)在用户数据库student中创建学生基本信息表(stud_info),学生成绩表(stud_grade),教师基本信息表(tacher_info),课程信息表(lesson_info),课程安排表(tach_schedule),院系代码表(dept_code),专业代码表(specialty_code),教研室信息表(stafffroom_info)和教室信息表(classroom_info);
(3)通过对象资源管理器或SQL编辑器向各个数据表输入实验数据。
3.实验内容和步骤
1) 独立实践:用SELECT语句查询教师基本信息表(tacher_info),学生成绩表(stud_grade),课程信息表(lesson_info),课程安排表(tach_schedule),院系代码表(dept_code),专业代码表(specialty_code),教研室信息表(stafffroom_info)和教室信息表(classroom_info)的所有记录。
select*fromteacher_info
select*fromstud_grade
select*fromlesson_info
select*fromteach_schedule
select*fromdept_code
select*fromspecialty_code
select*fromstaffroom_info
select*fromclassroom_info
2) 独立实践:查询所有电话号码中含有”3460”的教室所担任课程的编码。
selectcourse_id
fromteach_schedule
whereteacher_idin(selectteacher_id
fromteacher_info
wheretelephonelike'%3460%')
3)独立实践:在学生信息表中查询出生日期从“01-01-1987”到“12-31-1987”的学生学号、姓名、家庭住址和邮政编码。
selectstud_id,name,address,zipcode
fromstud_info
wherebirthdaybetween'01-01-1987'and'12-31-1987'
4)独立实践:用子查询的方法查找计算机工程系计算机应用教研室的教室名册。
select*
fromteacher_info
wheresubstring(teacher_id,1,4)='0101'
5)独立实践:查询计算机工程系参与了“多媒体技术“课程考试的学生学号、姓名和考试成绩。
selectstud_id,name,grade
fromstud_grade
wheresubstring(stud_id,3,2)in
(selectdeptcodefromdept_code
wheredeptname=N'计算机工程系')
andright(course_id,2)in
(selectright(course_id,2)
fromlesson_info
wherecourse_name=N'多媒体技术')
6)独立实践:写出课程安排表(teach_sechedule)与课程信息表(lesson_info)等值内连接的SQL语句。
select*
fromteach_scheduleinnerjoinlesson_info
onteach_schedule.course_id=lesson_info.course_id
orderbyteach_schedule.course_id
7)独立实践:写出教师信息表(teach_info)与课程安排表(teach_schedule)右外连接的SQL语句
selectlesson_info.course_name,teacher_,teacher_info.teacher_id
fromteacher_infoleftouterjoinlesson_info
onteacher_info.course_id=lesson_info.course_id
8)独立实践:写出教师基本信息表与课程安排表有外连接的SQL语句。
selectteacher_info.teacher_id,teacher_,teacher_info.course_id,teach_schedule.course_date,teach_schedule.room_id
fromteacher_inforightouterjointeach_schedule
onteacher_info.course_id=teach_schedule.course_id
9)独立实践:查询计算机工程系教师的最大年龄和最小年龄。
selectmax(age)as最大年龄,min(age)as最小年龄
fromteacher_info
whereleft(teacher_id,2)=
(selectdeptcodefromdept_code
wheredeptname=N'计算机工程系')
10)独立实践:查询计算机工程系学生的入学成绩发的最高分和最低分数。
selectmax(mark)as最高分数,min(mark)as最低分数
fromstud_info
wheresubstring(stud_id,3,2)='01'
11)独立实践:统计计算机工程系担任“多媒体技术”课程教学的教师的工资总和
selectsum(salary)as工资总和
fromteacher_info
whereleft(teacher_id,2)in
(selectdeptcode
fromdept_code
wheredeptname=N'计算机工程系')
andright(course_id,2)in
(selectright(course_id,2)
fromlesson_info
wherecourse_name=N'多媒体技术')
12)独立实践:按性别统计计算机工程系的学生人数。
selectgenderas性别,count(*)as人数
fromstud_info
groupbygender
13)独立实践:将计算机工程系的学生情况按出生日期的先后排序。