阅读前注意:

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。

mysql数据库技术第二版实训4答案 mysql数据库技术第二版实训5_数据


按照书上要求,使用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')

录入结果如下:

mysql数据库技术第二版实训4答案 mysql数据库技术第二版实训5_数据_02


mysql数据库技术第二版实训4答案 mysql数据库技术第二版实训5_数据库_03


mysql数据库技术第二版实训4答案 mysql数据库技术第二版实训5_数据_04


使用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)

录入结果如下:

mysql数据库技术第二版实训4答案 mysql数据库技术第二版实训5_sqlserver_05


mysql数据库技术第二版实训4答案 mysql数据库技术第二版实训5_数据库_06


mysql数据库技术第二版实训4答案 mysql数据库技术第二版实训5_mysql数据库技术第二版实训4答案_07


对于两个数据库的创建、录入工作已经完成。下面对两个数据库进行增、删、改操作。请注意!由于后续的实验还需要用到这两个数据库,进行增、删、改操作后记得将数据库还原!

对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'

修改结果:

mysql数据库技术第二版实训4答案 mysql数据库技术第二版实训5_sqlserver_08


--删除记录
USE Library_Reader
 
DELETE FROM Reader
WHERE  r_number = 10000001
 
SELECT *
FROM   Reader
WHERE  r_number = 10000001

删除结果:

mysql数据库技术第二版实训4答案 mysql数据库技术第二版实训5_mysql数据库技术第二版实训4答案_09




对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'

修改结果:

mysql数据库技术第二版实训4答案 mysql数据库技术第二版实训5_数据_10


USE Student_Class
 
DELETE FROM Course
WHERE  c_number = 'C1'
 
SELECT * FROM   Select_Course

删除结果:

mysql数据库技术第二版实训4答案 mysql数据库技术第二版实训5_数据库_11




2、 提高操作实验

提高操作实验内容略,操作过程与上面的操作过程一致,大家可以自己动手做一做。最好的方法是先手动绘制出E-R图,然后转换为关系模型后再创建数据库。书本中常用的数据库有“教务管理系统数据库”、“商品销售数据库”、“仓库存货数据库”等,都可以自己动手试试。