实验名称 实验1--通过SQL Server Management Studio创建及管理数据库 日期 2020年 05 月 28 日
一、实验目的:
(1)熟悉SQL Server Management Studio。
(2)掌握通过SQL Server Management Studio管理数据库的方法。
(3)掌握数据库及其物理文件的结构关系。
(4)掌握通过SQL Server Management Studio管理数据表的方法。
二、实验环境:
PC + Windows + SQL Server
三、实验内容
1.通过SQL Server Management Studio创建数据库
创建一个名称为学生管理信息Student_info数据库,创建数据库Student_info的具体参数如表B.1所示。
表B.1 数据库参数
参 数 名 称 | 参 考 参 数 |
数据库名称 数据库逻辑文件名称 数据库物理文件名称 数据文件初始大小 数据文件大小最大值 数据文件增长增量 日志逻辑文件名称 日志物理文件名称 日志文件初始大小 日志文件大小最大值 日志文件增长增量 | Student_info Student_info_data Student_info_data.mdf 20MB 300MB 5MB Student_info_log Student_info_log.ldf 5MB 50MB 1MB |
截图:
2.查看、验证创建的数据库
方法1:执行sp_helpdb系统存储过程查看Student_info数据库的信息。
截图:
方法2:在SQL Server Management Studio中查看。
3.修改数据库的属性
通过SQL Server Management Studio查看数据库,将数据库Student_info数据文件的初始大小改为30MB,最大值改为300MB,数据增长改为5%,日志文件的初始大小改为20MB,最大值改为30MB,数据增长改为6%。
截图:
4.数据库的分离及附加
(1)将Student_info数据库从数据库服务器分离。
截图:
(2)将Student_info数据库再次附加到服务器中。
截图:
5.通过SQL Server Management Studio在Student_info数据库中创建表
Student_info数据库包含三张表:Student表、Course表及SC表,分别代表学生信息、课程信息及学生选课信息。三张表的结构及其约束见表B.2、表B.3和表B.4。
表B.2 Student表结构和约束
列 名 称 | 类 型 | 宽度 | 允许空值 | 默认值 | 约束 | 主键 | 说 明 |
Sno | Char | 8 | 否 |
|
| 是 | 学号 |
Sname | Varchar | 8 | 否 |
|
|
| 学生姓名 |
Sex | Char | 2 | 否 | 男 |
|
| 性别 |
Birth | Smalldatetime |
| 否 |
|
|
| 出生年月 |
Classno | Char | 3 | 否 |
|
|
| 班级号 |
Entrance_date | Smalldatetime |
| 否 |
|
|
| 入学时间 |
Home_addr | Varchar | 40 | 是 |
|
|
| 家庭地址 |
表B.3 Course表结构和约束
列 名 称 | 类 型 | 宽度 | 允许空值 | 默认值 | 约 束 | 主键 | 说明 |
Cno | Char | 3 | 否 |
|
| 是 | 课程号 |
Cname | Varchar | 20 | 否 |
|
|
| 课程名称 |
Total_perior | Smallint |
| 是 |
| 大于0 |
| 总学时 |
Credit | Tinyint |
| 是 |
| 大于0,小于等于6 |
| 学分 |
表B.4 SC表结构和约束
列 名 称 | 类 型 | 宽度 | 允许空值 | 默认值 | 约 束 | 主键 | 外键 | 说明 |
Sno | Char | 8 | 否 |
|
| 是 | 是 | 学号 |
Cno | Char | 3 | 否 |
|
| 是 | 课程号 | |
Grade | Tinyint |
| 是 |
| 大于等于0,小于等于100 |
| 否 | 成绩 |
截图:
创建好后,自己写SQL 语句,创建与student结构完全一样的student1表。
代码:
6.通过SQL Server Management Studio管理表结构
(1)添加和删除列
a.给Student表增加身高(以米单位)stature列,类型为numeric(4,2),允许为空值,且身高值需小于3.0米。
b.给Student表增加所在系Sdept列,字符型,长度为20,允许为空值。
请读者考虑:如果Sdept列不允许为空值,结果会如何?如何才能实现Sdept列不允许为空值?
没有系别的学生无法添加进去;所有学生都有一个系别号。
c.给Student表增加邮政编码Postcode列,字符型,长度为6,可以为空,若不为空时,则要求其值只能出现数字,不能是其他字符。
d.删除Student表中身高stature列。
(2)添加和删除约束
a.在Student表添加约束:入学时间必须在出生年月之后。
b.给SC表的成绩grade列增加默认值约束,默认值为0。
c.删除grade列的默认值约束。
7.通过SQL Server Management Studio对表添加、修改、删除数据
(1)插入数据,Student表、Course表、SC表的记录见表B.5、表B.6、表B.7。
表B.5 Student表
Sno | Sname | Sex | Birth | Classno | Entrance_date | Home_addr | Sdept | Postcode |
20110001 | 张虹 | 男 | 1992/09/11 | 051 | 2011/09/01 | 南京 | 计算机系 | 200413 |
20110002 | 林红 | 女 | 1991/11/12 | 051 | 2011/09/01 | 北京 | 计算机系 | 100010 |
20110103 | 赵青 | 男 | 1993/05/11 | 061 | 2011/09/01 | 上海 | 软件工程 | 200013 |
截图
表B.6 Course表
Cno | Cname | Total_perior | Credit |
001 | 高数 | 96 | 6 |
002 | C语言程序设计 | 80 | 5 |
003 | Java语言程序设计 | 48 | 3 |
004 | Visual_Basic | 48 | 4 |
截图:
表B.7 SC表
Sno | Cno | Grade |
20110001 | 001 | 89 |
20110001 | 002 | 78 |
20110001 | 003 | 89 |
20110002 | 002 | 60 |
20110103 | 001 | 80 |
截图:
其他数据可自行添加。要求Student表和SC表中数据包括了每位同学自己的学号。
(2)修改数据
a.将Student表中的学号为'20110103'的同学的出生年月改为1993年10月1日。
b.将Course表中的课程号为'002'的学分改为4,总学时改为64。
(3)删除数据(请注意约束的限制)
a.删除SC表中20110103同学的选课记录。
b.删除Course表中课程号为002的记录。如果不能成功删除该记录,请分析原因。
答:不能公共删除该记录,因为受到FK_SC_Course的约束,会发生冲突。
四、心得体会(150字以上):
通过该次实验上机操作,熟悉了SQL server的使用,懂得了如何添加数据库,分离、附加数据,以及在数据库中新建表格的一般操作步骤,以及通过SQL语句新建、插入数据的方法;在新建表格时约束条件、主键、外键的处理方法。
知道了在定义表的各个属性时需要指明其数据类型及长度,无论基本表中原来是否有数据,新增加的列都是为空值,基本表的删除时有限制条件的,不能删除被其他表的约束所引用。