实验 5 数据库的更新操作
一、目的和要求
(1) 学会在 SQL Server Management Studio 中对数据库
进行插入、修改和删除数据操作。
(2) 学会使用 T-SQL 语句对数据库表进行单个数据插入、成批数据插入、修改和删除数据
操作,掌握删除表的方法。
(3) 掌握在子查询的基础上创建新表。
(4) 了解数据更新操作时要注意数据完整性。
二、背景知识:
(1) 单个数据插入语句
INSERT
INTO 表名 [(属性列 1,属性列 2 … )]
VALUES (常量 1 ,常量 2 … )
说明:
① 插入一个新元组,新元组属性列 1 的值为常量 1,属性列 2 的值为常量 2,...。INTO
子句中没有出现的属性列,新元组在这些属性列上将置空值。但必须注意的是,在表定义
时说明了 NOT NULL 的属性列不能置空值,否则会出错;
② 如果 INTO 子句中没有指明任何属性列名,则新插入的
必须在每个属性列上均
有值,而且常量的顺序与属性列的顺序相对应;
③ 如果基本表后面有属性列,属性列的排列顺序不一定要和表定义时顺序一致,但
VALUES 后的常量值对应于属性列名中的分量的值,个数相等。
(2)成批数据插入语句
INSERT
INTO 表名 [(属性列 1,属性列 2 … )]
子查询
上述命令的功能是一次将子查询的结果全部插入指定表中。
(3)删除数据语句
DELETE
FROM 表名
WHERE 删除限定条件
功能:从指定表中删除满足 WHERE 子句条件的所有记录。该语句中没有 WHERE 子
句时,表示删除此表中的全部记录,但此表的结构不会被删除,此表的定义仍在数据字典
中。
需要说明的是:
1
① 数据删除只能对整个元组或一条记录操作,不能只删除某些属性上的值;
② 数据删除只能对一个表起作用,若要从多个表中删除元组,则必须对每个表分别执
行删除命令。
(4)更新数据语句
UPDATE 表名
SET 属性列 1=常量 1,属性列 2=常量 2...
WHERE 更新限定条件
功能:修改基本表中满足条件表达式的那些元组的属性值,用 SET 子句中的值表达式
修改原来的属性值。。如果省略 WHERE 子句,则表示要修改表中的所有元组。
三、实验
通过 SQL Server Management Studio 或查询编辑器,对 XSGL 数据库,利用增删改语
句,对数据库进行数据维护。
四、实验步骤
1.在 SQL Server Management Studio 中向数据库 XSGL 的 student 表加入如表 5-1 所示的
数据
表 5-1 student 表记录
学号 姓名 年龄 性别 部门编号 出生日期
20069011 李一 男 0001 1985/1/2
20069012 李二 女 0002 1986/1/2
方法:
在 SQL Server Management Studio 中,展开“XSGL”数据库,单击“表”目录,在右
面的详细窗格中,右击表“student”,在快捷菜单中选择“打开表”,并在其及联菜单上,
单击“返回所有行”,将鼠标移动到空白记录上,逐字段输入各记录值,输入完后,关闭表
窗口。
2.建立一个新表‘成教表’chengjiao,结构与 student 表相同。
CREATE TABLE chengjiao
(
SNO char (8) not null unique,
SNAME char(10),
SEX char(2),
DNO char(8),
AGE smallint,
BIRTHDAY datetime )
2
3.将一个新学生 (学号:‘20067027’,姓名:‘张三’,年龄:20,所在系编号:‘0002’ )
插入到学生表中。
INSERT INTO student(SNO,SNAME,AGE,DNO)
VALUES ('20067027','张三 ',20,'0002')
4.按如下语句插入另外两个同学的信息到成教表中
INSERT INTO chengjiao(SNO,SNAME,AGE,DNO) VALUES ('20067011','王二 ',23,'0003')
INSERT INTO chengjiao(SNO,SNAME,AGE,DNO) VALUES ('20067021','张三 ',19,'0003')
说明:插入的数据必须符合数据库的完整性约束
5.将成教表 chengjiao 中的所有学生一次性添加到学生表 student 中。
INSERT INTO student (SNO,SNAME,SEX,DNO)
(SELECT SNO,SNAME,SEX,DNO FROM chengjiao )
6.依据学生的生日,计算出该学生的年龄
UPDATE student
SET AGE=(YEAR(GETDATE())-YEAR(BIRTHDAY))
7.将所有安排在 A209 的课程调整到 D109
UPDATE course
SET ROOM='D109'
WHERE ROOM='A209'
8.将选课表中的‘线性代数’课程的成绩减去 4 分
UPDATE sc SET GRADE=GRADE-4
WHERE CNO IN
(SELECT CNO FROM course
WHERE CNAME='线性代数 ')
9.从排课表中删除‘杨丽’老师的所有排课纪录
DELETE FROM course
WHERE TNAME='杨丽 '
9.删除学院编号为空的学生记录及选课记录
DELETE FROM sc WHERE SNO IN
(SELECT SNO FROM student
WHERE DNO is NULL)
3
DELETE FROM student WHERE DNO is NULL
说明:为了满足数据的完整性约束要求,必须先在选课表中删除该生的选课纪录,再在学
生表中删除该名学生
10.删除表 ’excelxuanke’
DROP table excelxuanke
思考
(1)在选课表中插入一个新的选课记录,学号为 20002059,授课班号为 244501,成绩 80
分。
(2)从选课表中删除选修‘线性代数’的选修纪录
(3)将机电学院的女生一次性添加到成教表中
(4)将所有学生的高等数学成绩加5分
(5)将学号尾数为‘4’的同学成绩加 2
(6)删除电科系所有学生的选课记录
(7)将学号为“20002059”的学生姓名改为“王菲”
(8)删除成绩为空的选课记录
4
实验5 数据库的更新操作