Administrator
发布于 2025-09-23 / 3 阅读
0
0

MySQL练习题:SELECT匹配和区间运算符

主要练习WHERE子句的匹配运算符、区间运算符的用法:

  1. 查询语文成绩在80-90分之间且数学成绩大于85分的男生

  2. 查询姓"李"且出生日期在2006年1月1日之后的学生

  3. 查询英语成绩70-85分或计算机成绩90分以上的丛台区学生

  4. 查询名字中包含"雨"字且不是特长生的女生

  5. 查询总成绩(语文+数学+英语)在250分以上且每科都不低于70分的学生

  6. 查询2005年下半年出生且家乡在"区"结尾的学生

  7. 查询数学成绩不在60-80分之间,但计算机成绩在85分以上的学生

  8. 查询邯山区或复兴区,且至少有一门科目超过95分的学生

  9. 查询名字第二个字是"雨"或"宇",且是特长生的学生

  10. 查询语文成绩大于数学成绩,且英语成绩在80-90分之间的学生

  11. 查询不是丛台区,且所有科目都及格(≥60分)的学生

  12. 查询有任意两门科目成绩相差超过20分的学生

  13. 查询平均分在80分以上,且没有科目低于65分的学生

  14. 查询特长生中,数学或英语任意一科超过90分的女生

  15. 查询来自丛台区或邯山区,且出生在2006年的学生

  16. 查询所有科目成绩都在75-95分之间的学生(成绩较稳定)

  17. 查询名字以"张"或"王"开头,且至少有三门科目超过85分的男生

  18. 查询最高分科目超过95分,且最低分科目不低于70分的学生

  19. 查询2005年9月后出生,且语文数学双科均超过80分的学生

  20. 查询非特长生中,家乡包含"台"或"山"字,且总成绩排名前50%的学生

  21. 查询姓"张"的学生

  22. 查询名字中包含"雨"字的学生

  23. 查询姓"李"且名字为两个字的学生

  24. 查询丛台区或邯山区的女生,且语文成绩大于80分

  25. 查询2006年出生且有特长的学生

  26. 查询复兴区的学生,且计算机成绩在85分到95分之间,没有特长

  27. 查询计算机成绩不在60分到80分之间的学生

答案

  1. 查询语文成绩在80-90分之间且数学成绩大于85分的男生

SELECT * FROM students 
WHERE s_chinese BETWEEN 80 AND 90 
  AND s_math > 85 
  AND s_gender = '男';
  1. 查询姓"李"且出生日期在2006年1月1日之后的学生

​
SELECT * FROM students 
WHERE s_name LIKE '李%' 
  AND s_birthdate > '2006-01-01';
  1. 查询英语成绩70-85分或计算机成绩90分以上的丛台区学生

SELECT * FROM students 
WHERE (s_english BETWEEN 70 AND 85 OR s_computer > 90)
  AND s_hometown = '丛台区';
  1. 查询名字中包含"雨"字且不是特长生的女生

SELECT * FROM students 
WHERE s_name LIKE '%雨%' 
  AND s_specialty = '否' 
  AND s_gender = '女';
  1. 查询总成绩(语文+数学+英语)在250分以上且每科都不低于70分的学生

SELECT * FROM students 
WHERE (s_chinese + s_math + s_english) > 250 
  AND s_chinese >= 70 
  AND s_math >= 70 
  AND s_english >= 70;
  1. 查询2005年下半年出生且家乡在"区"结尾的学生

SELECT * FROM students 
WHERE s_birthdate BETWEEN '2005-07-01' AND '2005-12-31'
  AND s_hometown LIKE '%区';
  1. 查询数学成绩不在60-80分之间,但计算机成绩在85分以上的学生

SELECT * FROM students 
WHERE s_math NOT BETWEEN 60 AND 80 
  AND s_computer > 85;
  1. 查询邯山区或复兴区,且至少有一门科目超过95分的学生

SELECT * FROM students 
WHERE s_hometown IN ('邯山区', '复兴区')
  AND (s_chinese > 95 OR s_math > 95 OR s_english > 95 OR s_computer > 95);
  1. 查询名字第二个字是"雨"或"宇",且是特长生的学生

SELECT * FROM students 
WHERE (s_name LIKE '_雨%' OR s_name LIKE '_宇%')
  AND s_specialty = '是';
  1. 查询语文成绩大于数学成绩,且英语成绩在80-90分之间的学生

