第五次作业

  1. 创建数据库并使用
    • CREATE DATABASE mydbl1_stu;:创建名为mydbl1_stu的数据库。
    • USE mydbl1_stu;:切换到刚创建的数据库,后续操作都在此数据库环境下进行。
  2. 创建 student 表
    • CREATE TABLE student(id INT(10) NOT NULL UNIQUE PRIMARY KEY, name VARCHAR(20) NOT NULL, sex VARCHAR(4), birth YEAR, department VARCHAR(20), address VARCHAR(50));
  3. 创建 score 表
    • CREATE TABLE score(id INT(10) NOT NULL UNIQUE PRIMARY KEY AUTO_INCREMENT, stu_id INT(10) NOT NULL, c_name VARCHAR(20), grade INT(10));

问题查询操作:

  1. 分别查询 student 表和 score 表的所有记录
    • SELECT * FROM student;:查询student表的所有行和列。
    • SELECT * FROM score;:查询score表的所有行和列。
  2. 查询 student 表的第 2 条到 5 条记录
    • SELECT * FROM student LIMIT 1,4;
    • LIMIT子句用于限制查询结果的数量。第一个参数1表示从第 2 条记录开始(索引从 0 开始),第二个参数4表示查询 4 条记录。
  3. 从 student 表中查询计算机系和英语系的学生的信息
    • SELECT * FROM student WHERE department IN ("计算机系","英语系");
    • WHERE子句用于筛选满足条件的行。IN关键字用于判断列值是否在指定的集合中。
  4. 从 student 表中查询年龄小于 22 岁的学生信息
    • SELECT * FROM student WHERE 2024 - birth < 22;
    • 通过计算当前年份与出生年份的差值来判断年龄是否小于 22 岁。
  5. 从 student 表中查询每个院系有多少人
    • SELECT department, COUNT(*) AS count FROM student GROUP BY department;
    • GROUP BY子句用于按照department列进行分组,COUNT(*)函数用于计算每组的行数,AS count用于给计算结果列命名。
  6. 从 score 表中查询每个科目的最高分
    • SELECT c_name, MAX(grade) AS max_grade FROM score GROUP BY c_name;
    • 类似地,按照c_name列分组,使用MAX函数获取每组中的最高分。
  7. 查询李广昌的考试科目 (c_name) 和考试成绩 (grade)
    • SELECT c_name, grade FROM score JOIN student ON score.stu_id = student.id WHERE student.name = "李广昌";
    • 通过JOIN操作将score表和student表连接起来,根据stu_idid的对应关系进行关联,然后在WHERE子句中筛选出name为 "李广昌" 的记录。
  8. 用连接的方式查询所有学生的信息和考试信息
    • SELECT student.*, score.c_name, score.grade FROM student JOIN score ON student.id = score.stu_id;
    • 连接student表和score表,获取所有学生的详细信息以及对应的考试科目和成绩。
  9. 计算每个学生的总成绩
    • SELECT student.id, student.name, SUM(score.grade) AS total_grade FROM student JOIN score ON student.id = score.stu_id GROUP BY student.id, student.name;
    • 连接两表后,按照学生的idname分组,使用SUM函数计算每个学生的总成绩。
  10. 计算每个考试科目的平均成绩
  • SELECT c_name, AVG(grade) AS average_grade FROM score GROUP BY c_name;
  • 11查询计算机成绩低于 95 的学生信息
  • SELECT student.* FROM student JOIN score ON student.id = score.stu_id WHERE score.c_name = "计算机" AND score.grade < 95;
  • 12将计算机考试成绩按从高到低进行排序
  • SELECT * FROM score WHERE c_name = "计算机" ORDER BY grade DESC
  • 13从 student 表和 score 表中查询出学生的学号,然后合并查询结果
  • SELECT id FROM student UNION SELECT stu_id FROM score;
  • UNION操作符用于合并两个查询结果集,去除重复行。
  • 14查询姓张或者姓王的同学的姓名、院系和考试科目及成绩
  • SELECT student.name, student.department, score.c_name, score.grade FROM student JOIN score ON student.id = score.stu_id WHERE student.name LIKE "张%" OR student.name LIKE "王%";
  • 通过JOIN操作连接两表,在WHERE子句中使用LIKE操作符筛选出姓名以 "张" 或 "王" 开头的记录。
  • 15查询都是湖南的学生的姓名、年龄、院系和考试科目及成绩
  • SELECT student.name, 2024 - student.birth AS age, student.department, score.c_name, score.grade FROM student JOIN score ON student.id = score.stu_id WHERE student.address LIKE "湖南省%";
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

白熊code

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值