我发誓:每一道题目都不超过如下知识点,你不需要去其他地方搜索零散的知识点。
如果超过了,就让凤姐和乔碧萝殿下蹂躏我一百次直至摇摇欲坠。
SQL跟初中数学一样,记忆概念、用法是没卵用的。
能灵活应用才是王道。
====================================================================================================
任务:找出所有教授数学且具有高级职称(senior)的教师的信息,包括教师的姓名、科目、班级代码和职称,并按教师姓名升序排列。
====================================================================================================
单张表条件过滤知识点
1. 多条件筛选
- 使用
AND
逻辑运算符- 示例:
SELECT * FROM students WHERE gender = 'm' AND birth_date BETWEEN '2000-01-01' AND '2000-12-31';
查找2000年出生的男生。
- 示例:
- 使用
OR
逻辑运算符- 示例:
SELECT * FROM students WHERE gender = 'm' OR gender = 'f';
查找所有男生和女生。
- 示例:
- 使用
IN
子句- 示例:
SELECT * FROM students WHERE class_code IN ('C101', 'C102', 'C103');
查找在 C101, C102, C103 班级的学生。
- 示例:
2. 范围筛选
- 使用
BETWEEN
关键字- 示例:
SELECT * FROM students WHERE birth_date BETWEEN '2000-01-01' AND '2000-12-31';
查找2000年出生的学生。
- 示例:
- 使用
>=
和<=
进行范围筛选- 示例:
SELECT * FROM students WHERE score >= 80 AND score <= 90;
查找成绩在80到90之间的学生。
- 示例:
3. 模式匹配
- 使用
LIKE
和通配符(%
和_
)- 示例:
SELECT * FROM students WHERE name LIKE 'A%';
查找名字以 'A' 开头的学生。 - 示例:
SELECT * FROM students WHERE name LIKE '_e%';
查找名字第二个字符为 'e' 的学生。
- 示例:
- 使用
REGEXP
或RLIKE
进行正则表达式匹配- 示例:
SELECT * FROM students WHERE name REGEXP '^A';
查找名字以 'A' 开头的学生。
- 示例:
4. 空值处理
- 使用
IS NULL
- 示例:
SELECT * FROM teachers WHERE qualification IS NULL;
查找没有职称的教师。
- 示例:
- 使用
IS NOT NULL
- 示例:
SELECT * FROM teachers WHERE qualification IS NOT NULL;
查找有职称的教师。
- 示例:
5. 字符串处理
- 使用
UPPER
- 示例:
SELECT UPPER(name) FROM students;
查找所有学生的姓名并转换为大写。
- 示例:
- 使用
LOWER
- 示例:
SELECT LOWER(name) FROM students;
查找所有学生的姓名并转换为小写。
- 示例:
- 使用
LENGTH
- 示例:
SELECT LENGTH(name) FROM students;
查找所有学生的姓名长度。
- 示例:
- 使用
SUBSTRING
- 示例:
SELECT SUBSTRING(name, 1, 3) FROM students;
查找所有学生的姓名前三个字符。
- 示例:
- 使用
REPLACE
- 示例:
SELECT REPLACE(name, 'A', 'B') FROM students;
查找所有学生的姓名并将 'A' 替换为 'B'。
- 示例:
6. 日期处理
- 使用
YEAR
- 示例:
SELECT YEAR(birth_date) FROM students;
查找所有学生的出生年份。
- 示例:
- 使用
MONTH
- 示例:
SELECT MONTH(birth_date) FROM students;
查找所有学生的出生月份。
- 示例:
- 使用
DAY
- 示例:
SELECT DAY(birth_date) FROM students;
查找所有学生的出生日。
- 示例:
- 使用
DATE_FORMAT
- 示例:
SELECT DATE_FORMAT(birth_date, '%Y-%m-%d') FROM students;
查找所有学生的出生日期并格式化为 'YYYY-MM-DD'。
- 示例:
7. 数值比较
- 使用
>
- 示例:
SELECT * FROM students WHERE score > 80;
查找成绩大于80的学生。
- 示例:
- 使用
<
- 示例:
SELECT * FROM students WHERE score < 80;
查找成绩小于80的学生。
- 示例:
- 使用
>=
- 示例:
SELECT * FROM students WHERE score >= 80;
查找成绩大于等于80的学生。
- 示例:
- 使用
<=
- 示例:
SELECT * FROM students WHERE score <= 80;
查找成绩小于等于80的学生。
- 示例:
students,学生表
student_id | name | class_code | grade_code | birth_date | residence | gender |
---|---|---|---|---|---|---|
100611 | 姜建华 | C219 | S3 | 2009-01-15 | 城镇 | m |
102890 | 韩辉 | C223 | S3 | 2009-10-26 | 农村 | m |
105684 | 李丽丽 | C219 | S3 | 2009-03-28 | 城镇 | m |
110591 | 李华 | C223 | S1 | 2008-05-31 | 农村 | m |
110611 | 王桂珍 | C218 | S3 | 2008-06-04 | 城镇 | m |
scores,成绩表
分数可能为Null
student_id | subject | score | exam_date |
---|---|---|---|
358575 | 生物 | 29 | 2024-06-30 |
735011 | 语文 | 37 | 2024-03-30 |
597305 | 历史 | 67 | 2024-03-30 |
921856 | 数学 | 76 | 2024-04-27 |
455713 | 化学 | 77 | 2024-06-30 |
teachers
,教师表
如第一行,赵娇娇教学C218、C219、C217三个班级的语文,是C217班的班主任
teacher_id | name | subject | class_code | head_teacher | degree | graduate_date(毕业日期) | enter_date(入校日期) | gender | qualification(职称) | fir_degr(第一学历) | mst_degr(研究生学历) |
---|---|---|---|---|---|---|---|---|---|---|---|
t001 | 赵娇娇 | 语文 | C218C219C217 | C217 | master | 2010-06-30 | 2010-07-30 | f | Senior | 北京大学 | 北京大学 |
t002 | 任伊乐 | 语文 | C220C221C222C223C224 | C220 | master | 2010-06-30 | 2010-07-30 | f | Senior | 北京大学 | 清华大学 |
t003 | 李敏 | 数学 | C218C219C217 | C218 | master | 1994-06-30 | 1994-07-30 | f | Senior | 北京大学 | 复旦大学 |
t004 | 吕敏 | 数学 | C220C221C222 | C221 | phd | 1995-06-30 | 1995-07-30 | f | Senior | 北京大学 | 清华大学 |
t005 | 陈佳蔬 | 数学 | C223C224 | C223 | master | 2010-06-30 | 2010-07-30 | f | null | 北京大学 | 北京大学 |
university,大学信息表
name | is_985 | times_rnk(泰晤士2024全球排名) |
---|---|---|
King's College London | 0 | 34 |
National University of Singapore,NUS | 0 | 24 |
Singapore Polytechnic | 0 | null |
上海交通大学 | 1 | 113 |
北京大学 | 1 | 16 |
name | subject | class_code | qualification |
---|---|---|---|
吕敏 | 数学 | C220C221C222 | Senior |
李敏 | 数学 | C218C219C217 | Senior |
 点击下方空白区域即可查看参考答案
MySQL 8.0