实验 1 :数据库的定义实验
本实验需要 2 学时。
一、实验目的
要求学生熟练掌握和使用 SQL 、 Transact-SQL 、 SQLServer 企业管理器创建数据库、表、索引和修改表结构,并学会使用 SQL Server 查询分析器接收 Transact-SQL 语句和进行结果
分析。
二、实验内容
1) 创建数据库和查看数据库属性。
2) 创建表、确定表的主码和约束条件,为主码创建索引。
3) 查看和修改表结构。
4) 熟悉 SQL Server 企业管理器和查询分析器工具的使用方法。
三、实验步骤
1 .基本操作实验
1)、 使用企业管理器建立学生_课程数据库。
2)、 在企业管理器中查看学生_课程数据库的属性,并进行修改,使之符合要求。
3) 、 通过企业管理器,在建好的学生_课程数据库中建立学生、课程和选课 3 个表,其结构为:
学生 ( 学号,姓名,性别,出生日期,学院,所在系,联系电话 ) ;
列名 数据类型 长度 是否允许为空值 默认值 说明
学号 Char 6 N 主键
姓名 Char 8 N
性别 Bit 1 N 只能为0或1
(0是女,1是男)
出生日期 smalldatetime 4 N
学院 Char 10 N
所在系 Char 10 N
联系电话 char 11 Y

学号 姓名 性别 出生日期 学院 所在系 联系电话
020101 杨颖 0 1980-7-20 信息 计算机 88297147
020102 方露露 0 1981-1-15 信息 计算机 88297147
020103 俞奇军 1 1980-2-20 信息 计算机 88297151
020104 胡国强 1 1980-11-7 信息 计算机 88297151
020105 薛冰 1 1980-7-29 水利工程 水利系 88297152
020201 秦盈飞 0 1981-3-10 电子商务 经济系 88297161
020202 董含静 0 1980-9-25 电子商务 经济系 88297062
020203 陈伟 1 1980-8-7 电子商务 经济系 88297171
020204 陈新江 1 1980-7-20 房建 水利系 88297171

课程 ( 课程号,课程名,教师,开课学期,学时,学分) ;
列名 数据类型 长度 是否允许为空值 默认值 说明
课程号 Char 3 N   主键
课程名 Char 20 N    
教师 Char 10      
开课学期 Tinyint 1     只能1-6
学时 int 4    60  
学分 Tinyint 1 N

课程号 课程名 教师 开课学期 学时 学分
101 计算机原理 陈红 2 45 3
102 计算方法 王颐 3 45 3
103 操作系统 徐格 2 60 4
104 数据库原理及应用 应对刚 3 75 5
105 网络基础 吴江江 4 45 3
106 高等数学 孙中文 1 90 6
107 英语 陈刚 1 90 6
108 VB程序设计 赵红韦 3 70 5

选课 ( 学号,课程号,成绩 ) 。
列名 数据类型 长度 是否允许为空值 默认值 说明
学号 Char 6 N 外键
课程号 Char 3 N 外键
成绩 Tinyint 1 0-100之间

学号 课程号 成绩
020101 101 85
020101 102 87
020101 107 88
020102 101 58
020102 102 63
020104 107 76
020202 103 55
020202 108 80
020203 103 57
020204 103 71

要求为属性选择合适的数据类型,定义每个表的主码,是否允许空值和默认值等列级数据约束。
4)、 在企业管理器中建立学生、课程和选课 3 个表的表级约束:每个表的主码约束;学生表与课程表间、课程表与选课表之间的外码约束,要求按语义先确定外码约束表达式,再通过操作予以实现;实现选课表的课程号和学号的惟一性约束;实现学生表性别只能是“男”或“女”的 Check( 检查 ) 约束。
2 .提高操作实验
1)、用 SQL 描述的建立学生—课程库操作,在 SQL Server 企业管理器中实现
2) 将设计的数据库应用系统中的数据库、库中的表、索引和约束用 Transact-SQL 表达,并通过企业管理器或查询分析器实现建库、建表、建立表间联系和建立必要的索引、列级约束和表级约束的操作。
四、实验方法
1 .创建数据库
(1)、 使用企业管理器创建数据库的步骤
1)、 从“开始”菜单中选择:程序 Microsoft SQL Server 2000 企业管理器。
2)、 选中需要在其上创建数据库的服务器,单击前面的“ + ”号,使其展示为树形目录。
图 3-1 在数据库的弹出菜单中选择新建数据库
3)、 选中“数据库”文件夹,单击鼠标右键,在弹出菜单上选择“新建数据库”,如图 3-1 所示。随后在数据库属性对话框的常规页面中,输人数据库名,如图 3-2 所示。

