当前位置 主页 > 技术大全 >

    Mysql练习,适合初学者巩固知识

    栏目:技术大全 时间:2025-09-22 14:26


    以下是一些 MySQL 练习题目,涵盖基础查询、条件筛选、聚合函数、联表查询等常用操作,适合初学者巩固知识。可以在本地或在线 MySQL 环境(如 SQL Fiddle)中实践。

    准备数据

    首先创建以下表并插入测试数据:
    sql
    -- 创建学生表
    CREATE TABLE students (
      id INT PRIMARY KEY AUTO_INCREMENT,
      name VARCHAR(50) NOT NULL,
      age INT,
      gender ENUM('男', '女'),
      class_id INT,
      score DECIMAL(5,2)  -- 成绩(满分100)
    );
    
    -- 创建班级表
    CREATE TABLE classes (
      id INT PRIMARY KEY AUTO_INCREMENT,
      class_name VARCHAR(50) NOT NULL
    );
    
    -- 插入班级数据
    INSERT INTO classes (class_name) VALUES 
    ('一年级一班'), 
    ('一年级二班'), 
    ('二年级一班');
    
    -- 插入学生数据
    INSERT INTO students (name, age, gender, class_id, score) VALUES
    ('张三', 8, '男', 1, 95.5),
    ('李四', 9, '女', 1, 88.0),
    ('王五', 8, '男', 2, 76.5),
    ('赵六', 9, '女', 2, 92.0),
    ('钱七', 10, '男', 3, 60.0),
    ('孙八', 9, '女', 3, 98.5),
    ('周九', 8, '男', 1, 59.5),
    ('吴十', 10, '女', 3, 85.0);
    
     

    练习题目

    基础查询

    1. 查询所有学生的姓名和年龄。
    2. 查询一年级一班(class_id=1)的所有学生信息。
    3. 查询年龄大于 8 岁的女生姓名和成绩。
    4. 查询成绩在 80 到 90 分之间的学生(包含 80 和 90)。

    条件与排序

    1. 查询所有男生的信息,并按年龄从大到小排序。
    2. 查询成绩不及格(<60)的学生姓名和班级 ID。
    3. 查询班级 ID 为 2 或 3 的学生,且年龄不等于 9 岁。

    聚合函数

    1. 计算所有学生的平均成绩。
    2. 统计每个班级的学生人数(显示班级 ID 和人数)。
    3. 找出每个班级的最高成绩(显示班级 ID 和最高成绩)。
    4. 统计女生的总人数和平均年龄。

    联表查询

    1. 查询学生姓名、班级名称和成绩(关联 students 和 classes 表)。
    2. 找出每个班级的名称和该班的平均成绩(按班级名称分组)。
    3. 查询一年级二班(class_name=' 一年级二班 ')中成绩大于 80 分的学生姓名。

    高级查询

    1. 查询成绩排名前三的学生姓名和成绩(不考虑并列情况)。
    2. 统计每个班级中及格(≥60)和不及格的学生人数(显示班级 ID、及格人数、不及格人数)。
    3. 查询与 “孙八” 同班的学生姓名(不包含孙八本人)。

    参考答案(部分)

    sql
    -- 1. 查询所有学生的姓名和年龄
    SELECT name, age FROM students;
    
    -- 5. 查询所有男生的信息,按年龄从大到小排序
    SELECT * FROM students WHERE gender = '男' ORDER BY age DESC;
    
    -- 9. 统计每个班级的学生人数
    SELECT class_id, COUNT(*) AS 人数 FROM students GROUP BY class_id;
    
    -- 12. 联表查询学生姓名、班级名称和成绩
    SELECT s.name, c.class_name, s.score 
    FROM students s
    JOIN classes c ON s.class_id = c.id;
    
     
    通过这些练习,可以熟悉 MySQL 的核心语法。如果需要全部答案或有疑问,可以进一步探讨!
1分钟搞定MySQL部署!Docker最强实操指南,含所有常用命令和配置
忘记MySQL密码怎么办?别慌!用这一招跳过验证,轻松重置管理员权限
MySQL自增主键用完怎么办?从原理到实战,全面破解开发中的高频难题
MySQL权限混乱?这几个命令让你彻底理清用户清单与权限归属
你的数据库安全吗?读懂MySQL这几种日志,关键时刻能「救你一命」
MySQL性能上不去?八成是这里没配好!手把手教你搞定my.cnf核心配置
修改MySQL字段长度别乱来!这3个核心要点和1个致命陷阱,新手必看
MySQL单表卡爆怎么办?从策略到实战,一文掌握「分表」救命技巧
你的MySQL数据库为什么总是又慢又卡?掌握这五大优化法则,查询速度快十倍!(上篇)
你的MySQL数据库为什么总是又慢又卡?掌握这五大优化法则,查询速度快十倍!(下篇)