数据库应用实验二

  • 格式: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)独立实践:将计算机工程系的学生情况按出生日期的先后排序。