数据库实验

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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

相关文档
最新文档