《创建数据库表与索引实验.docx》由会员分享,可在线阅读,更多相关《创建数据库表与索引实验.docx(24页珍藏版)》请在三一办公上搜索。
1、实验2: 创建数据库表与索引-表的创建与管理1.实验目的:掌握表和索引的建立方法及表结构的修改方法,了解表关系建立的条件和作用,并实践数据库管理系统提供的数据完整性功能,加深对数据完整性的理解。要求建立表、修改表结构、建立索引、进行数据完整性描述。2.实验要求:在已经建立的数据库中创建表运用Microsoft SQL Server2000企业管理器和Transact-SQL语句两种方法建立“课程信息表” 、“教学任务表” 、“教师档案表” 、“学生档案表” 、“学生选课表” 、“学生成绩表” 。了解表与表之间的逻辑依赖关系学会在Microsoft SQL Server2000企业管理器中,创建
2、表之间的关联关系,通过外键的拖曳建立表的基本依赖关系,从而直白的表达整个数据库的表间联系,但是,注意:过程中,主键与外键对应的源数据表。修改表结构将学生档案表“姓名”字段的数据类型修改为varchar(8)。为学生成绩表增减一个新的字段“总成绩”,类型为real,默认是空值。学生成绩表“平时成绩”字段的取值为小于100的正数。建立索引 运用TransactSQL语句建立以下索引:在学生档案表的“姓名”字段上建立普通升序索引;在学生档案表的“学号”字段上建立唯一索引;在学生档案表的“学号”字段上建立聚集索引;在学生档案表的“学号”(升序)、“姓名”(升序)和“籍贯”(升序)三个字段上建立一个普通
3、索引;运用SQL企业管理器在学生档案表中的“籍贯”字段上创建普通升序索引。3.实验环境与实验器材:计算机,网络环境,投影设备。实验相关软件:Window xp、SQL Server 2000。4.实验内容与步骤 使用企业管理器和Transact-SQL语句创建“课程信息表”、“教学任务表”、“教师档案表”、“学生档案表”、“学生选课表”、“学生成绩表”6张表,6张表的具体设计内容:“课程信息表”包括课程名称、课程类别、学分和学时等;“教师档案表”和“学生档案表”记录了教师和学生的基本情况;“教学任务表”包括课程ID、任课教师ID、学期和年度;“学生选课表”给出了学生与课程之间的关系;“学生成绩
4、表”则给出了学生成绩的计算方法。4.1 在“教学管理”数据库中使用Transact-SQL命令创建表使用Transact-SQL命令创建“学生档案表”,包含字段“学号” 、“姓名” 、“性别” 、“出生日期” 、“籍贯” 、“专业” 、“班级”。第1步:从“开始”菜单中打开“查询分析器”,连接进入“查询”窗口。第2步:在“查询”窗口中,创建指定数据文件和事务日志文件的“教学管理”数据库,要注意这两个文件路径所需的文件夹应先创建好,不然会有错误提示。 在“教学管理”数据库中使用Transact-SQL命令创建表创建“学生档案表”第1步:在“查询分析器”窗口的上部,选择“教学管理”数据库。并在查询
5、框中输入建立“学生档案表”的命令:create table 学生档案(学号 char(8)primary keyCheck(学号like(0-90-90-90-90-90-90-90-9),姓名 varchar(8) not null,性别 char(8),出生日期 datetime check(出生日期=1970),籍贯 char(8),专业 char(8),班级 char(8)第2步:执行该命令,出现如下窗口:第3步:刷新“SQL查询分析器”界面左边的“对象浏览器”中的“教学管理”数据库,这时在“教学管理”数据库的“用户表”中可以看到新建的“学生档案表”创建“教师档案表”第1步:输入建立“
6、教师档案表”的命令,如下:create table 教师档案表(任课教师ID char(8)primary keycheck(任课教师ID like(0-90-90-90-90-90-90-90-9),姓名 varchar(8) not null,性别 char(8),check(性别=Mor 性别=F),职称 varchar(8),单位 varchar(20)第2步:执行,结果如下:第3步:刷新,查看表:创建“教学任务表”第1步:输入建立“教学任务表”的命令,执行第2步:刷新,查看表创建“课程信息表”第1步:输入建立“课程信息表”的命令,执行:第2步:刷新,查看表创建“学生选课表”第1步:输
7、入建立“学生选课表”的命令,执行第2步:刷新,查看表创建“学生成绩表”第1步:输入建立“学生成绩表”的命令,执行第2步:刷新,查看表3.2 在“教学管理”数据库中使用企业管理器创建表 使用SQL企业管理器创建“教师档案表”,如图示: 3.3 修改表的结构 3.3.1 修改数据类型1)将“学生档案表”中的“姓名”字段的数据类型改为varchar(8),则命令如下:alter table 学生档案 alter column 姓名 varchar(8)2)将“课程信息表”中的“课程名称”字段的数据类型改为varchar(50),则命令如下:alter table 课程信息 alter column
8、课程名称 varchar(50)第1步:打开“SQL查询分析器”并连接,输入对表结构修改的命令,如图:第2步:执行,查看结果: 3.3.2增加一个新字段1)为“学生成绩表”增加一个新字段“总成绩”,类型为real,默认是空值,命令如下:alter table 学生成绩 add 总成绩 real default null2)为“教学任务表”增加一个新字段“教师姓名”,类型为varchar(8),默认是空值命令如下:alter table 教学任务 add 教师姓名 varchar(8)default null第1步:打开“SQL查询分析器”并连接,输入对表结构修改的命令,如图:第2步:执行,查看
9、结果:3.3.3增加约束条件1)为“学生成绩表”增加一个约束,“平时成绩”字段的取值为大于等于0小于等于100的正数命令如下:alter table 学生成绩add constraint shuliang1 check(平时成绩=0 and 平时成绩2000)第1步:打开“SQL查询分析器”并连接,输入对表结构修改的命令,如图:第2步:执行,查看结果:3.4 使用Transact-SQL命令创建索引3.4.1 在“学生档案表”的“姓名”字段上建立普通升序索引;3.4.2 在“学生档案表”的“学号”字段上建立唯一索引;3.4.3 在“学生档案表”的“学号”(升序)、“姓名”(升序)、和“籍贯”(
10、降序)三个字段上建立普通索引;3.4.4 在“学生成绩表”的“学号”字段上建立聚集索引;3.4.5 在“教学任务表”的“任课教师ID”字段上创建名为“任课教师ID索引”的唯一索引;在“教师档案表”中的“教师ID”(降序)、“姓名”(升序)、“职称”(升序)三个字段上建立一个普通索引。第1步:打开“SQL查询分析器”并连接,输入创建索引的命令,代码如下:create index 姓名索引 on 学生档案(姓名)create unique index 学号索引 on 学生档案(学号)create index 多列索引 on 学生档案(学号,姓名,籍贯desc)create clustered in
11、dex 学号索引 on学生成绩(学号)create unique index 任课教师ID索引 on 教学任务(任课教师ID)create index 多列索引 on 教师档案(学号教师IDdesc,姓名,职称)第2步:执行,查看结果:第3步:索引创建成功,在对象浏览器中的“教学管理”数据库下,可以看到刚创建的“姓名索引”“学号索引”“多列索引”,如图:3.5 使用SQL企业管理器创建索引3.5.1 使用SQL企业管理器在“学生档案表”中的“籍贯”字段上创建普通升序索引。第1步:打开“企业管理器”, 在“控制台根目录”中,点开“教学管理”数据库中的表,如图:第2步:在“学生档案”上单击右键,选
12、择“所有任务” “管理索引”,弹出如下窗口:第3步:单击“新建”,出现“新建索引”对话框,输入索引名“籍贯索引”,选择索引列“籍贯”,如图:第4步:单击“确定”,返回“管理索引”,如图:3.5.2 使用SQL企业管理器在“课程信息表”上创建“课程ID”唯一索引。步骤如下:打开“企业管理器”, 在“控制台根目录”中,点开“教学管理”数据库中的表,使用SQL企业管理器在“课程信息表”上创建“课程ID”唯一索引。步骤如下:打开“企业管理器”, 在“控制台根目录”中,点开“教学管理”数据库中的表,在“课程信息”上单击右键,选择“所有任务” “管理索引”,弹出如下窗口:单击“新建”,出现“新建索引”对话
13、框,输入索引名“课程ID索引”,选择索引列“课程ID”,如图:单击“确定”,返回“管理索引”,如图:即可。3.6 创建数据库表之间的关系图第1步:在企业管理器的“控制台根目录”中,单击左端“+”号层层展开,直到在屏幕上看到数据库下的各个数据库,点开“教学管理”数据库,看到该数据库下的子项。如图:第2步:在“关系图”子项上,单击右键,选择“新建数据库关系图”,如图:第3步:单击“下一步”,之后添加6张表到右边的文本框中:第4步:单击“下一步”,单击“完成”5思考与总结这次实验主要使用Transact-SQL语句在查询分析器中实现表和索引的创建,还有表的修改,通过实验对相应的SQL语句有了更深的了解和学习。在命令语句的输入中,对每一个语句都应该仔细输入,做到没有遗漏;在遇到错误提示时,应学会通过尝试修改语句来寻找错误之处,思考错误的原因,结合课本所学知识进行对比,这样才能对SQL语句有更深的认识。