SELECT * FROM students 
WHERE s_chinese > s_math 
  AND s_english BETWEEN 80 AND 90;
  1. 查询不是丛台区,且所有科目都及格(≥60分)的学生

SELECT * FROM students 
WHERE s_hometown != '丛台区'
  AND s_chinese >= 60 
  AND s_math >= 60 
  AND s_english >= 60 
  AND s_computer >= 60;
  1. 查询有任意两门科目成绩相差超过20分的学生

SELECT * FROM students 
WHERE ABS(s_chinese - s_math) > 20 
   OR ABS(s_chinese - s_english) > 20 
   OR ABS(s_chinese - s_computer) > 20 
   OR ABS(s_math - s_english) > 20 
   OR ABS(s_math - s_computer) > 20 
   OR ABS(s_english - s_computer) > 20;
  1. 查询平均分在80分以上,且没有科目低于65分的学生

SELECT * FROM students 
WHERE (s_chinese + s_math + s_english + s_computer)/4 > 80
  AND s_chinese >= 65 
  AND s_math >= 65 
  AND s_english >= 65 
  AND s_computer >= 65;
  1. 查询特长生中,数学或英语任意一科超过90分的女生

SELECT * FROM students 
WHERE s_specialty = '是' 
  AND s_gender = '女'
  AND (s_math > 90 OR s_english > 90);
  1. 查询来自丛台区或邯山区,且出生在2006年的学生

SELECT * FROM students 
WHERE s_hometown IN ('丛台区', '邯山区')
  AND s_birthdate BETWEEN '2006-01-01' AND '2006-12-31';
  1. 查询所有科目成绩都在75-95分之间的学生(成绩较稳定)

SELECT * FROM students 
WHERE s_chinese BETWEEN 75 AND 95 
  AND s_math BETWEEN 75 AND 95 
  AND s_english BETWEEN 75 AND 95 
  AND s_computer BETWEEN 75 AND 95;
  1. 查询名字以"张"或"王"开头,且至少有三门科目超过85分的男生

SELECT * FROM students 
WHERE (s_name LIKE '张%' OR s_name LIKE '王%')
  AND s_gender = '男'
  AND ((s_chinese > 85) + (s_math > 85) + (s_english > 85) + (s_computer > 85) >= 3);
  1. 查询最高分科目超过95分,且最低分科目不低于70分的学生

SELECT * FROM students 
WHERE GREATEST(s_chinese, s_math, s_english, s_computer) > 95
  AND LEAST(s_chinese, s_math, s_english, s_computer) >= 70;
  1. 查询2005年9月后出生,且语文数学双科均超过80分的学生

SELECT * FROM students 
WHERE s_birthdate > '2005-09-01'
  AND s_chinese > 80 
  AND s_math > 80;
  1. 查询非特长生中,家乡包含"台"或"山"字,且总成绩排名前50%的学生

SELECT s.*, (s_chinese + s_math + s_english + s_computer) as total_score
FROM students s
WHERE s_specialty = '否'
  AND (s_hometown LIKE '%台%' OR s_hometown LIKE '%山%')
  AND (s_chinese + s_math + s_english + s_computer) > 
      (SELECT AVG(s_chinese + s_math + s_english + s_computer) FROM students);
  1. 查询姓"张"的学生

SELECT * FROM students WHERE s_name LIKE '张%';
  1. 查询名字中包含"雨"字的学生

SELECT * FROM students WHERE s_name LIKE '%雨%';
  1. 查询姓"李"且名字为两个字的学生

SELECT * FROM students WHERE s_name LIKE '李_';
  1. 查询丛台区或邯山区的女生,且语文成绩大于80分

SELECT * FROM students 
WHERE (s_hometown = '丛台区' OR s_hometown = '邯山区') 
AND s_gender = '女' 
AND s_chinese > 80;
  1. 查询2006年出生且有特长的学生

SELECT * FROM students 
WHERE s_birthdate BETWEEN '2006-01-01' AND '2006-12-31' 
AND s_specialty = '是';
  1. 查询复兴区的学生,且计算机成绩在85分到95分之间,没有特长

SELECT * FROM students 
WHERE s_hometown = '复兴区' 
AND s_computer BETWEEN 85 AND 95 
AND s_specialty = '否';
  1. 查询计算机成绩不在60分到80分之间的学生

SELECT * FROM students WHERE s_computer NOT BETWEEN 60 AND 80;


评论