阅读前注意:
1. 本实验报告配套《数据库系统原理及应用教程》(苗雪兰等,第五版) 实验二:数据库维护实验(书上10.4节),书本中采用Microsoft SQL Server Management Studio 2008,实验报告中采用Microsoft SQL Server Management Studio 2019。
2. 如果你的数据库课程选用的书目是这本书的话,那么大概率这会是你的实验作业。建议先自己独立完成后再作参考,数据库这门课是需要自己动手的。
3. 实验报告中可能增加了一些书中没有的附加内容,读者可以有兴趣自行完成。
4. 实验报告仅供初学者参考。
5. 请谅解实验报告中可能存在的问题或错误,欢迎指出,欢迎交流讨论。
一、实验目的
要求学生熟练掌握使用SQL命令和SQL Server Management Studio向数据库输入数据、修改数据和删除数据的操作。
二、实验内容
1、 基本操作实验
按照书上10.4.2的要求完成基本操作实验和提高操作实验。要求:在每个基本表中各输入至少10条记录,能使用SQL命令进行数据输入、修改和删除操作。
2、 提高操作实验
向自设计的数据库应用系统的数据库中的各表,输入多条实际数据,并实现数据的增、删、改操作
三、实验过程
1、 基本操作实验
打开Microsoft SQL Server Management Studio 2019,在对象资源管理器中右键“数据库”,新建数据库Library_Reader和Student_Class。
按照书上要求,使用CREATE TABLE指令创建表。
为Library_Reader创建表:
--图书读者数据库表结构为:
--图书(书号,类别,出版社,作者,书名,定价);
--读者(编号,姓名,单位,性别,电话);
--借阅(书号,读者编号,借阅日期);
USE Library_Reader
CREATE TABLE Book
(
b_number CHAR(10) NOT NULL,
b_type VARCHAR(12),
b_concern VARCHAR(30),
b_writer VARCHAR(20) NOT NULL,
b_name VARCHAR(50) NOT NULL,
b_price MONEY ,
PRIMARY KEY(b_number)--主码
)
CREATE TABLE Reader
(
r_number CHAR(8) NOT NULL,
r_name VARCHAR(8) NOT NULL,
r_workplace VARCHAR(30),
r_sex CHAR(1) NOT NULL,
r_tel CHAR(11),
CHECK(r_sex IN('M', 'F')),
PRIMARY KEY(r_number)
)
CREATE TABLE Loan
(
b_number CHAR(10) NOT NULL,
r_number CHAR(8) NOT NULL,
l_date DATETIME NOT NULL,
PRIMARY KEY(b_number, r_number),
)
为Student_Class创建表,注意使用USE来切换数据库:
USE Student_Class
CREATE TABLE Student
(
s_number CHAR(5) NOT NULL,
s_name VARCHAR(8) NOT NULL,
s_age SMALLINT DEFAULT 20,
s_sex CHAR(1) NOT NULL,
s_major VARCHAR(20),
PRIMARY KEY(s_number),
CHECK(s_sex IN('M', 'F'))
)
CREATE TABLE Course
(
c_number CHAR(5) NOT NULL,
c_name VARCHAR(20) NOT NULL,
c_precourse CHAR(5),
PRIMARY KEY(c_number)
)
CREATE TABLE Select_Course
(
s_number CHAR(5) NOT NULL,
c_number CHAR(5) NOT NULL,
c_score SMALLINT DEFAULT 0,
PRIMARY KEY(s_number, c_number),
)
使用INSERT INTO [表名] VALUES [记录]向Library_Reader数据库的表表中录入数据。由于录入信息会对后续实验有影响,录入信息时严格按照书上的表格录入。
USE [Library_Reader]
INSERT INTO Book
VALUES (1000000001,'计算机','机械工业出版社','李明','计算机引论',18.00),
(1000000002,'计算机','机械工业出版社','王小红','数据结构',22.00),
(1000000003,'计算机','机械工业出版社','李和明','C语言编程',25.50),
(1000000004,'计算机','电子工业出版社','刘宏亮','操作系统',49.80),
(1000000006,'计算机','机械工业出版社','刘宏亮','数据结构',21.60),
(1000000005,'计算机','电子工业出版社','王小红','计算机文化',20.00),
(2000000007,'数学','机械工业出版社','吴非','高等数学',18.00),
(2000000008,'数学','机械工业出版社','丁玉应','概率统计',22.30),
(2000000009,'数学','电子工业出版社','赵名','线性代数',15.00),
(3000000010,'物理','电子工业出版社','张共可','力学',19.80)
INSERT INTO Reader
VALUES ('10000001','李小明','计算机系','M','13874635478'),
('10000002','王红','计算机系','M','13798394252'),
('10000003','李和平','计算机系','F','17757382635'),
('10000004','刘宏亮','计算机系','M','12775641098'),
('10000006','刘宏亮','计算机系','M','15678469943'),
('10000005','王小红','数学系','F','16734581230'),
('10000007','吴小','数学系','M','13894467236'),
('10000008','丁玉应','数学系','M','18976509554'),
('10000009','赵名','数学系','F','13567675319'),
('10000010','张共可','计算机系','M','13588730978')
INSERT INTO Loan
VALUES (1000000001,10000001,'1998-11-25'),
(1000000002,10000002,'1998-12-20'),
(1000000003,10000003,'1999-6-5'),
(1000000004,10000004,'2006-11-25'),
(1000000005,10000001,'2006-11-25'),
(1000000006,10000001,'2006-11-25'),
(2000000007,10000001,'2006-11-25'),
(2000000008,10000003,'2006-11-25'),
(2000000009,10000004,'2006-11-25'),
(3000000010,10000001,'2006-11-25')
录入结果如下:
使用INSERT INTO [表名] VALUES [记录]向Student_Class数据库的表表中录入数据,由于录入信息会对后续实验有影响,录入信息时严格按照书上的表格录入。
USE Student_Class
INSERT INTO Student
VALUES ('S1','李明',21,'M','计算机'),
('S2','张小红',21,'M','计算机'),
('S3','李和明',22,'F','计算机'),
('S4','张三',21,'M','计算机'),
('S5','刘宏',23,'M','计算机'),
('S6','王红应',20,'F','计算机'),
('S7','吴非',19,'M','数学'),
('S8','丁玉',21,'M','数学'),
('S9','赵名',21,'F','数学'),
('S12','张共可',22,'M','物理')
INSERT INTO Course
VALUES ('C1','计算机引论',NULL),
('C2','数据结构','C3'),
('C3','C语言编程','C1'),
('C4','软件工程','C6'),
('C6','数据库','C2'),
('C5','计算机文化',NULL),
('C7','高等数学',NULL),
('C8','概率统计','C9'),
('C9','线性代数','C7'),
('C10','力学',NULL)
INSERT INTO Select_Course
VALUES ('S1','C1',60),
('S2','C1',93),
('S3','C1',NULL),
('S4','C1',89),
('S1','C2',79),
('S2','C2',NULL),
('S3','C2',80),
('S4','C3',90),
('S1','C3',92),
('S2','C3',81),
('S1','C7',85),
('S4','C7',75)
录入结果如下:
对于两个数据库的创建、录入工作已经完成。下面对两个数据库进行增、删、改操作。请注意!由于后续的实验还需要用到这两个数据库,进行增、删、改操作后记得将数据库还原!
对Library_Reader数据库表中的记录进行修改和删除(增加记录的方式与前面向表中插入记录的方式相同,使用INSERT INTO [表名] VALUES [记录],这里不再赘述)
--修改记录
USE Library_Reader
UPDATE Book
SET b_writer = 'ABCD' --只是为了便于区别
WHERE b_number = '2000000007'
SELECT *
FROM Book
WHERE b_number = '2000000007'
修改结果:
--删除记录
USE Library_Reader
DELETE FROM Reader
WHERE r_number = 10000001
SELECT *
FROM Reader
WHERE r_number = 10000001
删除结果:
对Student_Class数据库表中的记录进行修改和删除(增加记录的方式与前面向表中插入记录的方式相同,使用INSERT INTO [表名] VALUES [记录],这里不再赘述)
--修改记录
USE Student_Class
UPDATE Select_Course
SET c_score = 0
WHERE s_number = 'S1' AND c_number = 'C1'
SELECT *
FROM Select_Course
WHERE s_number = 'S1' AND c_number = 'C1'
修改结果:
USE Student_Class
DELETE FROM Course
WHERE c_number = 'C1'
SELECT * FROM Select_Course
删除结果:
2、 提高操作实验
提高操作实验内容略,操作过程与上面的操作过程一致,大家可以自己动手做一做。最好的方法是先手动绘制出E-R图,然后转换为关系模型后再创建数据库。书本中常用的数据库有“教务管理系统数据库”、“商品销售数据库”、“仓库存货数据库”等,都可以自己动手试试。