图 3-2 数据库属性对话框
数据库属性对话框中有 3 个页面:常规页面、数据文件页面和事务日志页面。数据文件页面和事务日志页面主要用来定义数据库的数据文件和日志文件的属性。
4)、 选择数据文件页面,输入学生_课程数据库的数据文件属性,包括文件名、存放位置和文件属性,如图 3-3 所示;再选择事务日志页面,输人数据库的日志文件属性,包括文件名、存放位置、大小和文件属性,如图 3-4 所示。在选择文件位置时,可以单击位于“位置”列的“…”按键,在调出的文件选择器中进行位置选择。
5)、单击 [ 确定 ] 按钮,关闭对话框。在企业管理器窗口中出现“学生_课程”数据库标志,这表明建库工作已经完成。

图 3-3 数据库属性对话框中的数据文件页面

图 3-4 数据库属性对话框中的事务日志页面
(2)、文件属性参数说明
文件属性栏设在页面的下部,它包括下列选项:
1)、 文件自动增长复选框:选中后允许文件放满数据时自动增长。
2)、文件增长单选框:设置允许文件自动增长时,每次文件增长的大小。其中,选“按兆字节”项为设置文件增长为固定的大小,单位是 MB ;选“按百分比”项为文件按指定比例数增长,单位是%。
3)、 最大文件大小单选框:设置当允许文件扩展时,数据文件能够增长的最大值。选“文件增长不受限制”项可使文件无限增长,直到用完磁盘空间;选“将文件增长限制为”项时,要设置文件最多达到的固定值。
2 .查看和修改数据库属性参数
已经建好的数据库,有时还需要对它的属性参数进行查看和修改。下面我们分两步介绍:先介绍查看和修改数据库属性的步骤,再介绍数据库有关的参数及其含义。
(1)、 查看和修改数据库属性的步骤
1)、 启动企业管理器,使数据库所在的服务器展开为树形目录。
2)、选中数据库文件夹,使之展开;用鼠标右键单击指定的数据库标识,在弹出的菜单中选择“属性”项,如图 3-5 所示。出现数据库属性对话框,如图 3-6 所示。

图 3-5 在企业管理器中选择数据库的“属性”项

图 3-6 数据库属性对话框中的选项页面
从该对话框中可以看出,它由 6 个选项卡构成,与图 3-2 不同的是增加了文件组、选项和权限页面。其中:文件组页面用于设置数据库的文件组,其概念在前面已经介绍过;权限页面用来设置用户对该数据库的访问权限,有关选项页面内容在下面介绍。
3)、 在选项卡中查看或修改相应的内容,单击 [ 确定 ] 按钮关闭对话框。
(2)、 选项页面中的数据库属性参数
“选项”页面如图 3-6 所示。“选项”页面分访问、故障还原、设置和兼容性 4 个栏目。
1)、 访问栏目。访问栏用来设置数据库的操作许可。
限制访问复选框:选择后,限制用户访问数据库。
db owner , dbcreater 或 sysadmin 成员:只能由数据库拥有者 ( 创建者 ) 使用数据库。
单用户:在同一时刻是否只允许一个用户使用该数据库。
只读:该数据库是否是只读的。
2)、 故障还原栏目。设置故障还原模型。
3)、 设置栏目。该栏目用来设置数据库在进行数据操作时的行为特征,它包括 8 个复选框,其含义比较容易理解。
3 .删除数据库
对于不需要的数据库,可以通过下面的方法删除:
1)、 用鼠标右键单击要删除的数据库,在出现的弹出菜单中选择删除项。
2)、在弹出的确认删除对话框中,单击 [ 确认 ] 按钮。
4 .新建表
在 SQL Server 2000 的数据库中,文件夹是按数据库对象的类型建立的,文件夹名是该数据库对象名。当在企业管理器中选择服务器和数据库文件夹,并打开已定义好的学生_课程数据库后,会发现它自动设置了关系图、表、视图、存储过程、用户、角色、规则、默认等文件夹。要建立“学生”表,先选中学生_课程数据库中的表文件夹,单击鼠标右健。在弹出的菜单中选择新建表,如图 3-7 所示。随后的输入表结构对话框如图 3-8 所示。

