哈喽~~大家好,今天与大家分享的是基础SQL语句!!
表
表名:course
表名:score
表名:student
通过将以上三个表连接在一起,可以提取出自己有用的信息。(以下用到了嵌套语句)
找出学生的成绩比课程0002的全部成绩中任意一个高?
SELECT 学号,成绩 ##查找学号,成绩
from score ##score表
WHERE 成绩 >ANY(
SELECT `成绩`
from score
where 课程号='0002');
找出学生的成绩比课程0002的全部成绩里的都高?
SELECT a.学号,AVG(b.成绩)AS 平均成绩
FROM student as a
LEFT JOIN score as b
on a.`学号`=b.`学号`
GROUP BY a.`学号`
HAVING avg(`成绩`)>'85'
下面用到case表达式,在score表格后增加一列,列名为“是否及格”,若成绩大于等于60,为及格,若成绩小于60,为不及格。
SELECT 学号,课程号,`成绩`,
(CASE WHEN 成绩>=60 THEN '及格'
WHEN 成绩<60 THEN '不及格'
ELSE NULL
END
)AS 是否及格
FROM score;
在score表格后增加一列,列名为“不及格人数”,根据课程号进行分组,若成绩大于等于60,为及格,写为1,若成绩小于60,为不及格,写为0,利用求和公式,分别得出不及格人数。
SELECT 课程号,SUM(CASE WHEN 成绩 >=60 THEN 1 ELSE 0 END)AS 及格人数,SUM(CASE WHEN 成绩 <60 THEN 1 ELSE 0
END )AS 不及格人数
FROM score
GROUP BY 课程号;##按照课程号分组
通配符
%:可匹配恣意类型和长度的字符。
下划线_:匹配单个字符,它常用来约束表达式的字符长度。
方括号[]:指定一个字符、字符串。
如下:
SELECT *
FROM student
WHERE 姓名 LIKE '小%';##以“小”打头
SELECT *
FROM student
WHERE 姓名 LIKE '%小';
SELECT *
FROM student
WHERE 姓名 LIKE '%小%';
SELECT *
FROM student
WHERE 姓名 LIKE '%王__';