-- 查询
-- SELECT tableName.col from tableName
-- SELECT tableName.col1,tableName.col2,col3....
-- FROM table1,table2,TABLE3....
-- WHERE 条件,不是查询所有的时候,
-- 1、确定表,数据和条件在哪些表中,表就需要参与
-- 2、写条件,不是查询所有人的才需要加条件
-- 3、展示,展示的内容写在select后面
-- 查看班级所有人的语文和数学考试成绩
SELECT name,chinese,math
FROM exam
-- 查看语文成绩和数学成绩都大于70分的那些人的所有信息
-- SELECT exam.name,chinese,math,english
-- * 所有的列 和上面这一行是一样的效果
SELECT e.name,e.english
FROM exam as e
WHERE chinese>=70 AND math >= 70
-- 查询
-- select col1,col2.... 给用户看的都在这里
-- from tableName 表名
-- where 条件
-- 查看班级所有人的姓名和对应的语文成绩
SELECT exam.name,exam.chinese
FROM exam
-- 查询所有人的姓名和对应的考试成绩
-- * 表示的所有的列
SELECT *
FROM exam
-- 1: 在所有学生各门分数上加10分附加分。
-- null 是不能进行运算
-- expr1可能出现null的列名,expr2出现了怎么办
-- IFNULL(expr1,expr2)
-- 起别名, as
SELECT name as 姓名,IFNULL(chinese,0)+10 as 语文,math+10 数学,english+10
FROM exam
-- 2: 查询每个学生的各科成绩以及统计他们的总分。
-- 查询语句的结果可能并不是在数据库中直接存在的
-- ORDER BY 列名 asc/desc asc升序, desc降序
SELECT *,IFNULL(chinese,0)+math+english as tatol
FROM exam
ORDER BY chinese,math DESC
-- 3: 使用别名表示学生分数。
-- 1: 查询姓名为关羽的学生成绩
SELECT *
from exam
WHERE name='关羽'
-- 2: 查询英语成绩大于90分的同学
SELECT name,english
FROM exam
WHERE english > 90
-- 3: 查询总分大于200分的所有同学姓名和对应的各科成绩以及总分
SELECT *, (IFNULL(chinese,0)+IFNULL(math,0)+IFNULL(english,0)) AS '总分'
FROM exam
WHERE (IFNULL(chinese,0)+IFNULL(math,0)+IFNULL(english,0)) > 200
-- 1:相等= 不等 <> 或者 !=
-- 2: between ...and... 在两者之间取值 between 70 and 80 等价于 >=70 <=80
-- 注意:前面那个数要比后面那个数要小
-- 查询语文成绩在90-100之间的姓名和成绩
SELECT name,chinese
FROM exam
WHERE chinese BETWEEN 90 and 100
-- WHERE chinese >= 90 and chinese <= 100
-- 3: in(值,值,值) 在指定值中任取一个 col in(70,80,90) 值可以是70、80或者90
-- 查询英语成绩为70,80,90的人的信息
-- 分别查询语文成绩在60,70,80,90的那些人的信息
-- 删除id为 6,8,5的学生的考试成绩信息
SELECT *
FROM exam
WHERE chinese in(60,70,80,90)
-- WHERE chinese = 60 OR chinese = 70 or chinese = 80 or chinese = 90
DELETE from exam WHERE id in(5,6,8)
-- 4:like '模糊查询,表达式有两个占位符 % 任意字符串 _ 任意单个字符 张_ 张%
-- 例如: name like '张%' 所有姓张学员 ,'%张%'; 含有张字
-- name like '张_' 所有姓张名字为两个字学员
-- name like '%张%' 名字中含有张的,小兵张嘎
-- 查询姓张的考试成绩
SELECT *
FROM exam
WHERE name like '%张%'
-- 5:is null 判断该列值为空
-- 查看有多少人没有参加考试的(有1门没有参加的就算缺考)
SELECT *
FROM exam
WHERE chinese is null or math is null or english is null
-- Is not null 判断不是为null
-- 6:and 逻辑与 or 逻辑或 not 逻辑非
-- 查询英文成绩分数大于70 并且数学成绩大于70