图 3-7 数据库中的表文件夹的弹出菜单

图 3-8 输入表结构对话框
输入表结构对话框是一张表,它的列属性有列名、数据类型、长度和是否允许空 4 项。用户把新建表的结构填入对话框的表中,表中的每一行定义新建表 ( 学生 ) 的一列,每一列定义新建表的一个列属性。当光标移到表中的某一行时,下面的列描述就会对应当前行显示输入项,
用户可在其中对关系的属性进行进一步说明。列描述包括数据的精度、小数位数、默认值、是否标识等项。
输入表结构时应注意以下几点:
1)、“列名”列用于输入字段名,例如“编号”、“类别”等,列名类似于变量名,其命名规格与变量一致。列名中不允许出现空格,一张表也不允许有重复的列名。
2)、“数据类型”列中的数据类型是通过选择方法,而不是直接键人数据类型字符输入的。当鼠标指针移向该列时,就会出现控制键,单击后就出现数据类型弹出框,如图 3-8 所示,可选择其中之一为指定的数据类型。
3)、“长度”列、精度和小数位数项不是所有字段都必选的。例如 int 和 datetime 型的长度是固定的,也不需要数据精度值。数据精度仅对一些数值型、字符型、货币型等数据有效,小数位仅对一些数值型数据有效。
4)、“允许空”列用于设置是否允许字段为空值,默认项用于设置字段的默认值。
5)、标识、标识种子和标识递增量用于设置字段具有的新生行递增性、初始值以及步长,以便让 SQL Server 2000 自动填写该列的值。具有标识性能的字段的数据类型只能为 int , Smallint , tinyint,decimal(p , 0) 或 numeric(p , 0) ,而且不允许为空值。一个表只允许有一列具有标识性能。
6)、列名前的一列按钮为字段标注按钮列。钥匙图标说明这个字段为主码,黑三角图标说明所指示行为当前字段。
7)、在对话框中单击鼠标右键,则会出现一个弹出框,如图 3-9 所示。
其中的几个选项非常有用:选择“设置主键”项,则定义当前字段为主码,表中第一列处会显示钥匙图案;选择“插入列”项,则在当前字段处插入一个新行;选择“删除列”项,则删除当前字段;选择“属性”项,可调出表属性对话框,如图 3-10 所示,可以在其中定义索引/键、与其他表间的关联和约束等属性,具体方法在下面介绍。

图 3-9 建表对话框中的弹出框

图 3-10 表属性对话框
8)、 字段输入完后,就可以关闭建表对话框了。最后,会弹出输入表名对话框,如图 3-11 所示。在对话框中输入“学生”表名,单击 [ 确定 ] 按钮后,建表工作就完成了。

5 .定义表的完整性约束和索引

表的约束包括码 ( 主键 ) 约束、外码约束 ( 关联或关系约束 ) 、唯一性约束、 Check( 检查 ) 约束 4 种。这些约束可以在表属性对话框中定义。

(1)定义索引和键

选择“索引/键”页面,其界面如图 3-10 所示。

1)、 查看、修改或删除索引时,先要在“选定的索引”下拉菜单中选择索引名,其索引内容就显示在表中。需要时,可以直接在表中修改索引内容,如改变索引列名,改变排序方法等。对于不需要的索引可以单击 [ 删除 ] 按钮,直接删除此索引。

2)、 新建一个索引时,单击 [ 新建] 按钮,并在下面的表中输入索引名、索引列名及排列顺序。

3)、 设置 UNIQUE 复选框,确定是否为唯一索引约束。设置 CLUSTERED 复选框,确定是否为群集索引 (CLUSTERED) 。

(2) 定义表间关联

选择表页面

1)、 查看、修改或删除表关联时,先要在“选定的关系”下拉菜单中选择关联名 ( 即关系名 ) ,其关联内容就显示在表中。需要时,可以直接在表中修改关联内容,例如改变主键,改变外码键等。对于不需要的关联可以单击 [ 删除 ] 按钮,直接删除此关联。

