MySQL的基本操作CRUD综合案例

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: MySQL的基本操作CRUD综合案例

1.建表


创建一个学生表,插入数据


id 学号


name 姓名


chinese 语文成绩


english 英语成绩


math 数学成绩


create table student(
id int,
name varchar(20),
chinese int,
english int,
math int
);
insert into student(id,name,chinese,english,math) values(1, '范真建',80,85,90);
insert into student(id,name,chinese,english,math) values(2,'罗住哪',90,95,95);
insert into student(id,name,chinese,english,math) values(3,'杜子腾',80,96,96);
insert into student(id,name,chinese,english,math) values(4,'范啥冰',81,97,85);
insert into student(id,name,chinese,english,math) values(5,'申晶冰',85,84,90);
insert into student(id,name,chinese,english,math) values(6,'奥丽海',92,85,87);
insert into student(id,name,chinese,english,math) values(7,'郭的辉',75,81,80);
insert into student(id,name,chinese,english,math) values(8,'拎壶尿',77,80,79);
insert into student(id,name,chinese,english,math) values(9,'任他行',95,85,85);
insert into student(id,name,chinese,english,math) values(10,'史真香',94,85,84);
基础SQL


2.SQL操作语句


查询表中所有学生的信息。
  select * from student;
查询表中所有学生的姓名和对应的英语成绩。
  select name,english from student;
过滤表中重复数据。
  select english from student;
  select DISTINCT english from student;
  select DISTINCT english,name from student;
  select english+chinese+math from student;
  select english+chinese+math as 总分 from student;
  select name,english+chinese+math as 总分 from student;
在所有学生英语分数上加10分特长分。
  select name,english+10 from student;
统计每个学生的总分。
  select english+chinese+math from student;
使用别名表示学生分数
  select name,english+chinese+math as 总分 from student;
  select name,english+chinese+math 总分 from student;
查询姓名为何东的学生成绩
  select * from student where name='何东';
查询英语成绩大于90分的同学
  select * from student where english>90;
查询总分大于250分的所有同学
  select * from student where english+chinese+math>250;
查询英语分数在 85-95之间的同学。
  select * from student where english>=85 and english<=95;
  select * from student where english between 85 and 95;
查询数学分数为84,90,91的同学。
  select * from student where math=84 or math=90 or math=91;
  select * from student where math in(84,90,91);
查询所有姓何的学生成绩。
  select * from student where name like '何%';
查询数学分>85,语文分>90的同学。
  select * from student where math>85 and chinese>90;
对数学成绩排序后输出。
  select * from student order by math;
对总分排序后输出,然后再按从高到低的顺序输出
  select * from student order by math+chinese+english desc;
对姓何的学生成绩排序输出
  select * from student where name like '何%' order by math+chinese+english desc;
  select name, math+chinese+english from student where name like '何%' order by math+chinese+english desc;
统计一个班级共有多少学生?
  select count(*) from student;
统计数学成绩大于90的学生有多少个?
  select count(*) from student where math>90;
统计总分大于250的人数有多少?
  select count(*) from student where math+chinese+english>250;
统计一个班级数学总成绩?
  select sum(math) from student;
统计一个班级语文、英语、数学各科的总成绩
  select sum(math), sum(chinese), sum(english) from student;
统计一个班级语文、英语、数学的成绩总和
  select sum(math+chinese+english)from student;
  select sum(math)+sum(chinese)+sum(english) from student;
求一个班级数学平均分(avg是MySQL的函数)
  select avg(math) from student;
求一个班级总分平均分
  select avg(math+chinese+english)from student;
  select avg(math)+avg(chinese)+avg(english) from student;
求班级最高分和最低分
  select max(math+chinese+english),min(math+chinese+english) from student;


3.分组数据操作


为学生表,增加一个班级列,练习分组查询。    
  alter table student add column class_id int;    
  注意语法:Oracle中不能有“column”关键字,MySQL中有没有“column”都可以执行。
更新表:
  update student set class_id=1 where id<=5;
  update student set class_id=2 where id>5;
  (update student set class_id=2 where id between 6 and 10;)
查出各个班的总分,最高分。
求各个班级 英语的平均分:
  select classid, avg(english) 
  from student
  group by class_id
如根据组函数的语法要求,将select后增加name列,而不加至group by 之后:
  select name, classid, avg(english)
  from student
  group by classid;
