MySQL增删改查语句练习(grade表,student表,subjects表,result表)
创始人
2024-04-08 12:26:34

目录

问题描述

问题分析

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', 'zs@163.com'), ('s1003', '123456', '李四', '女', 2, '13511112222', '西安市', '2000-01-02', 'ls@163.com'),('s1004', '123456', '王麻子', '男', 2, '18912342222', '西安市', '2000-01-02', 'wmz@163.com');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表:

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

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

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

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

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

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

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

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

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

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

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

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;

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='计算机网络';

相关内容

热门资讯

东南亚(513730)已连续8... 数据显示,2月11日,东南亚(513730)获净申购132.58万元,位居当日跨境ETF净流入排名4...
人形机器人公司Apptroni... 格隆汇2月12日|当地时间2月11日,人形机器人公司Apptronik宣布完成5.2亿美元的A-X轮...
高温合金板块走强 东方钽业涨幅...   02月12日消息,截止10:15,高温合金板块走强,东方钽业等个股涨幅居前。  声明:市场有风险...
大成纳斯达克100ETF(QD... 数据显示,2月11日,大成纳斯达克100ETF(QDII)(159513)获净申购151.55万元,...
富国恒生港股通创新药及医疗保健... 数据显示,2月11日,富国恒生港股通创新药及医疗保健ETF(159506)遭净赎回145.87万元,...