数据库原理与应用数据定义.docx

上传人:b****5 文档编号:4813206 上传时间:2022-12-09 格式:DOCX 页数:14 大小:715.03KB
下载 相关 举报
数据库原理与应用数据定义.docx_第1页
第1页 / 共14页
数据库原理与应用数据定义.docx_第2页
第2页 / 共14页
数据库原理与应用数据定义.docx_第3页
第3页 / 共14页
数据库原理与应用数据定义.docx_第4页
第4页 / 共14页
数据库原理与应用数据定义.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

数据库原理与应用数据定义.docx

《数据库原理与应用数据定义.docx》由会员分享,可在线阅读,更多相关《数据库原理与应用数据定义.docx(14页珍藏版)》请在冰豆网上搜索。

数据库原理与应用数据定义.docx

数据库原理与应用数据定义

《数据库原理及应用》电子实验报告

题目:

SQL语言

(1)数据定义

日期

2012.10.9

姓名

党存寿

学号

20102111225

QQ

1045874070

实验环境:

WindowsXP,SqlServer2005

实验目的:

1.熟悉SqlServer2005环境

2.掌握基本表的定义、删除和修改

3.掌握索引的建立和删除

实验内容:

1.SqlServer2005的启动

SqlServer2005的启动方法:

单击“开始”按钮→“所用程序”→“MicrosoftSOLServer2005”→“SQLServerManagementStudio”。

之后将会出现如图1所示的“连接到服务器”的窗口。

图1“连接到服务器”窗口

注意:

①服务器类型选“数据库引擎”

②身份验证选“Windows身份验证”

③服务器名称的选择:

点击服务器名称的下拉菜单,然后点击“浏览更多”,之后将会出现如图2所示的“查找服务器”窗口。

然后双击数据库引擎,在数据库引擎下就能找到服务器的名称,然后选择该名称并单击“确定”按钮退回到“连接到服务器”窗口。

然后单击“连接”按钮进入SQL环境。

图2“查找服务器”窗口

2.定义基本表的语句格式

1)create语句

SQL语言使用CREATETABLE语句定义基本表,其基本格式如下:

CREATETABLE<表名>

(<列名><数据类型>[<列级完整性约束条件>]

[,<列名><数据类型>[<列级完整性约束条件>]]…

[,<表级完整性约束条件>]);

<表名>:

所要定义的基本表的名字

<列名>:

组成该表的各个属性(列)

<列级完整性约束条件>:

涉及相应属性列的完整性约束条件

<表级完整性约束条件>:

涉及一个或多个属性列的完整性约束条件

2)drop语句

当某个基本表不再需要时,可以使用DROPTABLE语句删除它。

其一般格式为:

DROPTABLE<表名>[RESTRICT|CASCADE];

注意:

基本表删除后:

①数据、表上的索引都删除

②表上的视图往往仍然保留,但无法引用

删除基本表时,系统会从数据字典中删去有关该基本表及其索引的描述。

3)alter语句

SQL语言用ALTERTABLE语句修改基本表,其一般格式为:

ALTERTABLE<表名>

[ADD<新列名><数据类型>[完整性约束]]

[DROP<完整性约束名>]

[MODIFY<列名><数据类型>];

注:

<表名>:

要修改的基本表

ADD子句:

增加新列和新的完整性约束条件

DROP子句:

删除指定的完整性约束条件

MODIFY子句:

用于修改列名和数据类型

3.基本表的定义、删除和修改

1)基本表的定义

【例1】建立一个“学生”表Student,它由学号Sno、姓名Sname、性别Ssex、年龄Sage、所在系Sdept五个属性组成。

其中学号不能为空,值是唯一的,并且姓名取值也唯一(如图3-1所示)。

键入如下命令:

CREATETABLEStudent

(SnoCHAR(9)PRIMARYKEY,

SnameCHAR(20)UNIQUE,

SsexCHAR

(2),

SageSMALLINT,

SdeptCHAR(20)

);

附:

常用完整性约束

主码约束:

PRIMARYKEY

唯一性约束:

UNIQUE

非空值约束:

NOTNULL

参照完整性约束

图3-1学生表

【例2】建立一个“课程”表Course,它由课程号Cno、课程名Cname,先行课Cpno,学分Ccredit组成,其中(Cno)为主码(如图3-2所示)。

键入如下命令:

CREATETABLECourse

CnoCHAR(4)PRIMARYKEY,

CnameCHAR(40),

CpnoCHAR(4),

CcreditSMALLINT,

FOREIGNKEY(Cpno)REFERENCESCourse(Cno)

);

因为先行课Cpno是参照课程号Cno的,所以定义约束:

FOREIGNKEY(Cpno)REFERENCESCourse(Cno)

【例3】建立一个“学生选课”表SC,它由学号Sno、课程号Cno,修课成绩Grade组成,其中(Sno,Cno)为主码(如图3-3所示)。

键入如下命令:

CREATETABLESC

SnoCHAR(9),

CnoCHAR(4),

GradeSMALLINT,

PRIMARYKEY(Sno,Cno),

FOREIGNKEY(Sno)REFERENCESStudent(Sno),

FOREIGNKEY(Cno)REFERENCESCourse(Cno)

);

学生选课SC表中的学号Sno和课程号Cno分别参照学生表Student和课程表Course,所以定义约束:

●FOREIGNKEY(Sno)REFERENCESStudent(Sno),

