主要练习WHERE子句的匹配运算符、区间运算符的用法:
查询语文成绩在80-90分之间且数学成绩大于85分的男生
查询姓"李"且出生日期在2006年1月1日之后的学生
查询英语成绩70-85分或计算机成绩90分以上的丛台区学生
查询名字中包含"雨"字且不是特长生的女生
查询总成绩(语文+数学+英语)在250分以上且每科都不低于70分的学生
查询2005年下半年出生且家乡在"区"结尾的学生
查询数学成绩不在60-80分之间,但计算机成绩在85分以上的学生
查询邯山区或复兴区,且至少有一门科目超过95分的学生
查询名字第二个字是"雨"或"宇",且是特长生的学生
查询语文成绩大于数学成绩,且英语成绩在80-90分之间的学生
查询不是丛台区,且所有科目都及格(≥60分)的学生
查询有任意两门科目成绩相差超过20分的学生
查询平均分在80分以上,且没有科目低于65分的学生
查询特长生中,数学或英语任意一科超过90分的女生
查询来自丛台区或邯山区,且出生在2006年的学生
查询所有科目成绩都在75-95分之间的学生(成绩较稳定)
查询名字以"张"或"王"开头,且至少有三门科目超过85分的男生
查询最高分科目超过95分,且最低分科目不低于70分的学生
查询2005年9月后出生,且语文数学双科均超过80分的学生
查询非特长生中,家乡包含"台"或"山"字,且总成绩排名前50%的学生
查询姓"张"的学生
查询名字中包含"雨"字的学生
查询姓"李"且名字为两个字的学生
查询丛台区或邯山区的女生,且语文成绩大于80分
查询2006年出生且有特长的学生
查询复兴区的学生,且计算机成绩在85分到95分之间,没有特长
查询计算机成绩不在60分到80分之间的学生
答案
查询语文成绩在80-90分之间且数学成绩大于85分的男生
SELECT * FROM students
WHERE s_chinese BETWEEN 80 AND 90
AND s_math > 85
AND s_gender = '男';
查询姓"李"且出生日期在2006年1月1日之后的学生
SELECT * FROM students
WHERE s_name LIKE '李%'
AND s_birthdate > '2006-01-01';
查询英语成绩70-85分或计算机成绩90分以上的丛台区学生
SELECT * FROM students
WHERE (s_english BETWEEN 70 AND 85 OR s_computer > 90)
AND s_hometown = '丛台区';
查询名字中包含"雨"字且不是特长生的女生
SELECT * FROM students
WHERE s_name LIKE '%雨%'
AND s_specialty = '否'
AND s_gender = '女';
查询总成绩(语文+数学+英语)在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;
查询2005年下半年出生且家乡在"区"结尾的学生
SELECT * FROM students
WHERE s_birthdate BETWEEN '2005-07-01' AND '2005-12-31'
AND s_hometown LIKE '%区';
查询数学成绩不在60-80分之间,但计算机成绩在85分以上的学生
SELECT * FROM students
WHERE s_math NOT BETWEEN 60 AND 80
AND s_computer > 85;
查询邯山区或复兴区,且至少有一门科目超过95分的学生
SELECT * FROM students
WHERE s_hometown IN ('邯山区', '复兴区')
AND (s_chinese > 95 OR s_math > 95 OR s_english > 95 OR s_computer > 95);
查询名字第二个字是"雨"或"宇",且是特长生的学生
SELECT * FROM students
WHERE (s_name LIKE '_雨%' OR s_name LIKE '_宇%')
AND s_specialty = '是';
查询语文成绩大于数学成绩,且英语成绩在80-90分之间的学生
SELECT * FROM students
WHERE s_chinese > s_math
AND s_english BETWEEN 80 AND 90;
查询不是丛台区,且所有科目都及格(≥60分)的学生
SELECT * FROM students
WHERE s_hometown != '丛台区'
AND s_chinese >= 60
AND s_math >= 60
AND s_english >= 60
AND s_computer >= 60;
查询有任意两门科目成绩相差超过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;
查询平均分在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;
查询特长生中,数学或英语任意一科超过90分的女生
SELECT * FROM students
WHERE s_specialty = '是'
AND s_gender = '女'
AND (s_math > 90 OR s_english > 90);
查询来自丛台区或邯山区,且出生在2006年的学生
SELECT * FROM students
WHERE s_hometown IN ('丛台区', '邯山区')
AND s_birthdate BETWEEN '2006-01-01' AND '2006-12-31';
查询所有科目成绩都在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;
查询名字以"张"或"王"开头,且至少有三门科目超过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);
查询最高分科目超过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;
查询2005年9月后出生,且语文数学双科均超过80分的学生
SELECT * FROM students
WHERE s_birthdate > '2005-09-01'
AND s_chinese > 80
AND s_math > 80;
查询非特长生中,家乡包含"台"或"山"字,且总成绩排名前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);
查询姓"张"的学生
SELECT * FROM students WHERE s_name LIKE '张%';
查询名字中包含"雨"字的学生
SELECT * FROM students WHERE s_name LIKE '%雨%';
查询姓"李"且名字为两个字的学生
SELECT * FROM students WHERE s_name LIKE '李_';
查询丛台区或邯山区的女生,且语文成绩大于80分
SELECT * FROM students
WHERE (s_hometown = '丛台区' OR s_hometown = '邯山区')
AND s_gender = '女'
AND s_chinese > 80;
查询2006年出生且有特长的学生
SELECT * FROM students
WHERE s_birthdate BETWEEN '2006-01-01' AND '2006-12-31'
AND s_specialty = '是';
查询复兴区的学生,且计算机成绩在85分到95分之间,没有特长
SELECT * FROM students
WHERE s_hometown = '复兴区'
AND s_computer BETWEEN 85 AND 95
AND s_specialty = '否';
查询计算机成绩不在60分到80分之间的学生
SELECT * FROM students WHERE s_computer NOT BETWEEN 60 AND 80;