> 文档中心 > MySQL数据库实验四 数据更新和视图

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


★观前提示:本篇内容为mysql数据库实验,代码内容经测试过,可能一小部分有所疏漏,也有会不符合每个人实验的要求的地方,因此以下内容建议仅做思路参考,。

一、实验目的

1.熟练掌握SQL的常用数据更新操作。
2.熟练应用INSERT,UPDATE,DELETE语句。
3.掌握更新操作的各种格式。
4.掌握视图的创建、更新、删除和查询。

二、实验要求

掌握各种更新语句和视图的使用。

★温馨提示:以下内容均已经过测试,不过难免会有疏漏,但是代码实现大多数思路及实现经测验都是正确的。

三、实现内容及步骤

应用INSERT,UPDATE,DELETE语句进行更新操作;
(1) 插入如下学生记录(学号:95030,姓名:李莉,年龄:18);

INSERTINTO student(sno,sname,sage)VALUES(95030,'李莉',18);

(2) 插入如下选课记录(95030,1);

INSERTINTO sc(sno,cno)VALUES('95030','1');

(3) 计算机系学生年龄改成20;

UPDATE studentSET sage='20'WHERE sdept='计科';

(4) 数学系所有学生成绩改成0;

UPDATE scSET grade=0WHERE sno IN(SELECT snoFROM studentWHERE sdept='数学');

(5) 把低于总平均成绩的女同学成绩提高5分;

分为两步,第一步:

CREATE TABLE T1SELECT *FROM sc;

第二步:

UPDATE T1SET grade=grade+5WHERE sno IN(SELECT snoFROM studentWHERE ssex='女')AND grade<(SELECT AVG(grade)FROM sc);

(6) 修改2号课程的成绩,若成绩小于75分提高5%,成绩大于75时提高4%(两个语句实现,注意顺序);
分为两步,第一步,提升5%:

UPDATE scSET grade=grade*1.05WHERE cno='2' AND grade<'75';

第二步,提升4%:

UPDATE scSET grade=grade*1.04WHERE cno='2' AND grade>'75';

(7) 删除95030学生信息;

DELETEFROM scWHERE sno='95030';

(8) 删除SC表中无成绩的记录;

DELETEFROM scWHERE grade=NULL;

(9) 删除张娜的选课记录;

DELETEFROM scWHERE sno IN(SELECT snoFROM studentWHERE sname='张娜');

(10) 删除数学系所有学生选课记录;

DELETEFROM scWHERE sno IN(SELECT snoFROM studentWHERE sdept='数学');

(11) 删除不及格的学生选课记录;

DELETE
FROM sc
WHERE grade<‘60’;

(12) 查询每一门课程成绩都大于等于80分的学生学号、姓名和性别,把值送往另一个已经存在的基本表STU(SNO,SNAME,SSEX)中;

INSERT INTO stu(SELECT sno,sname,ssexFROM studentWHERE sno NOT IN(SELECT snoFROM scWHERE grade<'80'));

(13) 把所有学生学号和课程号连接追加到新表中;

分为两步,第一步:

CREATE TABLE stu1(sno CHAR(4),cno CHAR(4));

第二步:

INSERT INTO stu1(SELECT student.sno,course.cnoFROM student,course,scWHERE student.sno=sc.snoAND sc.cno=course.cno);

(14) 所有学生年龄增1;

UPDATE studentSET sage=sage+'1';

(15) 统计3门以上课程不及格的学生把相应的学生姓名、系别追加到另外一个表中。
分为两步,第一步:

CREATE TABLE stu2(sname CHAR(4) PRIMARY KEY,sdept CHAR(4));

第二步:

INSERT INTO stu2(sname,sdept)SELECT sname,sdeptFROM studentWHERE sno IN(SELECT DISTINCT snoFROM scWHERE grade<60GROUP BY snoHAVING COUNT(grade)>=3);

(16) 将学生学号、总成绩、平均成绩定义成一个视图,以便于查询。

CREATE VIEW grade_sum_avgASSELECT sno,sum(grade) AS totalgrade,AVG(grade) AS avg_gradeFROM scGROUP BY sno;

(17) 将Student表中所有女生记录定义为一个视图F_STU,并限制对视图的更新操作不能超过视图条件限制。

CREATE VIEW F_STUASSELECT *FROM studentWHERE ssex='女'WITH Check OPTION;

(18) 将上一题建立的F_STU视图,更改为给所有男生记录定义的视图,属性包括学号、性别、年龄、所选课程号。

ALTER VIEW f_stuASSELECT student.sno,ssex,sage,cnoFROM student,scWHERE student.sno=sc.sno AND ssex='男';

(19) 在上一题的视图中找出选修了3号课程的学生。

SELECT snoFROM f_stuWHERE cno='1';

(20) 删除视图F_STU。

DROP VIEW f_stu;

四、实验总结

通过本次数据更新和视图的实验:

1、了解并掌握了SQL的常用数据更新操作,能够熟练地应用INSERT,UPDATE,DELETE语句。

2、了解了各种格式的更新操作,并经过本次实验,对其有了更好的理解与认识。

3、基本掌握了视图的创建、更新、删除和查询等操作。

本次实验收获很多,感谢老师的细心指导和同学们的热心帮助。

2022.6.14记录:Code_流苏(CSDN)
如有任何疑问,评论回复,看到即回,欢迎大家多多交流学习!
★以上实验内容仅供参考。