数据查询语言DQL:
完整格式:
select colName1[,colName2,...] //获取记录的某些字段数据
from tableName //记录来源(表/视图)
[where <条件表达式>] //获取满足该条件的记录
[group by<列名1>[having<条件表达式>]] //分组[分组条件]
[order by<列名2>[ASC|DESC]]; //升序排列/降序排列
执行顺序:
先执行from子句。
再执行where子句
然后group by子句
再次having子句
之后select子句
最后order by子句
select * from tableName;
通配符*:如果是在select字句中,代替的是所有的字段。
基本查询语句: 至少包含两个子句: select 子句和from 子句
可以添加where 条件子句:起到查询关键词的作用
多条件;集合;范围;模糊
where条件子句:
条件:关系运算符:
,>=,<,<=,=,!=,<>。
(1)null在条件中,应该使用is 或者is not
(2)范围查询:针对于某一个字段来说。
-
1:可以使用>,>=和<,<=来进行范围限制
2: 还可以使用[not] between and来限制。
-
格式:
colName [not] between val1 and val2;
注意: between val1 and val2 相当于闭区间[val1,val2]
(3)集合作为条件写法:同一个字段有多个值的情况下使用。
使用:in|not in
格式: colName [not] in (元素1,元素2,….);
注意:in 相当于 ornot in 相当于 and
集合的其他用法:
注意:mysql数据库中,集合元素的来源
只能基于一张表的查询。不能写定值。
all与any
格式:>all(子查询获取元素) :大于集合中最大的元素。 <all(子查询获取元素) :小于集合中最小的元素。 >any(子查询获取元素) :大于集合中最小的元素。 <any(子查询获取元素) :小于集合中最大的元素。
(4)模糊查询:like关键字
格式: colName like value。
通常与通配符%连用
%:0或0个以上的字符
_:匹配一个字符。
reg: 查询员工姓名第二字母是s的信息
ename like '_s%'
order by排序:
当在查询表中数据时,记录比较多,可能需要进行排序,此时,可以使用order by子句 ,位于查询语句最后面
[order by <列名1>[ASC|DESC]] [, <列名1>[ASC|DESC]]];
//升序排列/降序排列
默认为asc升序
去重distinct关键字:
有时候我们需要对重复的记录进行去重的操作
关键字:
distinct
写在select后面
group by分组查询与分组函数
有的时候,我们要查询表中的记录总数
格式:
group by<列名1>[,<列名2>,…] //分组,按优先级从左(最高)到右(最低)
-
用法:
-
聚合函数:
count(filed):统计个数
sum():求和
avg():求均值
max():求最大值
min():求最小值
PS:聚合函数都不对空值进行处理
函数:ifnull(filed,value)
若字段filed的数据为null,输出value
having子句:
在分组查询时,有的时候可能需要再次
使用条件进行过滤,这个时候不能where子句,
应该使用having子句。
having子句后可以使用聚合函数。
位置:位于group by子句后