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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群版 2核4GB 100GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用版 2核4GB 50GB
简介: 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; 
相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2天前
|
SQL 运维 关系型数据库
|
2天前
|
存储 关系型数据库 MySQL
|
2天前
|
存储 关系型数据库 MySQL
|
2天前
|
消息中间件 关系型数据库 Serverless
函数计算产品使用问题之如何通过vpc来连接rds数据库
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
2天前
|
关系型数据库 MySQL 分布式数据库
PolarDB产品使用问题之要验证MySQL迁移后的数据库数据与迁移前的数据一致性,该怎么办
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
PolarDB产品使用问题之要验证MySQL迁移后的数据库数据与迁移前的数据一致性,该怎么办
|
1天前
|
关系型数据库 MySQL
mysql查询结果时间戳转成日期格式——date、DATE_FORMAT和FROM_UNIXTIME的使用
mysql查询结果时间戳转成日期格式——date、DATE_FORMAT和FROM_UNIXTIME的使用
4 0
|
1天前
|
关系型数据库 MySQL 数据库
深入OceanBase分布式数据库:MySQL 模式下的 SQL 基本操作
深入OceanBase分布式数据库:MySQL 模式下的 SQL 基本操作
|
1天前
|
存储 关系型数据库 MySQL
深入探索MySQL:成本模型解析与查询性能优化
深入探索MySQL:成本模型解析与查询性能优化
|
1天前
|
存储 缓存 关系型数据库
心得经验总结:理解MySQL——并行数据库与分区(Partion)
心得经验总结:理解MySQL——并行数据库与分区(Partion)
|
1天前
|
关系型数据库 MySQL
mysql关联查询
mysql关联查询
8 0

热门文章

最新文章