MySQL增删改查语句练习(grade表,student表,subjects表,result表)

目录

问题描述

问题分析

1. 添加操作

2. 修改操作

3. 删除操作

问题实现

1. 添加测试数据

2. 根据题目要求完成crud操作

1. 将地址是西安市的更新为西安科技二路

2. 将S1001的email修改为空的字符串

3. 将第二门课的名字更新为 java基础,课时为60 ,班级编号是2

4. 将S1001,课程编号为 2 的成绩提高5分

5. 将 S1004,课程编号为3 的成绩更新为60,考试时间更新为 2015-10-10

6. 经核实 S1004 课程编号为2 的缺考

7. 将计算机网络课程删除掉


问题描述

根据上一篇MySQL的建表练习中的练习三,所建的四张表(grade表,student表,subjects表,result表),我们添加测试数据完成已下操作:

1. 将地址是西安市的更新为西安科技二路

2. 将S1001的email修改为空的字符串

3. 将第二门课的名字更新为 java基础,课时为60 ,班级编号是2

4. 将S1001,课程编号为 2 的成绩提高5分

5. 将 S1004,课程编号为3 的成绩更新为60,考试时间更新为 2015-10-10

6. 经核实 S1004 课程编号为2 的缺考

7. 将计算机网络课程删除掉

上一篇文章链接:

MySQL数据库基础:数据库基础知识,MySQL数据库及配置安装_不会敲代码的HZ的博客-CSDN博客icon-default.png?t=M85Bhttps://blog.csdn.net/weixin_51612062/article/details/127850829?spm=1001.2014.3001.5501


问题分析

根据题目我们需要对数据表进行插入、修改、删除操作,那我我们来看看这些操作的语法。

1. 添加操作

插入单条数据:

-- 方法1
insert into 表名 values(value1, value2, ..., valuen);
-- 方法2
insert into 表名(col1, col2, ..., coln) values(value1, value2, ..., valuen);

注意:若不指定字段名列表,值列表与插入的表中的列一一对 应【个数对应,类型对应】;若指定字段名列表,值列表与列举出的列保持一致。插入的记录不能违反约束。

插入多条数据:

insert into 表名 values(valuelist1_val1, valuelist1_val2), (valuelist2_val1, valuelist2_val2);

2. 修改操作

update 表名 set 字段名1=value1, 字段名2=value2 [where 条件];

注意:[]括起来的部分可以指定也可不指定。若不指定,则更新全部;指定则只更新符合条件的数据。

3. 删除操作

DELETE FROM 表名 [WHERE 条件];

注意:删除同上,若不指定则删除所有行记录;指定则只删除指定行数据。


问题实现

1. 添加测试数据

use myschool;

-- 添加测试数据
-- 1.grade表
select * from grade; -- 查看表中数据
desc grade; -- 查看表结构
insert into grade values(2, '二年级'), (3, '三年级');
-- 2.student表
select * from student;
desc student;
insert into student values('s1002', '123456', '张三', '男', 1, '18791112222', '西安市', '2000-01-02', '[email protected]'), 
	('s1003', '123456', '李四', '女', 2, '13511112222', '西安市', '2000-01-02', '[email protected]'),
	('s1004', '123456', '王麻子', '男', 2, '18912342222', '西安市', '2000-01-02', '[email protected]');
	
select * from subjects;
desc subjects;
insert into subjects values(2, 'JavaWeb后端开发', 50, 1);
insert into subjects values(3, '计算机网络', 50, 2);

select * from result;
desc result;
insert into result values(2, 's1002', 1, 65, '2022-10-20'),
	(3, 's1001', 2, 90, '2022-10-21'),
	(4, 's1002', 2, 80, '2022-10-21'),
	(5, 's1003', 3, 92, '2022-10-22'),
	(6, 's1004', 3, 0, '2022-10-22');

各个表测试数据如下

grade表:

MySQL增删改查语句练习(grade表,student表,subjects表,result表)_第1张图片

student表:

subjects表:

MySQL增删改查语句练习(grade表,student表,subjects表,result表)_第2张图片

result表:

MySQL增删改查语句练习(grade表,student表,subjects表,result表)_第3张图片

2. 根据题目要求完成crud操作

1. 将地址是西安市的更新为西安科技二路

update student set Address='西安科技二路' where Address='西安市';

MySQL增删改查语句练习(grade表,student表,subjects表,result表)_第4张图片

2. 将S1001的email修改为空的字符串

update student set Email='' where StudentNo='s1001';

MySQL增删改查语句练习(grade表,student表,subjects表,result表)_第5张图片

3. 将第二门课的名字更新为 java基础,课时为60 ,班级编号是2

update subjects set SubjectName='java基础', ClassHour=60, GradeId=2 where SubjectId=2;

MySQL增删改查语句练习(grade表,student表,subjects表,result表)_第6张图片

4. 将S1001,课程编号为 2 的成绩提高5分

update result set StudentResult=StudentResult+5 where StudentNo='s1001' and SubjectId=2;

MySQL增删改查语句练习(grade表,student表,subjects表,result表)_第7张图片

5. 将 S1004,课程编号为3 的成绩更新为60,考试时间更新为 2015-10-10

update result set StudentResult=60, ExamDate='2015-10-10' where StudentNo='s1004' and SubjectId=3;

MySQL增删改查语句练习(grade表,student表,subjects表,result表)_第8张图片

6. 经核实 S1004 课程编号为2 的缺考

这里测试数据我们少考虑了这一条,我们先插入一条数据。

insert into result values(7, 's1004', 2, 0, '2022-10-20');
update result set StudentResult=null where StudentNo='s1004' and SubjectId=2;

MySQL增删改查语句练习(grade表,student表,subjects表,result表)_第9张图片

7. 将计算机网络课程删除掉

这里因为要删除的数据是一个父表 Subjects 的一行记录,其还有子表 Result。直接删除会报如下错误:Cannot delete or update a parent row

所以应该先删除子表中关于计算机网络课程的记录,才能删除父表中记录。

delete from result where SubjectId=(SELECT SubjectId FROM subjects WHERE SubjectName='计算机网络');
delete from subjects where SubjectName='计算机网络';

MySQL增删改查语句练习(grade表,student表,subjects表,result表)_第10张图片

你可能感兴趣的:(MySQL,mysql,数据库)