●FOREIGNKEY(Cno)REFERENCESCourse(Cno)

图3-2课程表course

图3-3学生选课表

2)基本表的删除

【例4】删除Student表

DROPTABLE Student;

【例5】删除Course表

DROPTABLECourse;

【例6】删除学生选课SC表

DROPTABLESC;

3)基本表的修改

【例7】向Student表增加“入学时间”列,其数据类型为日期时间型。

ALTERTABLEStudentADDScomeDATETIME;

注:

不论基本表中原来是否已有数据,新增加的列一律为空值(如图4所示)。

 

图4向Student表增加“入学时间(Scome)”列

【例8】将年龄的数据类型由字符型(假设原来的数据类型是字符型)改为整数,运行结果如图5所示。

ALTERTABLECourseALTERCOLUMNSageINT;

【例9】增加课程名称必须取唯一值的约束条件,运行结果如图6所示。

ALTERTABLECourseADDUNIQUE(Cname);

【例10】直接删除属性列

ALTERTABLEStudentDropScome;

图5将年龄的数据类型由字符型改为整数

图6增加课程名称必须取唯一值的约束条件

4定义索引的语句

1)create语句

语句格式:

CREATE[UNIQUE][CLUSTER]INDEX<索引名>ON<表名>(<列名>[<次序>][,<列名>[<次序>]]…);

用<表名>指定要建索引的基本表名字

索引可以建立在该表的一列或多列上,各列名之间用逗号分隔

用<次序>指定索引值的排列次序,升序:

ASC,降序:

DESC。

缺省值:

ASC

UNIQUE表明此索引的每一个索引值只对应唯一的数据记录

CLUSTER表示要建立的索引是聚簇索引

2)Drop语句

语句格式:

DROPINDEX<索引名>;

删除索引时,系统会从数据字典中删去有关该索引的描述。

5索引的建立和删除

1)索引的建立

唯一索引和聚簇索引的区别

●唯一值索引:

●对于已含重复值的属性列不能建UNIQUE索引

●对某个列建立UNIQUE索引后,插入新记录时DBMS会自动检查新记录在该列上是否取了重复值。

这相当于增加了一个UNIQUE约束

●聚簇索引:

●建立聚簇索引后,基表中数据也需要按指定的聚簇属性值的升序或降序存放。

也即聚簇索引的索引项顺序与表中记录的物理顺序一致

【例11】为学生-课程数据库中的Student,Course,SC三个表(如图7所示)建立索引。

其中Student表按学号升序建唯一索引,Course表按课程号升序建唯一索引,SC表按学号升序和课程号降序建唯一索引。

Student

学号

Sno

姓名

Sname

性别

Ssex

年龄

Sage

所在系

Sdept

95001

李勇

20

CS

95002

刘晨

19

IS

95003

王敏

18

MA

95004

张立

19

IS

(a)

SC

学号

Sno

课程号

Cno

成绩

Grade

95001

1

92

95001

2

85

95001

3

88

95002

95002

2

3

90

80

(b)

Course

课程号

Cno

课程名

Cname

先行课

Cpno

学分

Ccredit

1

数据库

5

4

2

数学

2

3

信息系统

1

4

4

5

6

7

操作系统

数据结构

数据处理

PASCAL语言

6

7

6

3

4

2

4

(c)

图7学生-课程数据库

CREATEUNIQUEINDEXStusnoONStudent(Sno);

CREATEUNIQUEINDEXCoucnoONCourse(Cno);

CREATEUNIQUEINDEXSCnoONSC(SnoASC,CnoDESC);

命令及运行结果如图8所示:

图8建立Student、Course、SC表的索引

●【例12】在Student表的Sname(姓名)列上建立一个聚簇索引。

●CREATECLUSTERINDEXStusnameONStudent(Sname);

●在Student表的Sname(姓名)列上建立一个聚簇索引,而

●且Student表中的记录将按照Sname值的升序存放

●在一个基本表上最多只能建立一个聚簇索引

●聚簇索引的用途:

对于某些类型的查询,可以提高查询效率

●聚簇索引的适用范围

●很少对基表进行增删操作

●很少对其中的变长列进行修改操作

2)索引的删除

【例13】删除Student表的Stusname索引。

DROPINDEXStusname;

【例14】删除Student、Course、SC表的Stusno、Coucno、SCno索引。

DROPINDEXStusnoONStudent;

DROPINDEXCoucnoONCourse;

DROPINDEXSCnoONSC;

完成情况:

1完成了对学生表Student。

课程表Course、学生选课SC表的创建、删除、修改。

2完成了对学生表Student。

课程表Course、学生选课SC表索引的创建和删除。

出现的问题:

(小四宋体)

1在完成表的索引创建任务时,遇到了消息159,级别15,状态1,第1行

必须为DROPINDEX语句指定表和索引名称。

消息159,级别15,状态1,第2行

必须为DROPINDEX语句指定表和索引名称。

消息159,级别15,状态1,第3行

必须为DROPINDEX语句指定表和索引名称。

问题,

解决思路是给每一条删除语句加上了表名。

及将语句

DROPINDEXStusno;

DROPINDEXCoucno;

DROPINDEXSCno;

改为:

DROPINDEXStusnoONStudent;

DROPINDEXCoucnoONCourse;

DROPINDEXSCnoONSC;

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

当前位置:首页 > 农林牧渔 > 农学

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

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