会发现MySQL检查不出错误。相比Oracle数据库,MySQL分组检查不严格。
  select sum(math+chinese+english),max(math+chinese+english) from student group by class_id;
查询出班级总分大于1300分的班级ID
  select class_id from student group by class_id having sum(math+chinese+english)>1300;
  select class_id from student where sum(math+chinese+english)>1300 group by class_id ;
对于组函数的应用与Oracle类似,可以应用于Having中,但不能用于where子句中。
相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2月前
|
分布式计算 关系型数据库 MySQL
大数据-88 Spark 集群 案例学习 Spark Scala 案例 SuperWordCount 计算结果数据写入MySQL
大数据-88 Spark 集群 案例学习 Spark Scala 案例 SuperWordCount 计算结果数据写入MySQL
56 3
|
2月前
|
SQL 关系型数据库 MySQL
案例剖析:MySQL唯一索引并发插入导致死锁!
案例剖析:MySQL唯一索引并发插入导致死锁!
214 0
案例剖析:MySQL唯一索引并发插入导致死锁!
|
2月前
|
SQL 关系型数据库 MySQL
案例剖析,MySQL共享锁引发的死锁问题!
案例剖析,MySQL共享锁引发的死锁问题!
|
2月前
|
消息中间件 关系型数据库 MySQL
大数据-117 - Flink DataStream Sink 案例:写出到MySQL、写出到Kafka
大数据-117 - Flink DataStream Sink 案例:写出到MySQL、写出到Kafka
207 0
|
3天前
|
SQL 存储 关系型数据库
MySQL/SqlServer跨服务器增删改查(CRUD)的一种方法
通过上述方法,MySQL和SQL Server均能够实现跨服务器的增删改查操作。MySQL通过联邦存储引擎提供了直接的跨服务器表访问,而SQL Server通过链接服务器和分布式查询实现了灵活的跨服务器数据操作。这些技术为分布式数据库管理提供了强大的支持,能够满足复杂的数据操作需求。
35 12
|
5天前
|
存储 关系型数据库 MySQL
10个案例告诉你mysql不使用子查询的原因
大家好,我是V哥。上周与朋友讨论数据库子查询问题,深受启发。为此,我整理了10个案例,详细说明如何通过优化子查询提升MySQL性能。主要问题包括性能瓶颈、索引失效、查询优化器复杂度及数据传输开销等。解决方案涵盖使用EXISTS、JOIN、IN操作符、窗口函数、临时表及索引优化等。希望通过这些案例,帮助大家在实际开发中选择更高效的查询方式,提升系统性能。关注V哥,一起探讨技术,欢迎点赞支持!
|
19天前
|
关系型数据库 MySQL 数据库
数据库数据恢复—MYSQL数据库文件损坏的数据恢复案例
mysql数据库文件ibdata1、MYI、MYD损坏。 故障表现:1、数据库无法进行查询等操作;2、使用mysqlcheck和myisamchk无法修复数据库。
|
2月前
|
关系型数据库 MySQL 数据库
一个 MySQL 数据库死锁的案例和解决方案
本文介绍了一个 MySQL 数据库死锁的案例和解决方案。
177 3
|
2月前
|
存储 关系型数据库 MySQL
基于案例分析 MySQL 权限认证中的具体优先原则
【10月更文挑战第26天】本文通过具体案例分析了MySQL权限认证中的优先原则,包括全局权限、数据库级别权限和表级别权限的设置与优先级。全局权限优先于数据库级别权限,后者又优先于表级别权限。在权限冲突时,更严格的权限将被优先执行,确保数据库的安全性与资源合理分配。
|
3月前
|
关系型数据库 MySQL 数据库
MySQL 表的CRUD与复合查询
【9月更文挑战第26天】本文介绍了数据库操作中的 CRUD(创建、读取、更新、删除)基本操作及复合查询。创建操作使用 `INSERT INTO` 语句插入数据,支持单条和批量插入;读取操作使用 `SELECT` 语句查询数据,可进行基本查询、条件查询和排序查询;更新操作使用 `UPDATE` 语句修改数据;删除操作使用 `DELETE FROM` 语句删除数据。此外,还介绍了复合查询,包括连接查询(如内连接、左连接)和子查询,以及聚合函数与分组查询,并提供了示例代码。