一、数据库常用操作
注意事项:
- SQL不区分大小写,一般关键词大写,列表名小写
- 语句后面加分号,空格被忽略,可以分行写
1 SHOW语句
SHOW DATABASES; //显示所有数据库
SHOW TABLES; //显示当前数据库中所有表
SHOW COLUMNS
FROM 表名 //显示表名中的所有列
2 SELECT语句
SELECT 列名1,列名2
From 表名;//返回的顺序每次都会不一致
SELECT *
FROM 表名; //检索所有列
3 DISTINCT语句
SELECT DISTINCT 列名
FROM 表名; //检索列中值不同的行,DISTINCT应用于后续所有列,不能单独使用
4 LIMIT限制条件
SELECT 列名
FROM 表名
LIMIT 开始行数,要检索的行数; //表从行0开始
或者
LIMIT 要检索的行数 OFFSET 开始行数; //等价上
5 ORDER BY 排序
SELECT 列名
FROM 表名
ORDER BY 列名1,列名2; //严格先按列名1中字母或数值顺序对列名进行排序,然后再按列名2进行排列,如姓名检索
或者
ORDER BY 列名1 DESC,列名2; //默认升序(数据库中设置好的),DESC为降序,只作用于当前列
SELECT 列名
FROM 表名
ORDER BY 列名 DESC
LIMIT 1; //检索最大值/最小值
6 WHERE过滤行检索
SELECT 列名
FROM 表名
WHERE (列名=某一个列值
OR 列名!=‘某个值’
AND 列名<>‘某个值’ //等价于!=
列名 BETWEEN 开始值 AND 结束值
列名 IS NULL //检索为NULL的行,没有IS NOT NULL
列名 IN (列值1,列值2) //相当于OR,但比OR快,更直观
列名 NOT IN (列值1,列值2) //不匹配的行
列名 LIKE ‘通配符’
7 操作符LIKE+通配符
- 通配符可在搜索模式中任意位置使用,但不要过度使用,查询效率慢
- 1)%表示任何字符出现任意次数,包括0次;在结尾加上%可以去掉尾空格;不能匹配NULL
- 2)_只匹配一个字符,不多不少
8 操作符REGEXP----正则表达式
WHERE 列名 REGEXP ‘.000’ //.匹配任意一个字符,且只返回一个WHERE 列名 REGEXP BINARY ‘.0’//本身不区分大小写,加上BINARY后区分
WHERE 列名 REGEXP A|B|CD // |等价于OR,作用于整个串,匹配A、B或者CD
WHERE 列名 REGEXP [A|B|C]D //匹配AD,BD,CD
WHERE 列名 REGEXP [A-C]D //匹配AD,BD,CD
WHERE 列名 REGEXP [ ^ ABC ]D //匹配除了AD,BD,CD
WHERE 列名 REGEXP ‘^ [0 - 9]' //从字符串开头进行查找
WHERE 列名 REGEXP ‘[0-9]’ //从字符串任意位置进行查找
重复元字符表示重复前面的要求
9 转义字符
匹配特殊字符,需要以\ \为前导,例如 \ \ (A \ \ )表示(A)
10 AS 重命名
SELECT 列名1*列名2 AS 列名3 //将相乘列命名为列名3
11 GROUP BY 分组
SELECT id,COUNT(*) AS num
FROM products
GROUP BY id //对id列分组,在每组上进行计数,而不是在整体上计数。
12 HAVING 过滤分组
SELECT id,COUNT(*) AS num
FROM products
WHERE price>10
GROUP BY id
HAVING COUNT(*)>2
ORDER BY num//先过滤price>10的行,再过滤分组计数值大于2,按num排序
13 相关总结
- ORDER BY 和 GROUP BY 对比
- SELECT语句的顺序
二、数据库处理相关函数
1.文本处理函数
2.时间处理函数
WHERE DATE(日期列) = ‘2000-01-20’ //匹配2000-01-20日
WHERE YEAR(日期列)=2000 AND MONTH(日期列)=9 //匹配2000年9月所有日期
3.数值处理函数
4.SQL聚集函数
AVG(列名):只能求特定列,忽略NULL
COUNT(*):记所有行数,包括NULL
COUNY(列名):记特点列的行数,不包括NULL