广东工业大学数据库原理实验报告.doc
《广东工业大学数据库原理实验报告.doc》由会员分享,可在线阅读,更多相关《广东工业大学数据库原理实验报告.doc(27页珍藏版)》请在冰点文库上搜索。
![广东工业大学数据库原理实验报告.doc](https://file1.bingdoc.com/fileroot1/2023-4/28/a7a8e15d-6ec8-4a87-8f15-d0410536a1cc/a7a8e15d-6ec8-4a87-8f15-d0410536a1cc1.gif)
数据库原理实验报告
课程名称____数据库系统_____
学生学院____计算机学院______
专业班级__
学号___________
学生姓名_____________
指导教师________________
2012年12月3日
27
实验一数据库及基本表的建立
一、实验目的
1、掌握SQLSERVER的查询分析器和企业管理器的使用;
2、掌握创建数据库和表的操作;
二、实验内容和要求
1、分别使用SQL语句、企业管理器(EnterpriseManager)创建数据库;
2、使用SQL语句、企业管理器(EnterpriseManager)创建数据库表;
三、实验主要仪器设备和材料
1.计算机及操作系统:
PC机,Windows2000/xp;
2.数据库管理系统:
SQLsever2000/2005;
四、实验方法、步骤及结果测试
创建一个教学管理数据库SC,其描述的信息有:
学生信息、课程信息、教师信息、学生选课成绩、授课信息、班级信息、系部信息、专业信息。
创建:
student表(学生信息表)、course表(课程信息表)、teacher表(教师信息表)、student_course表(学生选课成绩表)、teacher_course表(教师上课课表)等。
题目1、创建数据库:
实现代码及截图:
查询分析器执行情况:
SQL语句及执行结果显示
CREATEDATABASEsc
ONPRIMARY
(NAME=sc_Data,
FILENAME=’E:
\3110006079
\sc_Data.mdf’,
SIZE=30MB,
MAXSIZE=100MB,
FILEGROWTH=20%)
LOGON
(NAME=sc_Log,
FILENAME=’E:
\3110006079
\sc_Log.mdf’,
SIZE=3MB,
MAXSIZE=100MB,
FILEGROWTH=1MB
)
实验结果截图显示
题目2、创建基本表
创建各表的实现代码及截图:
查询分析器执行情况:
SQL语句及执行结果显示
------------------------------
--Tablestructurefor`class`
------------------------------
DROPTABLEIFEXISTS`class`;
CREATETABLE`class`(
`spno`char(8)NOTNULL,
`class_no`char(4)NOTNULL,
`header`char(8)DEFAULTNULL
)ENGINE=InnoDBDEFAULTCHARSET=utf8;
------------------------------
--Recordsofclass
------------------------------
------------------------------
--Tablestructurefor`course`
------------------------------
DROPTABLEIFEXISTS`course`;
CREATETABLE`course`(
`cno`char(10)NOTNULL,
`cname`char(20)NOTNULL,
`spno`char(8)NOTNULL,
`ctno`tinyint(4)DEFAULTNULL,
`lecture`tinyint(4)DEFAULTNULL,
`experiment`tinyint(4)DEFAULTNULL,
`semester`tinyint(4)DEFAULTNULL,
`credit`tinyint(4)DEFAULTNULL
)ENGINE=InnoDBDEFAULTCHARSET=utf8;
------------------------------
--Recordsofcourse
------------------------------
------------------------------
--Tablestructurefor`department`
------------------------------
DROPTABLEIFEXISTS`department`;
CREATETABLE`department`(
`dno`char(6)NOTNULL,
`dept_name`char(20)NOTNULL,
`header`char(8)DEFAULTNULL
)ENGINE=InnoDBDEFAULTCHARSET=utf8;
------------------------------
--Recordsofdepartment
------------------------------
------------------------------
--Tablestructurefor`speciality`
------------------------------
DROPTABLEIFEXISTS`speciality`;
CREATETABLE`speciality`(
`spno`char(8)NOTNULL,
`dno`char(6)NOTNULL,
`spname`char(20)NOTNULL
)ENGINE=InnoDBDEFAULTCHARSET=utf8;
------------------------------
--Recordsofspeciality
------------------------------
------------------------------
--Tablestructurefor`student`
------------------------------
DROPTABLEIFEXISTS`student`;
CREATETABLE`student`(
`s_no`char(8)NOTNULL,
`sname`char(8)NOTNULL,
`sex`char
(2)DEFAULTNULL,
`sbirthday`datetimeDEFAULTNULL,
`dno`char(6)NOTNULL,
`spno`char(8)NOTNULL,
`class_no`char(4)DEFAULTNULL
)ENGINE=InnoDBDEFAULTCHARSET=utf8;
------------------------------
--Recordsofstudent
------------------------------
------------------------------
--Tablestructurefor`student_course`
------------------------------
DROPTABLEIFEXISTS`student_course`;
CREATETABLE`student_course`(
`s_no`char(8)NOTNULL,
`tcid`smallint(6)NOTNULL,
`score`tinyint(4)DEFAULTNULL
)ENGINE=InnoDBDEFAULTCHARSET=utf8;
------------------------------
--Recordsofstudent_course
------------------------------
------------------------------
--Tablestructurefor`teacher`
------------------------------
DROPTABLEIFEXISTS`teacher`;
CREATETABLE`teacher`(
`t_no`char(8)NOTNULL,
`t_name`char(8)NOTNULL,
`t_sex`char
(2)DEFAULTNULL,
`t_birthday`datetimeDEFAULTNULL,
`dno`char(6)NOTNULL,
`tech_title`char(10)DEFAULTNULL
)ENGINE=InnoDBDEFAULTCHARSET=utf8;
------------------------------
--Recordsofteacher
------------------------------
------------------------------
--Tablestructurefor`teacher_course`
------------------------------
DROPTABLEIFEXISTS`teacher_course`;
CREATETABLE`teacher_course`(
`tcid`smallint(6)NOTNULL,
`t_no`char(8)NOTNULL,
`spno`char(8)NOTNULL,
`class_no`char(4)DEFAULTNULL,
`cno`char(10)NOTNULL,
`semester`char(6)DEFAULTNULL,
`schoolyear`char(10)DEFAULTNULL,
PRIMARYKEY(`tcid`)
)ENGINE=InnoDBDEFAULTCHARSET=utf8;
------------------------------
--Recordsofteacher_course
------------------------------
实验结果截图显示
题目3、查看各数据表之间的关系,生成数据库关系图。
生成数据库关系图截图显示
题目4、利用查询分析器修改上述各表。
(1)、用INSERT语句向各个表中插入数据录入5条记录。
录入时注意体会外键约束。
实现代码及截图:
查询分析器执行情况:
SQL语句及执行结果显示
INSERTINTO`student`VALUES('6079','陈三','男','1991-02-2020:
32:
06','1','1','6');
实验结果截图显示(插入数据的表格)
实现代码及截图:
查询分析器执行情况:
SQL语句及执行结果显示
INSERTINTO`course`VALUES('1','计算机网络','1','1','20','5','25','5');
实验结果截图显示(插入数据的表格)
实现代码及截图:
查询分析器执行情况:
SQL语句及执行结果显示
INSERTINTO`student_course`VALUES('6079','1','90');
;
实验结果截图显示(插入数据的表格)
实现代码及截图:
查询分析器执行情况:
SQL语句及执行结果显示
INSERTINTO`teacher`VALUES('1','廖老师','男','1989-01-0120:
41:
12','1',null);
实验结果截图显示(插入数据的表格)
实现代码及截图:
查询分析器执行情况:
SQL语句及执行结果显示
INSERTINTO`department`VALUES('1','计算机学院','廖老师');
INSERTINTO`department`VALUES('2','信息工程学院','张三');
实验结果截图显示(插入数据的表格)
实现代码及截图:
查询分析器执行情况:
SQL语句及执行结果显示
INSERTINTO`speciality`VALUES('1','1','计算机网络');
INSERTINTO`speciality`VALUES('2','1','Java');
实验结果截图显示(插入数据的表格)
实现代码及截图:
查询分析器执行情况:
SQL语句及执行结果显示
INSERTINTO`class`VALUES('1','6','廖老师');
实验结果截图显示(插入数据的表格)
实现代码及截图:
查询分析器执行情况:
SQL语句及执行结果显示
INSERTINTO`teacher_course`VALUES('1','1','1','6','1','2','2012');
实验结果截图显示(插入数据的表格)
共8组(共8个表)
(2)、用UPDATE语句更改student表中数据;
实现代码:
查询分析器执行情况:
SQL语句及执行结果显示
UPDATEstudent
SETsname='李四'
WHEREs_no=6079
student表更改前后的内容截图显示
(3)、用DELETE语句删除student表中数据;
实现代码:
查询分析器执行情况:
SQL语句及执行结果显示
DELETE
FROMstudent
WHEREs_no=6080
student表更改前后的内容截图显示
五、实验中出现的问题及解决方案
1.外键的设置:
外键设置不能一开始就设置,要等到所有表建完后再设置,这样才能保证外键存在。
2.删除操作:
不能删除有外键连接的记录,如果要删除这样的记录,必须先把引用该外键的记录删除。
六、思考题
1、说明数据库中的表和数据文件的关系。
2、数据库中的日志文件能否单独修改?
答:
1:
数据库中的表其实就是数据文件里面的语句生成的,在数据库中对表的任何操作在数据文件都会发生相应的变化。
2:
不能。
单独修改会造成DBMS跟Log文件的不匹配冲突问题。
实验二查询数据库
一、实验目的
熟悉SQL语句的基本使用方法,学习如何编写SQL语句来实现查询
二、实验内容和要求
使用SQL查询分析器查询数据,练习查询语句的使用,掌握SELECT语句的完整结构,包括简单查询、嵌套查询、连接查询等基本实现方法。
三、实验主要仪器设备和材料
1.计算机及操作系统:
PC机,Windows2000/xp;
2.数据库管理系统:
SQLsever2000/2005;
四、实验方法、步骤及结果测试
实验题目:
1、对实验一建立的数据库表进行查询
简单查询:
题目
(1)、查询全部学生的学号、姓名、性别和出身年月日。
实现代码及查询结果截图:
格式如下
查询分析器执行情况:
SQL语句及执行结果显示
SELECTs_no,sname,sex,sbirthday
FROMstudent
查询结果截图显示
题目
(2)、查询全体学生的学号、姓名和年龄
实现代码及查询结果截图:
查询分析器执行情况:
SQL语句及执行结果显示
SELECTs_no,sname,2012-year(sbirthday)age
FROMstudent
查询结果截图显示
题目(3)、查询院系编号为‘510000’(计算机学院)的全部学生的学号、姓名、性别和出身年月日。
实现代码及查询结果截图:
查询分析器执行情况:
SQL语句及执行结果显示
SELECTs_no,sname,sex,sbirthday,
department.dept_name
FROMstudent,department
WHEREstudent.dno=1
ANDdepartment.dno=student.dno
查询结果截图显示
题目(4)、查询“计算机科学与技术”专业(专业代码为‘080605’)并且班级代码为‘0201’的学生的学号、姓名和出生日期。
实现代码及查询结果截图:
查询分析器执行情况:
SQL语句及执行结果显示
/**由于0201没有数据,所以这里
改成1*/
SELECTs_no,sname,sbirthday,
speciality.spname,class_no
FROMstudent,speciality
WHEREstudent.spno=1
ANDpeciality.spno=student.spno
ANDstudent.class_no=6
查询结果截图显示
题目(5)、查询在‘1983/01/10’以后出生的计算机学院(院系编号为‘510000’)学生的学号、姓名、性别和出身年月日。
实现代码及查询结果截图:
查询分析器执行情况:
SQL语句及执行结果显示
SELECTs_no,sname,sex,sbirthday
FROMstudent
WHEREsbirthday>19830110000000ANDdno=1
查询结果截图显示
题目(6)、查询全部学生的学号、姓名、性别和出身日期结果按照出生日期的升序排列。
实现代码及查询结果截图:
查询分析器执行情况:
SQL语句及执行结果显示
SELECTs_no,sname,sex,sbirthday
FROMstudent
ORDERBYsbirthday
查询结果截图显示
连接查询:
题目
(1)、查询全部学生的学号、姓名、性别、所在院系名称和专业名称
实现代码及查询结果截图:
查询分析器执行情况:
SQL语句及执行结果显示
SELECT
s_no,sname,sex,
dept_name,spname
FROMstudent,department,speciality
WHEREstudent.dno=department.dno
ANDstudent.spno=speciality.spno
查询结果截图显示
题目
(2)、查询选修了课程1(上课编号)的学生的学号、姓名、专业名称和这门课的成绩
实现代码及查询结果截图:
查询分析器执行情况:
SQL语句及执行结果显示
SELECTstudent.s_no,sname,spname,score
FROMstudent,student_course,speciality
WHEREstudent.s_no=student_course.s_no
ANDstudent.spno=speciality.spno
ANDstudent.spno=1
查询结果截图显示
题目(3)、查询学生不及格的情况列出不及格学生的学号、姓名和不及格的课程名称。
实现代码及查询结果截图:
查询分析器执行情况:
SQL语句及执行结果显示
/**由于没有不及格的数据,所以显示为空,但是该sql语句亲测可行*/
SELECTstudent.s_no,sname,spname
FROMstudent,student_course,speciality
WHEREstudent.s_no=student_course.s_no
ANDstudent.spno=speciality.spno
ANDstudent_course.score<60
查询结果截图显示
嵌套查询:
题目
(1)、查询没有选修了课程1的学生,列出学生的学号和姓名。
实现代码及查询结果截图:
查询分析器执行情况:
SQL语句及执行结果显示
/**由于没有不选择课程1的学生数据,所以显示为空,但是该sql语句亲测可行*/
SELECTstudent.s_no,sname
FROMstudent
WHEREs_noIN
(SELECTs_no
FROMstudent
WHEREspno!
=1
)
查询结果截图显示
题目
(2)、查询每门课都是80分以上的学生的学号与姓名。
实现代码及查询结果截图:
查询分析器执行情况:
SQL语句及执行结果显示
SELECTstudent.s_no,sname
FROMstudent
WHEREs_noIN
(SELECTs_no
FROMstudent_course
WHEREscore>80
)
查询结果截图显示
2、选用Northwind数据库进行查询
题目
(1)、对NothWind.Products表进行简单查询;在查询分析器在窗口下用SELECT语句完成单表查询:
查询所有Products的详细记录;
实现代码及查询结果截图:
查询单价(UnitPrice)小于20的Products;
实现代码及查询结果截图:
查询Products中最高单价(UnitPrice)是多少;
实现代码及查询结果截图:
题目
(2)、在查询分析器在窗口下用SELECT语句完成连接(嵌套)查询:
查询所有被订购过得Products的ProductsID和ProductName;
实现代码及查询结果截图:
查询所有被CustomerID为AROUT客和订购过的ProductsID和ProductName;
实现代码及查询结果截图:
查询所有被CustomerID为AROUT客和订购过,且单价在20以上的ProductsID
和ProductName;
实现代码及查询结果截图:
查询Products中单价(UnitPrice)最高的Products的资料;
实现代码及查询结果截图:
五、实验中出现的问题及解决方案
六、思考题
1、进行连接查询时应注意哪些问题?
实验三、创建和使用视图、索引、存储过程
一、实验目的
1、掌握视图、索引、存储过程的定义、索引、存储过程的工作原理;
2、掌握创建视图、索引、存储过程的SQL语句的用法;并能够熟练利用视图向表中插入、删除和修改数据。
3、掌握使用视图来查询数据。
二、实验主要仪器设备和材料
1.计算机及操作系统:
PC机,Windows;
2.数据库管理系统:
SQLsever2000/2005;
三、实验方法、步骤及结果测试
(一)、视图