2)、 新建一个关联时,单击 [ 新建 ] 按钮,选择库中的关联表 ( 参照表 ) 后,在表中输入关联名、主码和外码。

3)、 设置“创建中检查现存数据”复选框,确定新建关联时是否对数据进行检查,要求符合外码约束;设置“对复制强制关系”复选框,确定在进行数据复制时是否要符合外码约束;设置“对 INSERT 和 UPDATE 强制关系”复选框,确认在对数据插入和更新时,是否符合外码约束;设置“级联更新相关的字段”复选框和“级联删除相关的记录”复选框,确认被参照关系的主码值被修改时,是否也将参照表中的对应的外码值修改,而被参照关系的主码值被删除时,是否也将参照表中对应外码的记录删除。

(3)定义 CHECK 约束

选择 CHECK 约束页面

1)、 查看、修改或删除 CHECK 约束时,先要在“选定的约束”下拉菜单中选择约束名,其约束内容就显示在约束表达式框中。需要时,可以直接在框中修改约束表达式。对于不需要的 CHECK 约束可以单击 [ 删除 ] 按钮,直接删除此约束。

2)、新建一个 CHECK 约束时,单击 [ 新建 ] 按钮,并在表中输入约束名和约束表达式。

3)、设置“创建中检查现存数据”,确认在创建约束时是否对表中数据进行检查,要求符合约束要求;设置“对复制强制约束”复合框,确认对数据复制时是否要求符合约束条件;设置“对 INSERT~UPDATE 强制约束”,确认在进行数据插入和数据修改时,是否要求符合约束条件。

6 .修改表结构

当需要对建好的表修改结构时,首先要在企业管理器中找到该表,用鼠标右键单击该表名,就会出现弹出菜单,如图 3-14 所示。随后,在弹出的菜单中选择“设计表”项,企业管理器会把如图 3-9 所示的建表对话框调出,用户可对原有内容进行修改。

五、实验报告要求

1)、分别用 SQL 和 Transact-SQL 表示学生_课程数据库建库和建表 ( 建索引 ) 操作,用 SQL 和 Transact-SQL 表示学生—课程库建表和建库操作。指出 SQL 和 Transact-SQL 定义语句的不同之处。

建库操作

mysql数据库创建实验总结 创建数据库的实验结论_企业管理


建表操作

mysql数据库创建实验总结 创建数据库的实验结论_mysql数据库创建实验总结_02


2)、指出学生_课程数据库中各表的主码、外码和数据约束

学生表的主码是学号,没有外码和数据约束,

课程表的主码是课程号,没有外码,数据约束为开课学期只能为1-6,

选课表没有主码,外码为学号和课程号,数据约束为成绩在0-100之间3)、实验操作步骤和实验结果,实验中出现的问题和解决方法。

实验步骤:

mysql数据库创建实验总结 创建数据库的实验结论_SQL_03


实验结果:成功建立数据库学生_课程及各表。

实验中出现的问题:不知道如何同时创建数据库和在此数据库各表。

解决方法:分开创建数据库和在此数据库各表

不知道如何给属性增加数据约束。

解决方法:仔细浏览课件及上网搜索资料后就知道了。

4)、 体会和提高。

在接触数据库之前以为数据库挺难的,开始学习之后发现其实挺有趣的吧,开始实验课之后,学的内容可以上手实验了,自己动手建立数据库及其数据库中的各表,还有索引,约束条件那些,挺有意思的,在实验的过程中,让我知道了如何去用语句建立数据库,建立表,如何在指定数据库下建立表,让我认识到了数据库的语言sql和T-sql,虽然它们两并没有多大的区别。

六、注意事项

1)、建表中如果出现错误,应采用相应的修改结构或删除结构的方法。

2)、 注意数据库的主码、外码和数据约束的定义。

七、思考题

(1)、为什么要建立索引 ?学生_课程库中建立多少索引合适。

答:建立索引可以加快查询速度,学生_课程库中建立两个索引合适。

(2)、 学生_课程库的选课表中,属性学号、课程号采用数值型,还是采用字符型的 ? 采用哪种数据类型更好 ?
答:字符型,采用字符型更好,因为有时候学号、课程号会采用字符加数值的形式。