SELECT [DISTINCT] {*|列名[别名],....}
FROM 表名
[WHERE 过滤条件]
[ORDER BY 列1 ,列2....]
查询操作的分类
-投影操作
制定查询结果中能显示哪些列
-选择操作
制定哪些行出现在结果中
-排序操作
制定查询的结果以什么样的顺序显示
列别名
使用别名 ,在多个同样的列名的时候,使用别名更容易区分.
在列名或表明用AS关键字来提供别名,
SELECT 列A AS A, 列B AS B, 列C AS C FROM 表明 AS T
当使用表的别名是,可以再同一SQL语句中的列名使用别名,例如
SELCLET T.列A AS A ,T.列B AS B,T.列C AS C FROM 表名AS T
返回限定行数查询
select 列1 列2 from t_student LIMIT 开始序号,返回的行数
如果用1个参数 表示从第一行开始返回指定行数的结果
如果用2个参数,则表示从指定行开始。
注意:limit序号从0开始,limit只能用于mysql中。
运算符 含义
= 是否相等
!= 是否不等
^= 是否不等
<> 是否不等
> 大于
>= 大于或等于
< 小于
<= 小于或等于
AND
OR
between and
age in(18,20,22)
age not in(18,20,22)
like
通配符
_通配符 任何单个字符
%通配符 包含零个或多个任意字符
处理空值数据
不能用=null 应该用 is null 或者is not null
使用任何比较运算符来匹配null得到的都是false比如null=null返回false.
select * from 表 order by 列a,列b,列c
可以对字母数字时间等排序.
ASC 表示升序排序 DESC 表示降序排序 order by默认升序排序
查询SQL的执行顺序
第一步 执行FROM
第二步 where 条件过滤
第三步 执行select投影列
第四步 执行order by排序
聚合函数和分组
聚合函数的分类:
COUNT 统计行数量
SUM:获取单个列的合计值
AVG:计算某个列的平均值
MAX:计算列的最大值
MIN:计算列的最小值
select count (计数规范)FROM 表名
* 计算所有选择的行 包括null值
all列 计算指定列的所有非空值行,如果仅仅是指定列 而不带ALL或者DISTINC,这是默认操作
DISTINCT 计算指定列的所有唯一非空值行.去掉重复的记 录
统计某列合计值
select sum() from 表明;
select sum(all 年龄) from 表明
select sum(age)as '总年龄' ,MAX(age)as '最大年龄' ,MIN(age) as '最小年龄'
,AVG(age) as '平均年龄' from person;
SQL提供了一种技术,可以将表中的行分组,然后在每个组上应用聚合函数.
select 列A ,聚合函数(聚合函数规范)FROM 表明
where 过滤条件
group by 列A...
分组group by 子句是在where条件过滤后的结果中完成,如果没有where条件则直接对FROM表中的数据进行分组.
GROUP BY会将制定列中有相同数据的分为一组.
select 班级, count(班级) from 学生表 GROUP BY 班级;
having子句
having子句在group by 子句后执行
标准结构
select 列A,聚合函数(聚合函数规范)FROM 表名
where 过滤条件
group by 列A
having 过滤条件
select 班级,avg(年龄) from 学生表
group by 班级
having avg(年龄)>20
二者都是过滤条件,where运行在分组前,因此不能执行任何聚合函数.Having是运行在分组后,只能用作聚合函数的过滤.
SQL执行顺序
一 FROM
二 WHERE条件过滤
三 GROUP BY 分组
四 SELECT 投影列
五 HAVING条件过滤
六 ORDER BY 排序
FROM 表名
[WHERE 过滤条件]
[ORDER BY 列1 ,列2....]
查询操作的分类
-投影操作
制定查询结果中能显示哪些列
-选择操作
制定哪些行出现在结果中
-排序操作
制定查询的结果以什么样的顺序显示
列别名
使用别名 ,在多个同样的列名的时候,使用别名更容易区分.
在列名或表明用AS关键字来提供别名,
SELECT 列A AS A, 列B AS B, 列C AS C FROM 表明 AS T
当使用表的别名是,可以再同一SQL语句中的列名使用别名,例如
SELCLET T.列A AS A ,T.列B AS B,T.列C AS C FROM 表名AS T
返回限定行数查询
select 列1 列2 from t_student LIMIT 开始序号,返回的行数
如果用1个参数 表示从第一行开始返回指定行数的结果
如果用2个参数,则表示从指定行开始。
注意:limit序号从0开始,limit只能用于mysql中。
运算符 含义
= 是否相等
!= 是否不等
^= 是否不等
<> 是否不等
> 大于
>= 大于或等于
< 小于
<= 小于或等于
AND
OR
between and
age in(18,20,22)
age not in(18,20,22)
like
通配符
_通配符 任何单个字符
%通配符 包含零个或多个任意字符
处理空值数据
不能用=null 应该用 is null 或者is not null
使用任何比较运算符来匹配null得到的都是false比如null=null返回false.
select * from 表 order by 列a,列b,列c
可以对字母数字时间等排序.
ASC 表示升序排序 DESC 表示降序排序 order by默认升序排序
查询SQL的执行顺序
第一步 执行FROM
第二步 where 条件过滤
第三步 执行select投影列
第四步 执行order by排序
聚合函数和分组
聚合函数的分类:
COUNT 统计行数量
SUM:获取单个列的合计值
AVG:计算某个列的平均值
MAX:计算列的最大值
MIN:计算列的最小值
select count (计数规范)FROM 表名
* 计算所有选择的行 包括null值
all列 计算指定列的所有非空值行,如果仅仅是指定列 而不带ALL或者DISTINC,这是默认操作
DISTINCT 计算指定列的所有唯一非空值行.去掉重复的记 录
统计某列合计值
select sum() from 表明;
select sum(all 年龄) from 表明
select sum(age)as '总年龄' ,MAX(age)as '最大年龄' ,MIN(age) as '最小年龄'
,AVG(age) as '平均年龄' from person;
SQL提供了一种技术,可以将表中的行分组,然后在每个组上应用聚合函数.
select 列A ,聚合函数(聚合函数规范)FROM 表明
where 过滤条件
group by 列A...
分组group by 子句是在where条件过滤后的结果中完成,如果没有where条件则直接对FROM表中的数据进行分组.
GROUP BY会将制定列中有相同数据的分为一组.
select 班级, count(班级) from 学生表 GROUP BY 班级;
having子句
having子句在group by 子句后执行
标准结构
select 列A,聚合函数(聚合函数规范)FROM 表名
where 过滤条件
group by 列A
having 过滤条件
select 班级,avg(年龄) from 学生表
group by 班级
having avg(年龄)>20
二者都是过滤条件,where运行在分组前,因此不能执行任何聚合函数.Having是运行在分组后,只能用作聚合函数的过滤.
SQL执行顺序
一 FROM
二 WHERE条件过滤
三 GROUP BY 分组
四 SELECT 投影列
五 HAVING条件过滤
六 ORDER BY 排序