数据库实验
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《数据库原理》实验
班级:
学号:
姓名:
实验1建立基本表和数据完整性
实验目的:
1.掌握表(关系)和索引的建立方法;
2.掌握表结构(关系模式)的修改方法;
3.实践DBMS提供的数据完整性功能,加深对数据完整性的理解。
实验内容:
1.在studentdb数据库中利用查询分析器创建以下3个表,同时完成数据完整性的定义
(实体完整性、参照完整性和用户定义的域完整性):
student(学生信息表):
sc
实验代码:
createdatabase studentdb
use studentdb
go
createtable student(
sno char(10)notnull primarykey,--学号
sname char(10)notnull,--姓名
ssex char(2)null,--性别
sage smallint null check(sage>=12),--年龄
sdept char(15),--系名
)
createtable course(
cno Char(2)notnull primarykey,--课程号
cname Char(20)null,-- 课程名称
cpno Char(2)null,--先行课号
ccredit smallint null,--学分
)
createtable sc(
sno char(10)notNULL,--学号
cno char(2)notNULL,--课程号
grade Decimal(5,1)NULL check(grade>=0AND grade<=100),--成绩
primarykey(sno,cno),
/*主码由两个属性构成,必须作为表级完整性进行定义*/
foreignkey(sno)references student(sno),
/*表级完整性约束条件,sno是外码,被参照表是student*/
foreignkey(cno)references course(cno),
/*表级完整性约束条件,cno是外码,被参照表是course*/
)
go
2.在spjdb数据库中利用查询分析器创建以下4个表,同时完成数据完整性的定义(实体完整性、参照完整性和用户定义的域完整性):
S(供应商信息表):
P
J
createdatabase spjdb
use spjdb
go
createtable S(
sno char(2)NOTNULL primarykey,--供应商号sname char(10)NOTNULL,--供应商名称
status smallint NULL CHECK(status>0),--供应商状态city char(10)NULL,--所在城市
)
createtable P(
pno char(2)NOTNULL primarykey,--零件号
pname char(10)NOTNULL,--零件名称
color char(2)NULL,--颜色
weight smallint NULL CHECK(weight>0),--重量
)
createtable J(
jno char(2)NOTNULL PRIMARYKEY,--工程项目号jname char(10)NOTNULL,--工程项目名称
city char(10)NULL,--所在城市
)
createtable SPJ(
sno Char(2)NOTNULL,--供应商号
pno Char(2)NOTNULL,--零件号
jno Char(2)NOTNULL,--工程项目号
qty smallint NULL CHECK(qty>0),--供应数量primarykey(sno,pno,jno),
foreignkey(sno)references S(sno),
/*表级完整性约束条件,sno是外码,被参照表是S*/
foreignkey(pno)references P(pno),
/*表级完整性约束条件,pno是外码,被参照表是P*/
foreignkey(jno)references J(jno),
/*表级完整性约束条件,jno是外码,被参照表是J*/
)
3.修改表结构,具体要求如下:
(1)将表course的cname列的数据类型改为varchar(40)。
altertable course
altercolumn cnamevarchar(40);
(2)为表student增加一个新列:birthday(出生日期),类型为datetime,默认为空值。altertable student
add birthday datetimedefault null;
4.分别建立以下索引(如果不能成功建立,请分析原因)
(1)在student表的sname列上建立普通降序索引。
createindex sname on student(sname desc);
(2)在course表的cname列上建立唯一索引。
createuniqueindex cname on course(cname);
(3)在sc表的sno列上建立聚簇索引。
createCLUSTEREDindex sc on sc(sno)
//不成功,系统默认给主键分配了一个聚簇索引
(4)在SPJ表的sno(升序),pno(升序)和jno(降序)三列上建立一个普通索引。createindex spj on spj(sno asc,pno asc,jno desc);
实验2SQL数据操作
实验目的:
1.向实验1建立的表中添加数据(元组),掌握INSERT语句的用法;
2.修改基本表中的数据,掌握UPDATE语句的用法;
3.删除基本表中的数据,掌握DELETE语句的用法;
4.体会数据完整性约束的作用,加深对数据完整性及其约束的理解。
实验内容:
1.将教材P
表中的数据添加到数据库studentdb中。
82
use studentdb
go
INSERTinto student(sno,sname,ssex,sage,sdept)values(,'李勇','男',20,'CS'); INSERTinto student(sno,sname,ssex,sage,sdept)values(,'刘晨','女',19,'CS'); INSERTinto student(sno,sname,ssex,sage,sdept)values(,'王敏','女',18,'MA'); INSERTinto student(sno,sname,ssex,sage,sdept)values(,'张立','男',29,'IS'); use studentdb