一、筛选条件:
(一)、比较运算符:
= ( 注意!不是 ==
!= 或 <>
>
>=
<
<=
IS NULL
8、IS NOT NULL
(二)、逻辑运算符:
AND 或 OR 非 NOT
(三)、其他操作:
1、排序(order by):
SELECT columns FROM tb_name ORDER BY col [asc/desc] ;
-- 正序 asc(默认) -- 倒序 desc
2、限制(limit):
SELECT columns FROM tb_name LIMIT start, count ;
-- LIMIT count;
-- LIMIT start,count;
3、去重(distinct):
SELECT DISTINCT filer_name FROM tb_name;
4、模糊查询 like "%"
任意多个字符: %
任意一个字符: _
5、查询范围:
(1)、连续范围:BETWEEN a AND b
a <= value <= b
(2)、间隔查询:IN
a in (10, 20, 30 [...])
二、聚合与分组(重难点):
(一)、常用聚合函数:
-- 统计个数
COUNT(column)
-- 最大值
MAX(column)
-- 最小值
MIN(column)
-- 求和
SUM(column)
-- 平均值
AVG(column)
-- 列出字段全部值
GROUP_CONCAT(column)
(二)、分组查询(group by):
SELECT group_column, aggregations
FROM tb_name
GROUP BY group_column;
-- 在分组的情况下,只能够出现分组字段和聚合字段
-- 其他的字段没有意义,会报错!
(三)、聚合筛选(having):
SELECT group_column, aggregations
FROM tb_name
GROUP BY group_column
HAVING conditions;
-- 加having条件表达式,可以对输出的结果做出限制
假如说:
一个查询语句中同时包含了别名(as),聚合函数, where, having
那么他们的执行顺序是
1、先是执行:where
2、然后执行:聚合函数和别名
3、最后执行:having
三、子查询(了解):
(一)、概念:将一个查询的结果留下来用于下一次查询 ( select 中嵌套 select )。
(二)、要求:1、嵌套在查询内部;
2、必须始终出现在圆括号内。
-- 求出学生的平均年龄
select avg(age) from student;
-- 查找出大于平均年龄的数据
select * from student where age > 20;
--#将求出的平均年龄的SQL语句用于查找大于平均年龄的语句中
select * from student where age > (select avg(age) from student);
四、连接查询(了解):
(一)、内连接(inner join)
1、无条件内连接:
无条件内连接,又名交叉连接/笛卡尔连接
第一张表种的每一项会和另一张表的每一项依次组合
select * from student [inner] join grades;
2、有条件内连接:
在无条件内链接的基础上,加上一个on子句
当连接的时候,筛选出那些有实际意义的记录来进行组合
select * from student inner join grades on number = student_number;
(二)、外连接({left | right} join)
1、左外连接: (以左表为基准)
两张表做连接的时候,在连接条件不匹配的时候
留下左表中的数据,而右表中的数据以NULL填充
select * from student left join grades on number=student_number;
2、右外连接: (以右表为基准)
对两张表做连接的时候,在连接条件不匹配的时候
留下右表中的数据,而左表中的数据以NULL填充
select * from grades right join student on number=student_number;
写在最后:
1、本人由于在学校刚学,博客也是边学习,边更新,写的不好的地方,希望各位大佬指正;
2、有时候学业繁忙,更新会比较慢。