数据库原理实验指导.docx

上传人:b****8 文档编号:10353525 上传时间:2023-02-10 格式:DOCX 页数:102 大小:195.59KB
下载 相关 举报
数据库原理实验指导.docx_第1页
第1页 / 共102页
数据库原理实验指导.docx_第2页
第2页 / 共102页
数据库原理实验指导.docx_第3页
第3页 / 共102页
数据库原理实验指导.docx_第4页
第4页 / 共102页
数据库原理实验指导.docx_第5页
第5页 / 共102页
点击查看更多>>
下载资源
资源描述

数据库原理实验指导.docx

《数据库原理实验指导.docx》由会员分享,可在线阅读,更多相关《数据库原理实验指导.docx(102页珍藏版)》请在冰豆网上搜索。

数据库原理实验指导.docx

数据库原理实验指导

 

实验一

1.实验名称:

创建数据库。

2.实验要求:

掌握注册与配置服务器、创建和管理数据库的方法,要求学生以自己的姓名作为数据库名,创建一个学生管理数据库。

3.实验仪器:

以MicrosoftSQLServer2000或Windows2000Server为平台的软件环境;以服务器、客户机连接成局域网结构的硬件环境。

4.实验内容:

(1)启动SQLServer;

(2)注册与配置服务器;

(3)创建数据库;

(4)管理与维护数据库。

5.实验重点:

学生掌握注册与配置服务器。

6.实验课时:

2课时

7.实验类型:

验证实验

8.实验指导:

创建数据库的语句有如下几种:

1.CREATETABLE(创建新表)

2.CREATEINDEX(增加索引)

3.DROPINDEX(删除索引)

4.CONSTRAINT(约束语句)

5.ALTERTABLE(修改表)

6.DROPTABLE(删除表)

CREATETABLE语句:

在数据库中生成新表,表中字段的类型可以为:

INTEGER(整型)、LONG(长整型)、SINGLE(单精度浮点数)、DOUBLE(双精度浮点数)、DATETIME(日期型,也可以写成DATE)、BIT(布尔型)、TEXT(字符串型,最大255个字节)、MEMO(字符串型,最大可达1.2G字节)、COUNTER(自动递增长整型,可确定记录的唯一性)、CURRENCY(货币型,精确到小数点左边15位,右边4位)、BINARY(字节型,最大255个)、LONGBINARY(用于OLE对象)、GUID(全局唯一标识符)。

生成表NewTable,该表有文本字段Field1和整型字段Field2,表名和字段名可以随便你取,不区分大小写,但是,有些保留字不能用作表名字段名,比如Number

CREATETABLENewTable(Field1TEXT(30),Field2INTEGER);

CREATEINDEX语句:

INDEX是为了加快查找记录的速度,或者是为了增加字段约束关系而设置的。

创建索引语句执行前表中可以有记录,但存在的记录必须满足该索引语句的约束关系,否则语句不能执行,另外要注意的是在同一个数据库中(而不仅仅是在同一个表中),索引名不能相同,否则语句也会失败。

生成字段Field1的索引字段NewIndex,两条语句作用相同

生成后Field1字段可以有相同的值,可以有空值(NULL)

CREATEINDEXNewIndexONNewTable(Field1);

CREATEINDEXNewIndexONNewTable(Field1)WITHIGNORENULL;

生成字段Field1的索引字段NewIndex,注意,每个表里只能有一个主索引(PRIMARY)。

生成后Field1字段不能有相同的值,不能有空值(当然,如果是TEXT类型,可以有一个空串,但是空串不是空值)

CREATEINDEXNewIndexONNewTable(Field1)WITHPRIMARY;

字段Field1不能有相同的值,但可以有空值(两个空值不算相同的值)

CREATEUNIQUEINDEXNewIndexONNewTable(Field1);

字段Field1可以有相同的值,但不能有空值

CREATEINDEXNewIndexONNewTable(Field2)WITHDISALLOWNULL

可以在索引语句中加入ASC(升序)或DESC(降序)来控制记录排列顺序如果不使用顺序字,SQL则默认使用ASC顺序

CREATEINDEXNewIndexONNewTable(Field1ASC,Field2DESC);

DROPINDEX语句:

删除表NewTable中的索引NewIndex,语句执行前索引NewIndex必须存在

DROPINDEXNewIndexONNewTable;

CONSTRAINT语句:

CONSTRAINT子句用于创建数据库完整性的索引,它和INDEX语句作用一样,有些地方可以互相替代,它可以使用PRIMARYKEY(主关键字),UNIQUE(唯一)和FOREIGNKEY(外部关键字),和INDEX相比不能使用IGNORNULL和DISALLOWNULL,但多了FOREIGNKEY(这也是它最强大的地方)。

