一、实验目的
(1)熟悉SQL Server Management Studio。
(2)掌握通过SQL Server Management Studio管理数据库的方法。
(3)掌握数据库及其物理文件的结构关系。
(4)掌握通过SQL Server Management Studio管理数据表的方法。
二、实验内容
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%。
列 名 称 | 类 型 | 宽度 | 允许空值 | 默认值 | 约束 | 主键 | 说 明 |
---|---|---|---|---|---|---|---|
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 | 否 | 成绩 |
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 | 南京 | 计算机系 |
20110002 | 林红 | 女 | 1991/11/12 | 051 | 2011/09/01 | 北京 | 计算机系 |
20110103 | 赵青 | 男 | 1993/05/11 | 061 | 2011/09/01 | 上海 | 软件工程 |
表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的约束,会发生冲突。
三、疑难问题的解决和感想
在实验过程中,首先是学会了如何配置环境,其次,在设置表和约束中最明显的感受就是利用sql server进行实验的过程比起语句而言较为繁琐,在设置约束的时候,我的实验中出现了报错以及不会设置外键的问题,所以第一点要注意设置时只添加需要的约束即可,不要添加空约束,否则会报错;第二点外键是在处理关系当中设置的。
来源地址:https://blog.csdn.net/CoralBiber/article/details/129644908