数据检索
where子句
比较符运算
- 等于
=
- 不等于
<>或者!=
- 小于
<
- 小于等于
<= 或者 !>
- 大于
>
- 大于等于
>=或者 !<
- 两数之间
BETWEEN AND
- 为空
IS NULL
在mysql中不支持!> !<
操作
逻辑运算
- 并且 AND
- 或者 OR
- 在指定范围内 IN
- 非 NOT
LIKE 通配符过滤
SELECT name FROM user WHERE name LIKE '%太%'
%百分号代表一个或者多个
_下划线代表一个
由于数据库的最左前缀原则,如果左侧未确定,那么数据则会全表扫描
SQL函数
算术函数
- ABS() 绝对值
- MOD() 取余
- ROUND() 四舍五入指定的小数位,需要两个参数,字段名和小数位
eg…
SELECT ABS(-1) 1
SELECT MOD (101,3) 2
SELECT ROUND(72.25,1) 72.3
字符串函数
- CONCAT() 多字符串拼接
- LENGTH() 计算字符长度,汉字算3个数字字母算1个
- CHAR_LENGTH() 计算字符串长度,汉字数字字母均算一个
- LOWER() 转换小写
- UPPER() 转换大写
- PERLACE() 替换函数,三个参数:要替换的表达式或字段名,像查找的被替换的字符串,替换成哪个字符串
- SUBSTRING() 截取字串,三个参数:待截取的表达式或字段名,开始截取的位置,想要截取的字符串的长度
eg…
SELECT CONCAT('abc','123') abc123
SELECT LENGTH('函数') 6
SELECT CHAR_LENGTH('函数') 2
SELECT LOWER('ABC') abc
SELECT UPPER('abc') ABC
SELECT REPLAE('fabcd','abc','123') f123d
SELECT SUBSTRING('fabcd',1,3) fab
日期函数
- CURRENT_DATE() 系统当前日期
- CURRENT_TIME() 系统当前时间,没具体日期
- CURRENT_TIMESTAMP() 系统当前时间,包括具体的日期
- EXTRACT() 抽取具体的年,月,日
- DATE() 返回时间的日期部分
- YEAR() 返回时间的年部分
- MONTH() 返回时间的月份部分
- DAY() 返回时间的天数部分
- HOUR() 返回时间的小时部分
- MINUTE() 返回时间的分钟部分
- SECOND() 返回时间的秒部分
eg…
SELECT CURRENT_DATE();
SELECT_CURRENT_TIME();
SELECT CURRENT_TIMESTAMP();
SELECT EXTRACT(YEAR FROM '1999-09-09') 1999
SELECT DATE('2019-09-09 09:09:09') 2019-09-09
转换函数
- CAST() 数据类型转换,参数是一个表达式,表达式通过AS关键词分割为两个参数,分别是原始数据类型和目标数据类型
- COALESCE() 返回一个非空数值
SELECT CAST(123.123 AS INT) ERROR
SELECT CAST(123.123 AS DECIMAL(8,2)) 123.12
SELECT COALESCE(null,1,2) 1
注意:CAST转换小数不会四舍五入,所以小数转换整数会直接报错,可以通过DECIMAL转换小数类型,第一个参数为总位数,第二个参数为小数位数.
聚合函数
- 总行数 COUNT()
- 最大值 MAX()
- 最小值 MIN()
- 求 和 SUM()
- 平均值 AVG()
分组统计
GROUP BY()
按照不同的数据进行分组后再进行聚合统计
在分组中如何过滤?HAVING
注意:查询关键字的顺序SELECT ... FROM ... WHERE ... GROUP BY ... HAVING ... ORDER BY ...
EXIST 子查询
- EXIST() 判断后者是否存在
- NOT EXIST 判断后者是否不存在
集合比较子查询
- IN 在集合中
- ANY 和比较符同时使用,与子查询中返回的任何值做比较
- ALL 和比较符同时使用,与子查询中返回的所有值做比较
- SOME 和any一致,但是常常用any