另外,CONSTRAINT语句必须和CREATETABLE或ALTERTABLE语句一起使用。

生成表NewTable,主关键字段是Field1,主索引是NewPK

CREATETABLENewTable(Field1LONGCONSTRAINTNewPKPRIMARYKEY,Field2MEMO,Field3DATETIME);

 

生成索引为NewUK的表NewTable,Field1不能有相同值,可以有空值

CREATETABLENewTable(Field1INTEGERCONSTRAINTNewUKUNIQUE);

 

生成多列的主索引,两条记录的Field1和Field2不能全部相同,也不能为空值

CREATETABLENewTable(Field1INTEGER,Field2CURRENCY,CONSTRAINTNewPKPRIMARYKEY(Field1,Field2));

 

生成多列的UNIQUE索引,两条记录的Field1和Field2不能全部相同注意,如果两条记录其中一个字段相同而另一个字段都是空值,那也算两个字段不同

CREATETABLENewTable(Field1INTEGER,Field2CURRENCY,CONSTRAINTNewUKUNIQUE(Field1,Field2));

要在几个不同的表之间建立联系,就要使用FOREIGNKEYREFERENCES子句,它可以限定某个表的字段内容必须存在于另外一个表中。

第一个例子:

首先,生成主关键字段为Field1的表NewTable1

CREATETABLENewTable1(Field1INTEGERCONSTRAINTNewPKPRIMARYKEY);

 

然后,再生成外部索引,两个表的Field1必须类型相同,并且第一个表的Field1是主关键字段或UNIQUE字段。

生成外部索引后,表NewTable2要增加记录,它的Field1字段值必须已经存在于表NewTable1的Field1字段中。

下面两条语句作用相同,因为Field1是NewTable1的主关键字段,可以省略不写

CREATETABLENewTable2(Field1INTEGERCONSTRAINTNewFKREFERENCESNewTable1);

CREATETABLENewTable2(Field1INTEGERCONSTRAINTNewFKREFERENCESNewTable1(Field1));

 

第二个例子:

首先,生成主关键字段为Field1和Field2的表NewTable1

CREATETABLENewTable1(Field1INTEGER,Field2TEXT(20),CONSTRAINTNewPKPRIMARYKEY(Field1,Field2));

 

然后,生成多列外部索引

CREATETABLENewTable2(Field1INTEGER,Field2TEXT(20),CONSTRAINTNewFKFOREIGNKEY(Field1,Field2)REFERENCESNewTable1(Field1,Field2));

ALTERTABLE语句:

在表生成之后,如果想修改表的结构,就使用这条语句,它能增加或删除字段以及约束关系。

给表NewTable增加日期型字段Field3,语句执行前表NewTalbe必须没有字段Field3

ALTERTABLENewTableADDCOLUMNField3DATE;

删除表NewTable中的字段Field3,语句执行前字段Field3必须存在表NewTable中

ALTERTABLENewTableDROPCOLUMNField3;

给表NewTable增加NewUK约束关系

ALTERTABLENewTableADDCONSTRAINTNewUKUNIQUE(Field1,Field2);

删除表NewTable的NewUK约束关系

ALTERTABLENewTableDROPCONSTRAINTNewUK;

DROPTABLE语句:

删除表NewTable,语句执行前表NewTable必须存在

DROPTABLENewTable;

 

实验二

1.实验名称:

创建和管理数据表。

2.实验要求:

使学生掌握建立和维护数据表的基本方法和SQL命令。

要求学生在已建好的学生管理数据库中创建4张数据表:

学生基本情况表、班级情况表、课程表、成绩表。

3.实验仪器:

以MicrosoftSQLServer2000或Windows2000Server为平台的软件环境;以服务器、客户机连接成局域网结构的硬件环境。

4.实验内容:

(1)创建数据表结构;

(2)修改表结构;

(3)向表中输入数据;

(4)修改表中数据;

(5)删除表中数据,或删除表。

5.实验重点:

创建数据表结构、向表中输入数据。

6.实验课时:

2课时

7.实验类型:

设计实验

8.实验指导:

1.在studentdb数据库中利用查询分析器创建以下3个表,同时完成数据完整性的定义(实体完整性、参照完整性和用户定义的域完整性):

student(学生信息表):

主码

列名

数据类型

宽度

小数位

空否

取值范围

备注

Pk

sno

char

5

 

N

学号

 

sname

char

10

 

N

姓名

 

ssex

char

2

 

Y

性别

 

sage

smallint

Y

不小于12

年龄

sdept

char

15

Y

系名

course(课程表):

主码

列名

数据类型

宽度

小数位

空否

备注

Pk

cno

Char

