MySQL SELECT查询实战:练习题精选,提升你的数据库查询技能

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介: MySQL SELECT查询实战:练习题精选,提升你的数据库查询技能

案例一:

准备工作

创建一个名叫stu的表
id 主键 自增 非空
name 默认空
age 默认0
height 浮点型
gender 枚举 默认保密
isdelete 默认0
create table stu (
  id tinyint primary key auto_increment,
    name varchar(5) default "",
    age tinyint default 0,
    height decimal(5,2),
    gender enum('男','女','中性','保密') default '保密',
    isdelete tinyint default 0
)
添加数据
insert into stu values
(0,"小明",18,180.00,"女",0),
(0,"小月月",18,180.00,"女",1),
(0,"彭于晏",29,185.00,"男",0),
(0,"刘德华",59,175.00,"男",1),
(0,"黄蓉",38,160.00,"女",0),
(0,"刘亦菲",25,166.00,"女",0),
(0,"程坤",27,181.00,"男",1),
(0,"金星",33,162.00,"中性",0),
(0,"静香",12,180.00,"女",1),
(0,"郭靖",12,170.00,"男",0),
(0,"周杰",34,176.00,"男",0);

几种常见查询(一):

1).等值查询:
    查询id为1的学生的所有字段信息
    select * from stu where id = 1;
2).条件比较查询:
    查询id大于3的所有学生的所有字段信息
    select * from stu where id > 3;
3).比较运算与逻辑运算查询:
    查询id大于5并且身高大于170的所有学生的信息
    select * from stu where id > 5 and height > 170;

几种常见查询(二):

4).between...and的使用
  
    查询身高在170都180之间的所有学生信息
    select * from stu where height between 170 and 180;
5).成员运算:
  
    查询id值为1, 3, 4的所有学生信息
    select * from stu where id in (1,3,4);
6).空与非空判断:
    查询年龄数据为空的所有学生信息
    select * from stu where age is null;
    查询姓名数据不为空的所有学生信息
    select * from stu where name is not null;

案例二:

创建表student

id name Score Address age gender
1 邱路泽 100 河南 17
2 宋子怡 69 河南 19
3 陈兴 90 山东 21
4 汪星竹 88 江西 26
5 大悦 73 山东 26
6 陈一末 93 山东 21 保密

案例二:题目
1. 创建一个表,表名为student
2. 成功添加数据
3. 将表名修改为stu
4. 增加字段isdelete 单选 0 1 默认为0
5. 给id字段增加主键和自增约束
6. 给name字段增加唯一约束
7. 给age字段增加非空约束
8. 修改gender字段名为sex,并增加默认约束为男
9. 分别使用模糊查询和正则查询,查询名字是三个字的学生的信息
10. 查询成绩几个的学生的信息,并要求按照成绩由高到低排序
11. 将表中的数据以年龄从高到底排序,如果年龄一致则按照成绩由低到高排序
12. 查询姓陈的学生的信息
13. 查询河南省的成绩及格的学生的信息
14. 统计性别为男的学生的数量
15. 统计所有男生的平均成绩、平均年龄
16. 统计所有女生的总成绩、总年龄
17. 使用三种方式实现获取id为5、6、7的学生信息
18. 查询不同性别对应的人数及人名
19. 查询人数大于等于2人的地区名称及该地区的学生人数
20. 查询平均分数大于等于80的地区名称和平均分数
21. 查询各地区的平均年龄和最大年龄
22. 查询平均年龄超过20岁的性别及平均年龄

