数据库实验——通过SQL Server Management Studio创建及管理数据库

一、实验目的

(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%。

**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表结构和约束
列 名 称类 型宽度允许空值默认值约束主键说 明
SnoChar8学号
SnameVarchar8学生姓名
SexChar2性别
BirthSmalldatetime出生年月
ClassnoChar3班级号
Entrance_dateSmalldatetime入学时间
Home_addrVarchar40家庭地址

表B.3 Course表结构和约束

列 名 称类 型宽度允许空值默认值约 束主键说明
CnoChar3课程号
CnameVarchar20课程名称
Total_periorSmallint大于0总学时
CreditTinyint大于0,小于等于6学分

表B.4 SC表结构和约束

列 名 称类 型宽度允许空值默认值约 束主键外键说明
SnoChar8学号
CnoChar3课程号
GradeTinyint大于等于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表

SnoSnameSexBirthClassnoEntrance_dateHome_addrSdept Postcode
20110001张虹1992/09/110512011/09/01南京计算机系
20110002林红1991/11/120512011/09/01北京计算机系
20110103赵青1993/05/110612011/09/01上海软件工程

表B.6 Course表

CnoCnameTotal_periorCredit
001高数966
002C语言程序设计805
003Java语言程序设计483
004Visual_Basic484

表B.7 SC表

SnoCnoGrade
2011000100189
2011000100278
2011000100389
2011000200260
2011010300180

其他数据可自行添加。要求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进行实验的过程比起语句而言较为繁琐,在设置约束的时候,我的实验中出现了报错以及不会设置外键的问题,所以第一点要注意设置时只添加需要的约束即可,不要添加空约束,否则会报错;第二点外键是在处理关系当中设置的。

  • 2
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
要通过SQL语句创建图书信息管理数据库,我们需要确定数据库的结构和设计。首先,我们可以创建一个名为"book_info"的数据库。 接下来,我们可以创建一个名为"books"的表,用于存储图书信息。表中可以包含以下字段:图书编号(book_id)、图书名称(title)、作者(author)、出版社(publisher)、出版日期(publish_date)、价格(price)等。 在SQL中,我们可以使用以下语句创建该表: CREATE TABLE books ( book_id INT PRIMARY KEY, title VARCHAR(255) NOT NULL, author VARCHAR(255) NOT NULL, publisher VARCHAR(255) NOT NULL, publish_date DATE, price DECIMAL(10, 2) ); 接下来,我们可以创建另一个名为"book_category"的表,用于存储图书的分类信息。表中可以包含以下字段:分类编号(category_id)和分类名称(category_name)等。 在SQL中,我们可以使用以下语句创建该表: CREATE TABLE book_category ( category_id INT PRIMARY KEY, category_name VARCHAR(255) NOT NULL ); 我们还可以创建一个名为"book_borrow"的表,用于存储图书借阅信息。表中可以包含以下字段:借阅编号(borrow_id)、图书编号(book_id)、借阅人借阅日期(borrower_id)、借阅日期(borrow_date)和归还日期(return_date)等。 在SQL中,我们可以使用以下语句创建该表: CREATE TABLE book_borrow ( borrow_id INT PRIMARY KEY, book_id INT, borrower_id INT, borrow_date DATE, return_date DATE, FOREIGN KEY (book_id) REFERENCES books (book_id), FOREIGN KEY (borrower_id) REFERENCES borrowers (borrower_id) ); 除了上述表格外,我们还可以根据具体需求添加其他表格,比如"borrowers"表格用于存储借阅人信息等。 通过以上SQL语句,我们可以创建一个基本的图书信息管理数据库,可以进行图书信息的存储、分类和借阅等操作。当然,根据需要,我们可以进一步优化数据库设计和添加更多功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

玄九Coral

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值