2

 

N

课程号

 

cname

Char

20

 

Y

课程名称

 

cpno

Char

2

 

Y

先行课号

 

ccredit

smallint

Y

学分

sc(学生选课表):

主码

列名

数据类型

宽度

小数

空否

外码

参照关系

取值范围

备注

Pk

sno

Char

5

 

N

Fk

student

学号

cno

Char

2

 

N

Fk

course

课程号

 

grade

Decimal

5

1

Y

0≤x≤100

成绩

2.在spjdb数据库中利用查询分析器创建以下4个表,同时完成数据完整性的定义(实体完整性、参照完整性和用户定义的域完整性):

S(供应商信息表):

主码

列名

数据类型

宽度

小数位

空否

取值范围

备注

Pk

sno

char

2

 

N

供应商号

 

sname

char

10

 

N

供应商名称

 

status

smallint

Y

大于0

供应商状态

city

char

10

Y

所在城市

 

P(零件信息表):

主码

列名

数据类型

宽度

小数位

空否

取值范围

备注

Pk

pno

char

2

 

N

零件号

 

pname

char

10

 

N

零件名称

color

char

2

Y

颜色

 

weight

smallint

Y

大于0

重量

J(工程项目表):

主码

列名

数据类型

宽度

小数位

空否

取值范围

备注

Pk

jno

char

2

 

N

工程项目号

 

jname

char

10

 

N

工程项目名称

city

char

10

Y

所在城市

SPJ(供应情况表):

主码

列名

数据类型

宽度

小数

空否

外码

参照关系

取值范围

备注

Pk

sno

Char

2

 

N

Fk

S

供应商号

pno

Char

2

 

N

Fk

P

零件号

jno

Char

2

 

N

Fk

J

工程项目号

 

qty

smallint

Y

x>0

成绩

3.修改表结构,具体要求如下:

(1)将表course的cname列的数据类型改为varchar(40).

(2)为表student增加一个新列:

birthday(出生日期),类型为datetime,默认为空值.

(3)将表sc中的grade列的取值范围改为小于等于150的正数.

(4)为Student表的“Sex”字段创建一个缺省约束,缺省值为’男’

(5)为“Sdept”字段创建一个检查约束,使得所在系必须是’计算机’、’数学’或’信息’之一。

(6)为Student表的“Sname”字段增加一个唯一性约束

(7)为SC表建立外键,依赖于Student表的fk_S_c约束。

(8)禁止启用Student表的“Sdept”的CHECK约束ck_student。

4.分别建立以下索引(如果不能成功建立,请分析原因)

(1)在student表的sname列上建立普通降序索引.

(2)在course表的cname列上建立唯一索引.

(3)在sc表的sno列上建立聚集索引.

(4)在spj表的sno(升序),pno(升序)和jno(降序)三列上建立一个普通索引.

提示:

1.建立表,修改表,建立索引需具有createtable的权限.

2.创建基本表的SQL语句是CREATETABLE.

简单语法格式:

CREATETABLE表名

(列名数据类型[default缺省值][notnull]

[,列名数据类型[default缺省值][notnull]]

……

[,primarykey(列名[,列名]…)]

[,foreignkey(列名[,列名]…)references表名(列名[,列名]…)]

[,check(条件)]);

 

一般语法格式:

CREATETABLE[database_name.[owner].]table_name

({|column_name|}[,…n])

[ON{filegroup|DEFAULT}][TEXTIMAGE_ON{filegroup|DEFAULT}]

:

:

={column_namedata_type}[DEFAULTconstant_expression]

|[IDENTITY[(seed,increment)]][ROWGUIDCOL][][…n]

参数说明:

①[database_name.[owner].]table_name:

定义表的名字,表名的长度不得超过128个字节,如果是临时表,则表名不能超过116个字符。

列的定义。

③column_name:

列的名字。

列的命名必须遵守有关数据库对象的命名规则。

④data_type:

列的数据类型。

⑤DEFAULTconstant_expression:

定义该列的默认值。

⑥IDENTITY:

定义该列是一个标识列。

当一个新的数据行插入表中的时候,SQLServer2000为标识列提供一个唯一的、递增的数值。

在一张表格中,只能定义一个标识列。

在定义标识列时,必须同时定义起始值和增量。

⑦Seed:

定义标识列的起始值。

所谓起始值就是插入表的第一行的数据的标识列的值。

Increment:

定义标识列的增量。

所谓增量就是插入表的最近一行相对与前一行标识列的数据值的增量。

⑧ROWGUIDCOL:

定义该列是一个行全局唯一的标识列。

在一张表中只有一个唯一标识符列可以被定义为ROWGUIDCOL。

column_constraint:

定义与列相关联的约束。

