数据库实验1.docx
- 文档编号:25052962
- 上传时间:2023-06-04
- 格式:DOCX
- 页数:17
- 大小:161.87KB
数据库实验1.docx
《数据库实验1.docx》由会员分享,可在线阅读,更多相关《数据库实验1.docx(17页珍藏版)》请在冰豆网上搜索。
数据库实验1
实验一数据库及基本表的建立
一、实验目的
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、创建数据库:
1、创建数据库:
·确定数据库名称;
数据库用于学生管理,命名为SC
·确定数据库的位置;
要求:
数据文件和日志文件分别存储在E盘自己的目录下。
·确定数据库的大小;
根据实际的数据量确定数据文件的初始大小为30MB,日志文件的初始大小为3MB。
·确定数据库的增长;
根据实际情况,确定数据文件按20%增长,日志文件按1MB增长。
要求:
实现代码及截图:
查询分析器执行情况:
SQL语句及执行结果显示
CREATEDATABASESC
ONPRIMARY(
NAME=‘SC_DATA’,
FILENAME=‘E:
\DB\SC_DATA.mdf’,
SIZE=5MB,
FILEGROWTH=20%
)
LOGON(
NAME=‘SC_LOG’,
FILENAME=‘E:
\DB\SC_LOG.ldf’,
SIZE=3MB,
FILEGROWTH=1MB
);
实验结果截图显示
题目2、创建基本表
2、创建基本表
利用查询分析器,使用SQL语句方式创建方式将下面各表建立到教学管理数据库中。
(1)创建student表
字段名
代码
类型
约束
学号
s_no
char(8)
主键
姓名
sname
char(8)
非空
性别
sex
char
(2)
出生日期
sbirthday
Smalldatetime
学生所在院系编号
dno
char(6)
外键
专业代码
spno
char(8)
外键
班级编码
class_no
char(4)
(2)创建Course表
字段名
代码
类型
约束
课程编号
cno
char(10)
主键
课程名称
cname
char(20)
非空
专业代码
spno
char(8)
外键
课程类型编号
ctno
tinyint
理论学时
lecture
tinyint
实验学时
experiment
tinyint
开课学期
semester
tinyint
课程学分
credit
tinyint
(3)创建student_course表
字段名
代码
类型
约束
学号
s_no
char(8)
主键,与student表中s_no外键关联,级联删除
上课编号
tcid
smallint
主键
学生成绩
score
tinyint
(4)创建teacher表
字段名
代码
类型
约束
教师编号
t_no
char(8)
主键
教师姓名
t_name
char(8)
非空
性别
t_sex
char
(2)
出生日期
t_birthday
smalldatetime
教师所在院系编号
dno
char(6)
外键
职称
tech_title
char(10)
(5)创建系部表(department)
字段名
代码
类型
约束
院系编号
dno
char(6)
主键
院系名称
dept_name
char(20)
非空
院系负责人
header
char(8)
(6)创建专业信息表(speciality)
字段名
代码
类型
约束
专业代码
spno
char(8)
主键
院系编号
dno
char(6)
外键,非空
专业名称
spname
char(20)
非空
(7)创建teacher_course表
字段名
代码
类型
约束
上课编号
tcid
smallint
主键
教师编号
t_no
char(8)
外键
专业代码
spno
char(8)
外键
班级编码
class_no
char(4)
课程编号
cno
char(10)
非空,外键
学期
semester
Char(6)
学年
schoolyear
Char(10)
(8)创建班级表(class)
字段名
代码
类型
约束
专业代码
spno
char(8)
主键,与speciality表中spno外键关联,
班级编码
class_no
char(4)
主键,
班负责人
header
char(8)
创建各表的实现代码及截图:
查询分析器执行情况:
SQL语句及执行结果显示
CREATETABLEdepartment
(
dnoCHAR(6)PRIMARYKEY,
dept_nameCHAR(20)NOTNULL,
headerCHAR(8)
);
CREATETABLEspeciality
(
spnoCHAR(8)PRIMARYKEY,
dnoCHAR(6)NOTNULL,
spnameCHAR(20)NOTNULL,
FOREIGNKEY(dno)REFERENCESdepartment(dno)
);
CREATETABLEstudent
(
s_noCHAR(8)PRIMARYKEY,
snameCHAR(8)NOTNULL,
sexCHAR
(2),
sbirthdaySMALLDATETIME,
dnoCHAR(6),
spnoCHAR(8),
class_noCHAR(4),
FOREIGNKEY(dno)REFERENCESdepartment(dno),
FOREIGNKEY(spno)REFERENCESspeciality(spno)
);
CREATETABLECourse
(
cnoCHAR(10)PRIMARYKEY,
cnameCHAR(20)NOTNULL,
spnoCHAR(8),
ctnoTINYINT,
lectureTINYINT,
experimentTINYINT,
semesterTINYINT,
creditTINYINT,
FOREIGNKEY(spno)REFERENCESspeciality(spno)
);
CREATETABLEstudent_course
(
s_noCHAR(8),
tcidSMALLINT,
scoreTINYINT,
PRIMARYKEY(s_no,tcid),
FOREIGNKEY(s_no)REFERENCESstudent(s_no)
ONDELETECASCADE
);
CREATETABLEteacher
(
t_noCHAR(8)PRIMARYKEY,
t_nameCHAR(8)NOTNULL,
t_sexCHAR
(2),
t_birthdaySMALLDATETIME,
dnoCHAR(6),
tech_titleCHAR(10),
FOREIGNKEY(dno)REFERENCESdepartment(dno)
);
CREATETABLEteacher_course
(
tcidSMALLINTPRIMARYKEY,
t_noCHAR(8),
spnoCHAR(8),
class_noCHAR(4),
cnoCHAR(10)NOTNULL,
semesterCHAR(6),
schollyearCHAR(10),
FOREIGNKEY(t_no)REFERENCESteacher(t_no),
FOREIGNKEY(spno)REFERENCESspeciality(spno)
);
CREATETABLEclass
(
spnoCHAR(8),
class_noCHAR(4),
headerCHAR(8),
PRIMARYKEY(spno,class_no),
FOREIGNKEY(spno)REFERENCESspeciality(spno)
);
实验结果截图显示
题目3、查看各数据表之间的关系,生成数据库关系图。
生成数据库关系图截图显示
题目4、利用查询分析器修改上述各表。
(1)、用INSERT语句向各个表中插入数据录入5条记录。
录入时注意体会外键约束。
实现代码及截图:
查询分析器执行情况:
SQL语句及执行结果显示
INSERTINTOdepartment
VALUES('123','计算机','何慧敏');
INSERTINTOdepartment
VALUES('124','机电','何慧');
INSERTINTOdepartment
VALUES('125','轻化','何慧');
INSERTINTOdepartment
VALUES('126','土木','朱慧');
INSERTINTOdepartment
VALUES('127','外国语','朱明');
实验结果截图显示(插入数据的表格)
实现代码及截图:
查询分析器执行情况:
SQL语句及执行结果显示
INSERTINTOspeciality
VALUES('12','123','软件');
INSERTINTOspeciality
VALUES('13','124','物联网');
INSERTINTOspeciality
VALUES('14','125','生物工程');
INSERTINTOspeciality
VALUES('15','126','土木工程');
INSERTINTOspeciality
VALUES('16','127','英语');
实验结果截图显示(插入数据的表格)
实现代码及截图:
查询分析器执行情况:
SQL语句及执行结果显示
INSERTINTOstudent
VALUES('6443','何慧敏','女','2007-05-0800:
00:
00','123','12','1');
INSERTINTOstudent
VALUES('6445','王慧','女','1994-01-0210:
30:
00','124','13','2');
INSERTINTOstudent
VALUES('6446','朱明','男','2007-05-0812:
35:
00','125','14','1');
INSERTINTOstudent
VALUES('6447','王时','女','1994-01-0210:
30:
00','126','15','4');
INSERTINTOstudent
VALUES('6448','王时','男','2004-07-0210:
30:
00','127','16','7');
实验结果截图显示(插入数据的表格)
实现代码及截图:
查询分析器执行情况:
SQL语句及执行结果显示
INSERT
INTOCourse
VALUES('1','高数','12',111,16,4,2,3);;
INSERT
INTOCourse
VALUES('2','线代','13',111,16,4,2,3);
INSERT
INTOCourse
VALUES('3','语文','14',111,16,4,2,3);
INSERT
INTOCourse
VALUES('4','数学','15',111,16,4,2,3);
INSERT
INTOCourse
VALUES('5','英语','16',111,16,4,2,3);
实验结果截图显示(插入数据的表格)
实现代码及截图:
查询分析器执行情况:
SQL语句及执行结果显示
INSERTINTOstudent_course
VALUES('6443',1,60);
INSERTINTOstudent_course
VALUES('6445',2,98);
INSERTINTOstudent_course
VALUES('6446',1,79);
INSERTINTOstudent_course
VALUES('6447',5,24);
INSERTINTOstudent_course
VALUES('6448',3,87);
实验结果截图显示(插入数据的表格)
实现代码及截图:
查询分析器执行情况:
SQL语句及执行结果显示
INSERTINTOteacher
VALUES('1','何东','男','2007-05-0800:
00:
00','123','老师');
INSERTINTOteacher
VALUES('2','蒋丽','女','1994-01-0210:
30:
00','124','辅导员');
INSERTINTOteacher
VALUES('3','苏丽','女','2007-05-0812:
35:
00','125','教师');
INSERTINTOteacher
VALUES('4','王铭','男','1994-01-0210:
30:
00','126','教授');
INSERTINTOteacher
VALUES('5','王毅','男','2004-07-0210:
30:
00','127','辅导员');
实验结果截图显示(插入数据的表格)
实现代码及截图:
查询分析器执行情况:
SQL语句及执行结果显示
INSERTINTOteacher_course
VALUES(1,'1','12','1','1','1','2');
INSERTINTOteacher_course
VALUES(2,'2','13','2','2','1','2');
INSERTINTOteacher_course
VALUES(3,'3','14','3','2','1','3');
INSERTINTOteacher_course
VALUES(4,'4','15','4','2','2','1');
INSERTINTOteacher_course
VALUES(5,'5','16','1','2','3','4');
实验结果截图显示(插入数据的表格)
实现代码及截图:
查询分析器执行情况:
SQL语句及执行结果显示
INSERTINTOclass
VALUES('12','1','何辉');
INSERTINTOclass
VALUES('13','2','朱力')
INSERTINTOclass
VALUES('14','2','王柱')
INSERTINTOclass
VALUES('15','4','王莉')
INSERTINTOclass
VALUES('16','3','金敏')
实验结果截图显示(插入数据的表格)
共8组(共8个表)
(2)、用UPDATE语句更改student表中数据;
实现代码:
查询分析器执行情况:
SQL语句及执行结果显示
UPDATEstudent
SETclass_no=class_no+1
WHEREsex='女';
student表更改前后的内容截图显示
前:
后:
(3)、用DELETE语句删除student表中数据;
实现代码:
查询分析器执行情况:
SQL语句及执行结果显示
DELETEFROMstudent
WHEREclass_no='5';
student表更改前后的内容截图显示
前:
后:
五、实验中出现的问题及解决方案
1.创建数据库时常出错,可不删除原数据库,再修改字段,然后再重新定义数据库
2.要去除强制外键约束,才能在中间插入值。
3.插入数据时没有注意到数据的长度,导致报错。
解决方法:
认真核对数据,重新建立数据库,重新插入数据。
4.建这8个表的先后顺序问题。
由于主外键的约束,建表的顺序不能随便调乱,要先理清了各表的关系后,再按照顺序建表。
六、思考题
说明数据库中的表和数据文件的关系。
答:
表(table)为数据库中数据存储的基本单位,其数据按行、列存储。
每个表具有一表名和列的集合。
每一列有一个列名、数据类型、宽度或精度、比例。
一行是对应单个记录的列信息的集合。
数据文件存放着在数据库中存储的数据,且一个数据库只有一个数据文件。
表作为数据库中的数据存储单位,存储在数据文件中。
数据库中的日志文件能否单独修改?
答:
不能,因为日志文件记录了数据库,单独修改可能会造成日志文件与数据库的不一致性,影响工作。
在实验中创建表时,应该注意什么?
你是如何解决的?
答:
应该注意主键与外键的关系,按照顺序建表。
实验中创建表时,当实验中有多个表且表间存在外键约束时,应该注意创建时先建立被依赖的表,或者最后再添加各表间的外键约束。
表间有外键约束时,注意外键之间的数据类型应该是一致的。
在向表中插入数据时,应该注意什么?
你是如何解决的?
答:
应注意每一个数据的类型,长度。
按照建表时每个数据的类型来插入数据。
实验向表中插入数据时,当实验中有多个表且表间存在外键约束时,应该注意先对被依赖的表进行数据插入。
注意表中各个属性的约束,例如主键、非空、唯一等约束。
数据表中数据的完整性如何控制?
答:
为了数据表中的属性添加列级或表级约束条件,例如主键、非空、唯一等。
如果发现违约行为就拒绝插入数据。
实验向表中插入数据时,当实验中有多个表且表间存在外键约束时,应该注意先对被依赖的表进行数据插入。
如何对专业表speciality的spname建立唯一性约束,并对新建的约束进行检查。
答:
如何对student_course表的score列设置检查约束?
如何通过插入新的记录来检验检查约束?
(4、5两题写出具体的实现过程及语句。
)
答:
怎样来实现“允许空值”?
设置“允许空值”时应注意哪些问题?
答:
SQLsever2005默认为允许空值,可以通过NOTNULL语句来设定不为空。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 实验
![提示](https://static.bdocx.com/images/bang_tan.gif)