★观前提示:本篇内容为mysql数据库实验,代码内容经测试过,可能一小部分有所疏漏,也有会不符合每个人实验的要求的地方,因此以下内容建议仅做思路参考,。
一、实验目的
1.熟练掌握SQL的常用数据更新操作。
2.熟练应用INSERT,UPDATE,DELETE语句。
3.掌握更新操作的各种格式。
4.掌握视图的创建、更新、删除和查询。
二、实验要求
掌握各种更新语句和视图的使用。
★温馨提示:以下内容均已经过测试,不过难免会有疏漏,但是代码实现大多数思路及实现经测验都是正确的。
三、实现内容及步骤
应用INSERT,UPDATE,DELETE语句进行更新操作;
(1) 插入如下学生记录(学号:95030,姓名:李莉,年龄:18);
INSERT
INTO student(sno,sname,sage)
VALUES(95030,'李莉',18);
(2) 插入如下选课记录(95030,1);
INSERT
INTO sc(sno,cno)
VALUES('95030','1');
(3) 计算机系学生年龄改成20;
UPDATE student
SET sage='20'
WHERE sdept='计科';
(4) 数学系所有学生成绩改成0;
UPDATE sc
SET grade=0
WHERE sno IN(SELECT sno
FROM student
WHERE sdept='数学');
(5) 把低于总平均成绩的女同学成绩提高5分;
分为两步,第一步:
CREATE TABLE T1
SELECT *
FROM sc;
第二步:
UPDATE T1
SET grade=grade+5
WHERE sno IN(SELECT sno
FROM student
WHERE ssex='女')
AND grade<(SELECT AVG(grade)
FROM sc);
(6) 修改2号课程的成绩,若成绩小于75分提高5%,成绩大于75时提高4%(两个语句实现,注意顺序);
分为两步,第一步,提升5%:
UPDATE sc
SET grade=grade*1.05
WHERE cno='2' AND grade<'75';
第二步,提升4%:
UPDATE sc
SET grade=grade*1.04
WHERE cno='2' AND grade>'75';
(7) 删除95030学生信息;
DELETE
FROM sc
WHERE sno='95030';
(8) 删除SC表中无成绩的记录;
DELETE
FROM sc
WHERE grade=NULL;
(9) 删除张娜的选课记录;
DELETE
FROM sc
WHERE sno IN(SELECT sno
FROM student
WHERE sname='张娜');
(10) 删除数学系所有学生选课记录;
DELETE
FROM sc
WHERE sno IN(SELECT sno
FROM student
WHERE sdept='数学');
(11) 删除不及格的学生选课记录;
DELETE
FROM sc
WHERE grade<‘60’;
(12) 查询每一门课程成绩都大于等于80分的学生学号、姓名和性别,把值送往另一个已经存在的基本表STU(SNO,SNAME,SSEX)中;
INSERT INTO stu
(SELECT sno,sname,ssex
FROM student
WHERE sno NOT IN(SELECT sno
FROM sc
WHERE grade<'80'));
(13) 把所有学生学号和课程号连接追加到新表中;
分为两步,第一步:
CREATE TABLE stu1(
sno CHAR(4),
cno CHAR(4));
第二步:
INSERT INTO stu1(
SELECT student.sno,course.cno
FROM student,course,sc
WHERE student.sno=sc.sno
AND sc.cno=course.cno);
(14) 所有学生年龄增1;
UPDATE student
SET sage=sage+'1';
(15) 统计3门以上课程不及格的学生把相应的学生姓名、系别追加到另外一个表中。
分为两步,第一步:
CREATE TABLE stu2(
sname CHAR(4) PRIMARY KEY,
sdept CHAR(4)
);
第二步:
INSERT INTO stu2(sname,sdept)
SELECT sname,sdept
FROM student
WHERE sno IN(SELECT DISTINCT sno
FROM sc
WHERE grade<60
GROUP BY sno
HAVING COUNT(grade)>=3);
(16) 将学生学号、总成绩、平均成绩定义成一个视图,以便于查询。
CREATE VIEW grade_sum_avg
AS
SELECT sno,sum(grade) AS totalgrade,
AVG(grade) AS avg_grade
FROM sc
GROUP BY sno;
(17) 将Student表中所有女生记录定义为一个视图F_STU,并限制对视图的更新操作不能超过视图条件限制。
CREATE VIEW F_STU
AS
SELECT *
FROM student
WHERE ssex='女'
WITH Check OPTION;
(18) 将上一题建立的F_STU视图,更改为给所有男生记录定义的视图,属性包括学号、性别、年龄、所选课程号。
ALTER VIEW f_stu
AS
SELECT student.sno,ssex,sage,cno
FROM student,sc
WHERE student.sno=sc.sno AND ssex='男';
(19) 在上一题的视图中找出选修了3号课程的学生。
SELECT sno
FROM f_stu
WHERE cno='1';
(20) 删除视图F_STU。
DROP VIEW f_stu;
四、实验总结
通过本次数据更新和视图的实验:
1、了解并掌握了SQL的常用数据更新操作,能够熟练地应用INSERT,UPDATE,DELETE语句。
2、了解了各种格式的更新操作,并经过本次实验,对其有了更好的理解与认识。
3、基本掌握了视图的创建、更新、删除和查询等操作。
本次实验收获很多,感谢老师的细心指导和同学们的热心帮助。
2022.6.14记录:Code_流苏(CSDN)
如有任何疑问,评论回复,看到即回,欢迎大家多多交流学习!
★以上实验内容仅供参考。