答案

 1. 创建一个表,表名为student  
 create table student (
  id tinyint,
    name varchar(5),
    score tinyint,
    address varchar(5),
    age tinyint,
    gender enum('男','女','保密') 
);
create table student (
  id tinyint primary key auto_increment,
    name varchar(5) not null,
    score tinyint not null,
    address varchar(5) not null,
    age tinyint not null,
    gender enum('男','女','保密') 
);
2. 成功添加数据
insert into student value
(1,'邱路泽',100,'河南',17,'男'),
(2,'宋子怡',69,'河南',19,'女'),
(3,'陈兴',90,'山东',21,'男'),
(4,'汪星竹',88,'江西',26,'女'),
(5,'大悦',73,'山东',26,'男'),
(6,'陈一末',93,'山东',21,'保密');
3. 将表名修改为stu  
alter table student rename stu;
4. 增加字段isdelete 单选 0 1 默认为0  
alter table stu add isdelete enum('0','1') default '0';
5. 给id字段增加主键和自增约束
alter table stu modify id tinyint primary key auto_increment;
6.给name字段增加唯一约束
alter table stu modify name varchar(5) unique;
7. 给age字段增加非空约束
alter table stu modify age tinyint not null;
8. 修改gender字段名为sex,并增加默认约束为男
alter table stu change gender sex enum('男','女','保密') default '男';
9. 分别使用模糊查询和正则查询,查询名字是三个字的学生的信息 
select * from stu where name like '___';
select * from stu where name rlike '^...$';
10. 查询成绩几个的学生的信息,并要求按照成绩由高到低排序
select * from stu order by score desc;
11. 将表中的数据以年龄从高到底排序,如果年龄一致则按照成绩由低到高排序 
select * from stu order by age desc,score;
12. 查询姓陈的学生的信息                                     
select * from stu where name like '陈%';
select * from stu where name rlike '^陈.';
13. 查询河南省的成绩及格的学生的信息                         
select * from stu where address = '河南' and score > 60;
14. 统计性别为男的学生的数量                                 
select count(*) from stu where gender = '男';
15. 统计所有男生的平均成绩、平均年龄  
select avg(score),avg(age) from stu where gender = '男';
16. 统计所有女生的总成绩、总年龄                             
select sum(score),sum(age) from stu where gender = '女';
17. 使用三种方式实现获取id为5、6、7的学生信息                
select * from stu where id = 5 or id = 6 or id = 7;
select * from stu where id in (5,6,7);
select * from stu where id between 5 and 7;
18.查询不同性别对应的人数及人名
select gender,count(*),group_concat(name) from stu group by gender;
19. 查询人数大于等于2人的地区名称及该地区的学生人数
select address,count(*) from stu group by address having count(*) >= 2;
20.查询平均分数大于等于80的地区名称和平均分数
select address,avg(score) from stu group by address having avg(score) >= 80;
21.查询各地区的平均年龄和最大年龄
select address,avg(age),max(age) from stu group by address;
22.查询平均年龄超过20岁的性别及平均年龄
select gender,avg(age) from stu group by gender having avg(age) > 20; 
相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
13天前
|
存储 SQL 关系型数据库
MySQL的安装&数据库的简单操作
本文介绍了数据库的基本概念及MySQL的安装配置。首先解释了数据库、数据库管理系统和SQL的概念,接着详细描述了MySQL的安装步骤及其全局配置文件my.ini的调整方法。文章还介绍了如何启动MySQL服务,包括配置环境变量和使用命令行的方法。最后,详细说明了数据库的各种操作,如创建、选择和删除数据库的SQL语句,并提供了实际操作示例。
57 13
MySQL的安装&数据库的简单操作
|
3天前
|
存储 关系型数据库 MySQL
MySQL索引失效及避免策略:优化查询性能的关键
MySQL索引失效及避免策略:优化查询性能的关键
15 3
|
5天前
|
存储 关系型数据库 MySQL
查询服务器CPU、内存、磁盘、网络IO、队列、数据库占用空间等等信息
查询服务器CPU、内存、磁盘、网络IO、队列、数据库占用空间等等信息
45 5
|
3天前
|
Oracle NoSQL 关系型数据库
主流数据库对比:MySQL、PostgreSQL、Oracle和Redis的优缺点分析
主流数据库对比:MySQL、PostgreSQL、Oracle和Redis的优缺点分析
12 2
|
5天前
|
关系型数据库 MySQL 数据库
MySQL 表的CRUD与复合查询
【9月更文挑战第26天】本文介绍了数据库操作中的 CRUD(创建、读取、更新、删除)基本操作及复合查询。创建操作使用 `INSERT INTO` 语句插入数据,支持单条和批量插入;读取操作使用 `SELECT` 语句查询数据,可进行基本查询、条件查询和排序查询;更新操作使用 `UPDATE` 语句修改数据;删除操作使用 `DELETE FROM` 语句删除数据。此外,还介绍了复合查询,包括连接查询(如内连接、左连接)和子查询,以及聚合函数与分组查询,并提供了示例代码。
|
8天前
|
关系型数据库 MySQL 数据库
Python MySQL查询返回字典类型数据的方法
通过使用 `mysql-connector-python`库并选择 `MySQLCursorDict`作为游标类型,您可以轻松地将MySQL查询结果以字典类型返回。这种方式提高了代码的可读性,使得数据操作更加直观和方便。上述步骤和示例代码展示了如何实现这一功能,希望对您的项目开发有所帮助。
26 4
|
8天前
|
SQL 关系型数据库 MySQL
创建包含MySQL和SQLServer数据库所有字段类型的表的方法
创建一个既包含MySQL又包含SQL Server所有字段类型的表是一个复杂的任务,需要仔细地比较和转换数据类型。通过上述方法,可以在两个数据库系统之间建立起相互兼容的数据结构,为数据迁移和同步提供便利。这一过程不仅要考虑数据类型的直接对应,还要注意特定数据类型在不同系统中的表现差异,确保数据的一致性和完整性。
22 4
|
11天前
|
NoSQL 关系型数据库 MySQL
当Redis与MySQL数据一致性校验中Redis数据量小于MySQL时的全量查询处理方法
保持Redis和MySQL之间的数据一致性是一个需要细致规划和持续维护的过程。通过全量数据同步、建立增量更新机制,以及定期执行数据一致性校验,可以有效地管理和维护两者之间的数据一致性。此外,利用现代化的数据同步工具可以进一步提高效率和可靠性。
33 6
|
8天前
|
关系型数据库 MySQL
mysql查询速度慢怎么解决?
mysql查询速度慢怎么解决?
30 2
|
8天前
|
关系型数据库 MySQL
mysql & clinkhouse之查询 行拼接
mysql & clinkhouse之查询 行拼接
mysql & clinkhouse之查询 行拼接
下一篇
无影云桌面