数据库实验三 数据更新

本文详述了一次数据库实验,涵盖了数据更新的三个主要方面:插入、修改和删除。实验中,使用SQL语句在学生、课程、选修等多个表中进行操作,包括提升特定课程成绩、删除学生所有信息以及统计学生总学分等任务,强调了在执行删除操作时考虑外键约束的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

实验三 数据更新

一、实验目的

熟悉数据库的数据更新操作,能够使用SQL语句对数据库进行数据的插入、修改、删除操作。

二、实验内容和要求

1.插入
2.修改
3.删除
要求:理解和掌握INSERT、UPDATE和DELETE语法结构的各个主成成分,结合嵌套SQL子查询,分别设计几种不同形式的插入、修改和删除数据的语句并调试成功。

三、实验过程

1.准备实验数据
创建数据库s_t和spj,创建学生表student、课程表course、选修表sc、供应商表s、零件表p、工程项目表j、供应情况表spj,向表中添加适量数据。
2.练习教材第3章【例3.69】——【例3.83】(这一部分内容不用写入实验报告)
3.在spj数据库中,完成教材第3章习题5中的(8)—(11)
08

UPDATE p 
SET color='蓝' 
WHERE color='红';

09

UPDATE spj 
SET sno='s3' 
WHERE sno='s5' AND jno='j4' AND pno='p6';

10

DELETE FROM spj WHERE sno='s2';
DELETE FROM s WHERE sno='s2'; 顺序不可换

11

INSERT 
INTO spj 
VALUES(s2,j6,p4,200);

4.在s_t数据库中,完成以下操作
(1)创建一个新表stu_avg,然后将学生的学号,姓名和所选修课程的平均成绩插入新表中。
创建表:

CREATE TABLE stu_avg
(sno char(9) PRIMARY KEY,
sname char(20) UNIQUE,
avg_grade SMALLINT);

插入数据:

INSERT 
INTO stu_avg
SELECT student.sno,sname,AVG(grade)
FROM student,sc 
WHERE student.Sno=sc.Sno 
GROUP BY Sno;

(2)将“数据库”这门课程的成绩提高10%。

UPDATE sc 
SET Grade=Grade*1.1
WHERE Cno IN
   ( SELECT cno 
     FROM course
     WHERE cname='数据库');

(3)删除学生“李勇”的全部信息(包括选课情况)。
第一步:

DELETE 
FROM sc
WHERE sno IN
  (SELECT sno
   FROM student
   WHERE sname='李勇');

第二步:

DELETE
FROM student
WHERE sname='李勇';

(4)创建一个新表stu_credit,表中包含sno(学号)和credit(总学分)两个属性,然后统计每个学生的总学分并存入该表。(课程成绩大于等于60分才可获得相应学分,未取得任何学分的学生总学分为0)。
创建表:

CREATE TABLE stu_credit
(sno char(9) PRIMARY KEY,
 sum_credit SMALLINT);

插入数据:

INSERT 
INTO stu_credit
SELECT student.sno,SUM(Ccredit)
FROM sc,course,student
WHERE sc.Grade>=60 AND sc.Sno=student.Sno AND 
sc.Cno=course.Cno
GROUP BY Sno;

更新数据:

UPDATE stu_credit
SET sum_credit=0
WHERE sum_credit IS NULL;

四、实验总结

使用insert完成数据插入;使用update完成数据更新;使用delete完成数据删除
删除数据时要注意删除顺序,要考虑外键等约束因素,一般都会有固定的顺序,不能随便删 。
在4—(4)题中,当向表中存储完数据后会发现有sum_credit为NULL的,所以,要对数据进行一个更新,将sum_credit为NULL的改为sum_credit=0。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值