⑨table_constraint:

定义对表的约束。

⑩ON{filegroup|DEFAULT}:

定义将表存储在某一个指定的文件组中,DEFAULT表示将表存储在默认文件组中。

[TEXTIMAGE_ON{filegroup|DEFAULT}]:

如果表中有ntext、text或image类型的数据,则将这些数据存储在某一个指定的文件组里。

3.修改表结构的SQL语句是ALTERTABLE,修改的内容包括:

修改、增加、删除列或约束、使约束和触发器无效等。

简单语法格式:

altertable<表名>

[add<列名><数据类型>[<列级完整性约束>]]//增加新列

[drop<完整性约束名>]//删除约束

[dropcolumn<列名>]//删除列

[altercolumn<列名><数据类型>[<列级完整性约束>]];//修改列定义

其中列级完整性约束包括:

·空值约束NOTNULL和NULL

·主关键字约束PRIMARYKEY

·唯一性约束UNIQUE

·参照完整性约束FOREIGNKEY

一般语法格式:

ALTERTABLEtable

{[ALTERCOLUMNcolumn_name{new_data_type[NULL|NOTNULL]|{ADD|DROP}ROWGUIDCOL}]

|ADD{[]|column_nameAScomputed_column_expression}[,…n]

|ADD{}[,…n]

|DROP{[CONSTRAINT]constraint_name|COLUMNcolumn}[,…n]

|{CHECK|NOCHECK}CONSTRAINT{ALL|constraint_name[,…n]

|{ENABLE|DISABLE}TRIGGER{ALL|trigger_name[,…n]}

参数说明:

①ALTERCOLUMN:

修改已经存在的列的属性。

②{ADD|DROP}ROWGUIDCOL:

将指定列定义成ROWGUIDCOL,或者删除该列的ROWGUIDCOL属性。

③ADD{[]|column_nameAScomputed_column_expression}[,…n]:

增加新的列。

④ADD{}[,…n]:

定义新的表约束。

⑤DROP{[CONSTRAINT]constraint_name|COLUMNcolumn}[,…n]:

删除约束或删除列。

⑥{CHECK|NOCHECK}CONSTRAINT{ALL|constraint_name[,…n]}:

是所有约束或者指定的约束有效或失效。

⑦{ENABLE|DISABLE}TRIGGER{ALL|trigger_name[,…n]}:

使所有或部分触发器有效或无效。

例:

使用T_SQL语句对学生表进行各种修改。

①向表中添加新的字段:

在学生表中添加一个“班级”字段,数据类型为字符型。

ALTERTABLEstudentadd班级char

②删除表中的旧列:

将学生表中的“Sdept”字段删除。

ALTERTABLEstudentDROPcolumnSdept

③更改表以添加具有约束的列:

④给学生表的增加“grade”字段并加上CHECK约束,让其不可以大于100。

ALTERTABLEstudentADDgradeintConstraintchnamecheck(grade<100)

Execsp_helpchname

⑤给学生表中添加“birthday”字段,并且这个日期不能在录入当天的日期之后。

AltertablestudentAddbirthdayDATETIMENULL

CONSTRAINTch_birthdayCHECK(birthday

⑥添加具有默认值的可为空的列:

在学生表中加入“matriculationday”字段,并且这一字段的默认值为录入当天的日期。

AltertablestudentAddmatriculationdaysmalldatetimeNULL

ConstraintadddatefltDefaultgetdate()

4.建立索引的SQL语句是CREATEINDEX,语法格式:

CREATE[UNIQUE][CLUSTERED]INDEX<索引名>

ON<表名>(<列名>[ASC|DESC][,<列名>[ASC|DESC]…])

其中UNIQUE指出是唯一索引,CLUSTERED指出是聚集索引。

 

实验三

1.实验名称:

创建索引及表之间关系。

2.实验要求:

使学生掌握建立数据表索引、及表之间关系的基本方法。

要求学生根据数据检索的需要,对学生管理数据库中的学生基本情况表、班级情况表、课程表、成绩表建立相应的主索引、候选索引、以及普通索引。

并建立关联表之间的关系。

3.实验仪器:

以MicrosoftSQLServer2000或Windows2000Server为平台的软件环境;以服务器、客户机连接成局域网结构的硬件环境。

4.实验内容:

(1)创建索引;

(2)删除索引;

(3)创建表之间关系;

5.实验重点:

创建索引、删除索引。

6.实验课时:

2课时

7.实验类型:

设计实验

实验四

1.实验名称:

数据检索/查询。

2.实验要求:

掌握进行数据查询的SQL语句。

要求学生在已建好的学生管理数据库中查询出一些要

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工程科技 > 冶金矿山地质

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1