一个完整的DQL(数据查询语言)语句的总结:
select
...
from
...
where
...
group by
...
having
...
order by
...
第一:以上的关键字顺序不能变化,严格遵守
第二:执行顺序:
1.from 从某张表中检索数据
2.where 经过某条件进行过滤
3.group by 然后分组
4.having 分组之后不满意再过滤
5.select 查询出来
6.order by 排序输出
1. 基本查询
从表中查询某些列的值,这是最基本的查询语句。
查询所有字段
SELECT * from 表名;
查询指定字段
SELECT 字段1, 字段2, 字段3 ...from 表名;
2. Where条件查询
作用:按照一定的条件查询数据
SELECT 字段1, 字段2, 字段3 ...from 表名 WHERE 条件表达式;
运算符:
运算符 描述
= 等于
<> 不等于
> 大于
< 小于
>= 大于等于
<= 小于等于
BETWEEN 在某个范围内
LIKE 搜索某种模式
3. 带BETWEEN AND的范围查询
SELECT 字段1, 字段2, 字段3 ...from 表名 WHERE 字段 [NOT] BETWEEN
取值1 AND 取值2;
4. 带IN关键字查询
作用:IN 操作符允许我们在 WHERE 子句中规定多个值。表示:在哪些值当中。
SELECT 字段1, 字段2, 字段3 ...from 表名 WHERE 字段 [NOT] IN
(元素1, 元素2, 元素3);
6. 带LIKE的模糊查询
作用:模糊查询。LIKE关键字与通配符一起使用
SELECT 字段1, 字段2, 字段3 ...from 表名 WHERE 字段 [NOT] LIKE
'字符串';
通配符 描述
% 替代一个或多个字符
_ 仅替代一个字符
[charlist] 字符列中的任何单一字符
[^charlist]或者[!charlist] 不在字符列中的任何单一字符
7. 空值查询
SELECT 字段1, 字段2, 字段3... FROM 表名 WHERE 字段 IS [NOT] NULL;
8. 带AND的多条件查询
作用:AND 在 WHERE 子语句中把两个或多个条件结合起来。表示和的意思,多个条件都成立。
SELECT 字段1, 字段2, 字段3... FROM 表名 WHERE 条件表达式 AND
条件表达式 AND 条件表达式;
9. 带OR的多条件查询
作用:OR可在 WHERE 子语句中把两个或多个条件结合起来。或关系,表示多个条件,只有一个符合即可。
SELECT 字段1, 字段2, 字段3... FROM 表名 WHERE 条件表达式
OR 条件表达式;
10、AS(Alias)
作用:可以为列名称和表名称指定别名(Alias)
作用:我们可以将查询的列,或者表指定需要的名字,如表名太长,用其简称,
在连表查询中经常用到。
SELECT 字段1 AS 别名, 字段2 AS 别名 FROM 表名;
11. DISTINCT 去重查询
作用: 查询时忽略重复值。
SLECT DISTINCT 字段名 FROM 表名;
12、ORDER BY(排序)
功能:对需要查询后的结果集进行排序
标识 含义 说明
ASC 升序 默认
DESC 倒序
13. GROUP BY分组查询
GROUP BY 属性名[HAVING 条件表达式][WITH ROLLUP]
1.单独使用;
2.与GROUP_CONCAT()函数一起使用;
3.与聚合函数一起使用;
1. COUNT()函数
COUNT()函数用来统计记录的条数,与GROUP BY关键字一起使用;`
SELECT COUNT(*) FROM 表名;
SELECT COUNT(*) AS total FROM 表名;
SELECT 字段1,COUNT(*) FROM 表名 GROUP BY(字段1);
2. SUM()函数
SUM()函数是求和函数,与GROUP BY关键字一起使用;`
SELECT 字段1,SUM(字段2)FROM 表名 WhERE 字段1='...';
SELECT 字段1,SUM(字段2) FROM 表名 GROUP BY 字段1;
3. AVG()函数
AVG()函数用来求平均值的函数,与GROUP BY关键字一起使用;
SELECT 字段1, AVG(字段2) FROM 表名 WHERE 字段1='...';
SELECT 字段1, AVG(字段2) FROM 表名 GROUP BY 字段1;
4. MAX()函数
MAX()函数用来求最大值的函数,与GROUP BY关键字一起使用;
SELECT 字段1, 字段2, MAX(字段3) FROM 表名 WHERE 字段1='...';
SELECT 字段1, 字段2, MAX(字段3) FROM 表名 GROUP BY 字段1;
5. MIN()函数
MIN()函数用来求最小值的函数,与GROUP BY关键字一起使用;
SELECT 字段1, 字段2, MIN(字段3) FROM 表名 WHERE 字段1='...';
SELECT 字段1, 字段2, MIN(字段3) FROM 表名 GROUP BY 字段1;
4.与HAVING一起使用(限制蜀西湖的结果);
在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与合计函数一起使用。
语法:
SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name
HAVING aggregate_function(column_name) operator value
1)查询平均成绩大等于于60的学生ID及平均成绩
SELECT StudentID,AVG(Score) FROM SC GROUP BY StudentID
HAVING AVG(Score)>=60;
2)还是用HAVING的SQL语句中,可以有普通的WHERE条件
查询平均成绩大于等于60,且学生ID等于1的学生的ID及平均成绩。
SELECT StudentID,AVG(Score) FROM SC WHERE StudentID='1'
GROUP BY StudentID HAVING AVG(Score)>=60;
3)查询总成绩在600分以上(包括600)的学生ID
SELECT StudentID FROM SC GROUP BY StudentID HAVING
SUM(Score)>=600;
5.与WITH ROLLUP一起使用(最后加入一个总和行);
13. LIMIT分页查询
SELECT 字段1, 字段2.....FROM 表名 LIMIT 初始位置,记录数;