目录
问题描述
问题分析
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博客https://blog.csdn.net/weixin_51612062/article/details/127850829?spm=1001.2014.3001.5501
根据题目我们需要对数据表进行插入、修改、删除操作,那我我们来看看这些操作的语法。
插入单条数据:
-- 方法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);
update 表名 set 字段名1=value1, 字段名2=value2 [where 条件];
注意:[]括起来的部分可以指定也可不指定。若不指定,则更新全部;指定则只更新符合条件的数据。
DELETE FROM 表名 [WHERE 条件];
注意:删除同上,若不指定则删除所有行记录;指定则只删除指定行数据。
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表:
student表:
subjects表:
result表:
update student set Address='西安科技二路' where Address='西安市';
update student set Email='' where StudentNo='s1001';
update subjects set SubjectName='java基础', ClassHour=60, GradeId=2 where SubjectId=2;
update result set StudentResult=StudentResult+5 where StudentNo='s1001' and SubjectId=2;
update result set StudentResult=60, ExamDate='2015-10-10' where StudentNo='s1004' and SubjectId=3;
这里测试数据我们少考虑了这一条,我们先插入一条数据。
insert into result values(7, 's1004', 2, 0, '2022-10-20');
update result set StudentResult=null where StudentNo='s1004' and SubjectId=2;
这里因为要删除的数据是一个父表 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='计算机网络';