
最近把时间都放在了回顾SQL语言上,因为能够按照需求在数据库中提取数据是非常重要的,太久没有去碰SQL,所以就花了一段时间去重新总结关于MySQL中的查询,希望下面简单的总结可以帮助大家理解SQL的查询。
一、基础查询
基础查询就是我们最简单的查询,对应一个表,我们想查询表中的某些字段所使用的查询:
1、语法 :select 查询列表 from 表名;
2、特点:查询列表可以是(多个)字段、常量、表达式、函数,且查询结果是一个虚拟表。
下面就介绍基础查询的各种使用情况:
(1)、查询单个字段 select 字段名 from 表名
(2)、查询多个字段 select 字段名1,字段名2,.... from 表名
(3)、查询所有字段 select * from 表名
(4)、查询常量 比如 select 100 ,如果查询的常量为字符类型或者日期,就需要单引号括住
(5)、查询函数 select 函数名(参数列表)
(6)、查询表达式 select 100/6
(7)、去重 select distinct 字段名 from 表名
(8)、给字段起别名: select A as a from 表名
二、条件查询
条件查询是在基础查询的过程中,加入筛选条件,就像是excel中的筛选条件然后查询符合条件的记录:
1、语法:select 查询列表 from 表名 where 筛选条件
2、筛选条件的细分:
(1)、简单的运算符 > 、<、 =、 <>、 != 、>= 、<=,其中<>和!=表示不等于
(2)、逻辑运算符 and 、or、 not
(3)、模糊查询 : like: 识别相似的值,一般搭配通配符使用,可以判断字符型或者数值型。通配符:%表示任意多个字符,_表示任意单个字符between a and b:查询符合值在两者间的记录,类似于a<=x<=bis null / is not null:用于判断是否为null值
三、排序查询
排序查询也很好理解,就是按照某些字段排序,查询排序后的结果,excel也比较常见多个字段的排序:
1、语法:select 查询列表 from 表 【where】 order by 排序列表 【asc|desc】
2、使用方法:
(1)、asc:升序,如果不写默认升序,desc为降序
(2)、排序列表支持单个字段、多个字段、函数、表达式、别名
(3)、order by 的位置处于整个查询语句的最后(limit语句除外)
四、函数
在MySQL中,函数主要分为单行函数和分组函数,下面就详细地了解两类函数的细分。
1、单行函数
(1)、字符函数
concat():连接字符
substr():截取字符子串
upper()/lower():大小写
replace():替换目标字符
length():获取字节长度
trim():去除前后空格
lpad():左填充
rpad():右填充
instr():获取子串第一次出现的索引
(2)、数学函数
ceil():向上取整
round():四舍五入
mod():取模
floor():向下取整
truncate():保留指定小位数
rand():获取随机数,返回0-1之间的小数
(3)、日期函数
now():返回当前日期和时间
year()/month()/day():返回年/月/日
hour()/minute()/second():返回小时/分组/秒
date_format():将日期转换成字符
curdate()/curtime():返回当前日期/时间
str_to_date():将字符转换成日期
datefiff():返回两个日期相差的天数
monthname():以英文形式返回月份
(4)、流程控制函数
①if(条件表达式,表达式1,表达式2)
②case函数:
· case 变量【表达式】【字段】when 常量1 then 值1
when 变量2 then 值2
....else 值nend
·case
when 常量1 then 值1
when 常量2 then 值2
....
else 值n
end
2、分组函数
(1)、分类max() 最大值min() 最小值sum() 求和avg() 平均值count() 计数
(2)、特点
①支持类型:sum和avg一般用于处理数值型,max、min和count可以处理任何数据类型
②5个分组函数都可以忽略null
③5个分组函数都可以搭配distinct使用,实现去重统计
④count(字段)表示统计该字段非空值的个数,count(*)表示统计结果集的行数
⑤和分组函数一同查询的字段,要求是group by 语句后出现,后面提到分组查询会说明。
五、分组查询
分组查询的查询结果就好像excel的数据透视表一样,根据某些字段进行分类汇总,汇总的数据计算方式可以是求和、求平均、最大或者最小等等。
1、语法:
select 分组函数,分组后的字段 from 表
【where 筛选条件】group by 分组后的字段
【having 分组后的筛选字段】
【order by 排序列表】
2、where和having的区别
where和having都是起到筛选的作用的,而where筛选条件中使用的字段为原始表中的字段,但当我们想对分组函数计算得到的新字段进行计算时,你会发现使用where语句会报错的,正确的方法是使用having语句,having语句与where语句一样,后面跟筛选条件,但使用的字段为分组后产生的新字段。