MySQL数据库实验四 数据更新和视图

★观前提示:本篇内容为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)
如有任何疑问,评论回复,看到即回,欢迎大家多多交流学习!
★以上实验内容仅供参考。

猜你喜欢

转载自blog.csdn.net/qq_51646682/article/details/125271211