1.统计函数
SELECT COUNT(*) FROM 表名///记录总数,不排除空 SELECT COUNT(列名) FROM 表名//排除空
2.分组函数
如果slect语句中顺序 group by …having ---->order by------->limit
SELECT 列名 FROM 表名 GROUP BY 列名//可以有多个排名组(逗号分割) //having分组后起作用,筛选符合条件的组,用别名效率会更高 //where在分组前工作,筛选符合条件的行 SELECT 列名 FROM 表名 GROUP BY 列名 HAVING 过滤条件 //列转行 GROUP_CONCAT() 需要与group by只有一起使用句子,才能得到所需的效果 //合并多个字段 SELECT 分组字段,GROUP_CONCAT(列名1, ":", 列名2 ORDER BY 列名1) AS 别名 FROM 表名 GROUP BY 分组字段 //合并一个字段 (结尾没有 : ) SELECT 分组字段,GROUP_CONCAT(列名1 SEPARATOR ':') AS 别名 FROM 表名 GROUP BY 分组字段 //合并一个字段 (结尾有 : ) SELECT 分组字段,GROUP_CONCAT(列名1,':') AS 别名 FROM 表名 GROUP BY 分组字段
3.字符串函数
///拼接字符串 SELECT * FROM 表名 WHERE `name` LIKE CONCAT('%','金','%') //转换大小写 SELECT UCASE(列名) FROM 表名//转换成大写 SELECT LCASE(列名) FROM 表名///转换成小写 //截取字符串 SELECT LEFT(字符串列,2) FROM 表名//从左边取两个
SELECT RIGHT(字符串列,2) FROM 表名//从右边取两个
SELECT SUBSTRING(列名,1,2) FROM 表名//从第一个位子,取出两个字符
//去空格
SELECT LTRIM(列名) FROM 表名//去左面空格
SELECT RTRIM(列名) FROM 表名//去右面空格
SELECT TRIM(列名) FROM 表名//去两端空格
//字符串替换
SELECT REPLACE(列名,被替换字段,替换字段) FROM 表名
//包含子字符串的字段
SELECT * FROM sys_role WHERE FIND_IN_SET('15', building_ids)
//返回列字符串长度数(按字节返回)
SELECT LENGTH(字符串列) FROM 表名
//比较字符串大小,等于0是相等
SELECT STRCMP(字符串列,字符串列) FROM 表名
4.数学函数
SELECT SUM(列名) FROM 表名//求和
SELECT MIN(列名) FROM 表名//最小值
SELECT MAX(列名) FROM 表名//最大值
SELECT AVG(列名) FROM 表名//平均值
//四舍五入保留两位小数
SELECT FORMAT(1.9378567567,2) from 表名//有的版本可能提示 ‘format不是可识别的函数名’
//取整
SELECT CEILING(列名) FROM 表名//向上取整
SELECT FLOOR(列名) FROM 表名//向下取整
//随机数
SELECT RAND() FROM 表名//(0到1闭区间随机数)每次返回不同的谁技术
SELECT RAND(3) FROM 表名//(0到1闭区间随机数)已3为种子的固定随机数
SELECT LEAST(value1,value2,...)FROM 表名//求这些列的最小值
SELECT MOD(value1,value2,...)FROM 表名//取余
SELECT CONV(列,16,2)FROM 表名//从十六进制转二进制
SELECT BIN(列名) FROM 表名//十进制转二进制
SELECT ASB(列名) FROM 表名//绝对值
6.流程控制函数
//三目运算 表达式为真,返回值1;表达式为假,返回值2
IF(表达式,值1,值2)
IFNULL(表达式,值1)//表达式为空返回值1,表达式不为空,返回本身
//多重分支(只能返回一个值) 表达式1为真,返回表达式2 ...... 否则返回表达式5
SELECT CASE WHEN 表达式1 THEN 表达式2 WHEN 表达式3 THEN 表达式4 ELSE 表达式5 END CASE;
7.all 和 any 操作符
//大于所有(就是大于子表的最大值)
SELECT `name` from classes where chinese > ALL(SELECT chinese FROM sutdent)
//大于其中一个(就是大于子表的最小值)
SELECT `name` from classes where chinese > ANY(SELECT chinese FROM sutdent)
8.其他
//加密
MD5(列名)//32位 MD5加密
LIMIT(开始行,结束行)
SELECT CHARSET(列名) FROM 表名//返回列的字符集
9.多列子查询
//和 张三 语文英语成绩完全形同的信息
SELECT * from classes where (chinese,ehglish) = (SELECT chinese,ehglish FROM classes WHERE `name` = '张三')
10.表复制(蠕虫复制)
复制其他表(数据迁移)
INSERT INTO 表名1(字段1,字段2) SELECT 字段,字段 FROM 表名2
自我复制(蠕虫复制)
INSERT INTO 表名1(字段1,字段2) SELECT 字段1,字段1 FROM 表名1
11.合并查询
UNION ALL(不会去重)
SELECT * FROM 表1 UNION ALL SELECT * FROM 表2
UNION(去重)
SELECT * FROM 表1 UNION SELECT * FROM 表2
12.MySQL五种约束
NOT NULL 非空
UNIQUE 唯一
PRIMARY KEY 主键
FOREIGN KEY 外键
CHECK 检查(5.7及以下仅支持语法,不生效)