MySQL—DQL语言(数据查询语言)
一、条件查询
(一)语法
select 查询列表
from 表名
where 筛选条件;
(二)筛选条件的分类
1、简单条件运算符
> < = != >= <= <=>安全等于
2、逻辑运算符
and or not
3、模糊查询
like //一般搭配通配符使用,可以判断字符型或数值型
//通配符:%任意多个字符;_任意单个字符
between and
in
is null|is not null//用于判断null值
二、排序查询
(一)语法
select 查询列表
from 表名
where 筛选条件
order by 排序列表 [asc|desc];//asc升序,desc降序
(二)特点
1、asc:升序,如果不写默认升序
2、排序列表支持单个字段、多个字段、函数、表达式、别名
3、order by的位置一般放在查询语句的最后(limit语句除外)
三、常见函数
(一)概述
功能:类似于Java中的方法
好处:提高重用性和隐藏实现细节
调用:select 函数名(实参列表)
(二)单行函数
1、字符函数
/*concat:连接
substr:截取子串
upper:变大写
lower:变小写
replace:替换
length:获取字节长度
trim:去前后空格
lpad:左填充
rpad:右填充
instr:获取子串第一次出现的索引
*/
2、数学函数
/*ceil:向上取整
floor:向下取整
round:四舍五入
mod:取模
truncate:截断
rand:获取随机数,返回0-1之间的小数
*/
3、日期函数
/*now:返回当前日期+时间
year:返回年
month:返回月
day:返回日
date_format:将日期转化为字符
curdate:返回当前日期
str_to_date:将字符转换为日期
curtime:返回当前时间
hour:小时
minute:分钟
second:秒
datediff:返回两个日期相差的天数
monthname:以英文形式返回月
*/
4、其他函数
/*version:当前数据库服务器的版本
database:当前打开的数据库
user:当前用户
password('字符'):返回该字符的密码形式
md5('字符'):返回该字符的md5加密形式
*/
5、流程控制函数
if(条件表达式,表达式1,表达式2):如果条件表达式成立,返回表达式1,否则返回表达式2.
case
情况一: case 变量或表达式或字段
when 常量1 then 值1
when 常量2 then 值2
...
else 值n
end
情况二: case
when 条件1 then 值1
when 条件2 then 值2
...
else 值n
end
(三)分组函数
1、分类
max:最大值
min:最小值
sum:和
avg:平均值
count:计算个数
2、特点
1、语法:select max(字段) from 表名;
2、支持的类型:sum和avg一般用于处理数值型,max、min、count可以处理任何数据类型
3、以上分组函数都忽略null值
4、都可以搭配distinct使用,实现去重的统计 select sum(distinct 字段) from 表名;
5、count函数:count(字段):统计该字段非空值的个数
count(*):统计结果集的行数
count(1):统计结果集的行数
效率上:MyISAM存储引擎,count(*)最高
InnoDB存储引擎,count(*)和count(1)效率>count(字段)
6、和分组函数一同查询的字段,要求是group by后出现的字段
四、分组查询
(一)语法
select 分组函数,分组后的字段
from 表名
[where 筛选条件]
group by 分组的字段
[having 分组后的筛选条件]
[order by 排序列表]
(二)特点
使用关键字 | 筛选的表 | 位置 | |
---|---|---|---|
分组前筛选 | where | 原始表 | group by的前面 |
分组后筛选 | having | 分组后的结果 | group by的后面 |