DQL query
DQL的书写顺序:[字段列表] from [表名列表] where [查询条件] group by [分组字段列表] having [分组后条件列表] order by[排序字段列表] limit [分页参数]
DQL的执行顺序:from [表名列表] where [查询条件] group by [分组字段列表] having [分组后条件列表] select [字段列表] order by[排序字段列表] limit [分页参数]
基础查询:
SELECT 字段1 [ 别名1 ] , 字段2 [ 别名2 ] … FROM 表名;
SELECT DISTINCT 字段列表 FROM 表名;
条件查询:
大于小于不等于或非且
IS NULL 是NULL
BETWEEN … AND … 在某个范围之内(含最小、最大值)
IN(…) 在in之后的列表中的值,多选一
LIKE 占位符模糊匹配(_匹配单个字符, %匹配任意个字符)
LOCATE (name, capital) 返回name在capital中的行
流程函数
IF(value , t , f)
IFNULL(value1 , value2)
CASE WHEN [ val1 ] THEN [res1] …ELSE [ default ] END
CASE [ expr ] WHEN [ val1 ] THEN [res1] … ELSE [ default ] END
聚合函数:
将一列数据作为整体纵向计算,重新构造查询字段,与字段列表同时查询时仅返回首行。
SELECT 聚合函数(字段列表) FROM 表名 ;
分组查询:
语法:SELECT 字段列表 FROM 表名 [WHERE 条件] GROUP BY 分组字段名 [HAVING 分组后过滤条件];
where与having区别:
执行时机不同:where是分组之前进行过滤,不满足where条件,不参与分组;而having是分组之后对结果进行过滤。
判断条件不同:where不能对聚合函数进行判断,而having可以。
排序查询:
语法:SELECT 字段列表 FROM 表名 ORDER BY 字段1 排序方式1 , 字段2 排序方式2 ;
排序方式:ASC,DESC;
分页查询 :
语法:SELECT 字段列表 FROM 表名 LIMIT 起始索引, 查询记录数 ;
注意事项:
• 起始索引从0开始,起始索引 = (查询页码 - 1)* 每页显示记录数。
• 分页查询是数据库的方言,不同的数据库有不同的实现,MySQL中是LIMIT。
• 如果查询的是第一页数据,起始索引可以省略,直接简写为 limit 10。
函数
与聚合函数不同,函数面向的对象是每个单独的字符串或值
字符串函数
CONCAT(S1,S2,…Sn) 字符串拼接,将S1,S2,… Sn拼接成一个字符串
LOWER(str) 将字符串str全部转为小写
UPPER(str) 将字符串str全部转为大写
LPAD(str,n,pad)左填充,用字符串pad对str的左边进行填充,达到n个字符串长度
RPAD(str,n,pad)右填充,用字符串pad对str的右边进行填充,达到n个字符串长度
TRIM(str) 去掉字符串头部和尾部的空格
SUBSTRING(str,start,len) 返回从字符串str从start位置起的len个长度的字符串
数学函数
CEIL(x) 向上取整
FLOOR(x) 向下取整
MOD(x,y) 返回x/y的模
RAND() 返回0~1内的随机数
ROUND(x,y) 求参数x的四舍五入的值,保留y位小数
日期函数
CURDATE() 返回当前日期
CURTIME() 返回当前时间
NOW() 返回当前日期和时间
YEAR(date) 获取指定date的年份
MONTH(date) 获取指定date的月份
DAY(date) 获取指定date的日期
DATE_ADD(date, INTERVAL exprype)
返回一个日期/时间值加上一个时间间隔expr后的时间值
DATEDIFF(date1,date2)返回起始时间date1 和 结束时间date2之间的天数
select name from world where name like ‘%united%’
REPLACE(‘vessel’,’e’,’a’) -> ‘vassal’
select name,continent,case when continent=’Oceania’ then ‘Australasia’
when continent in(‘Eurasia’,’Turkey’) then ‘Europe/Asia’
when continent=’Caribbean’ then case when name like ‘B%’ then ‘North America’
else ‘South America’ end else continent end from world