SQL定义
结构化查询语句(Structured Query Language),是一种与数据库沟通的语言。
MySQL
关系型数据库管理系统。
查询语句SELECT FROM
语句解释
SELECT A
FROM B;
从B表中检索名为A的列,列名写在SELECT后,表名写在FROM后。
去重语句
SELECT DISTINCT A
FROM B;
指示数据库只返回不同的值。
前N个语句
SELECT A
FROM B
LIMIT 5;
返回前5行数据
判断语句CASE…END
CASE when 条件1 then 结果1
when 条件2 then 结果2
...
else 结果n
END
筛选语句WHERE
语句解释
SELECT A
FROM B
WHERE A=a;
从B表中检索A列,但只返回A值等于a的行。
通配符
用来匹配值的一部分的特殊字符。
通配符%
可以匹配出现任何次数的任何字符。
SELECT A
FROM B
WHERE A LIKE 'Fish%';
检索任意以Fish起头的词。
通配符_
与%用途一样,但只匹配单个字符。
SELECT A
FROM B
WHERE A LIKE '__ inch teddy bear';
以上代码使用了两个通配符_,会匹配两个字符,所以能够检索到12 inch teddy bear 和18 inch teddy bear ,但不能检索到8 inch teddy bear。
通配符[]
用来指定一个字符集,它必须匹配指定位置的一个字符。
SELECT A
FROM B
WHERE A LIKE '[JM]'%'
ORDER BY A;
找出所有以J或M起头的值。
运算符和操作符
由于这部分和其他语言大同小异,就不累述了。仅给出以下参考链接。
运算符参考链接。
分组语句GROUP BY
聚集函数
对某些行运行的函数,计算并返回一个值。
AVG()函数
返回某列的平均值。
SELECT AVG (A) AS a
FROM B;
返回值a,代表了B中的平均数。
SELECT AVG (A) AS a
FROM B
WHERE c=d;
只返回当c=d时,特定列特定行的平均值。
COUNT()函数
返回某列的行数。
SELECT COUNT(*) AS a
FROM B;
计算B中一共有多少行。
SELECT COUNT(A) AS a
FROM B
对特定列A中具有值的行进行计数,但不计入null值。
MAX()函数
返回某列的最大值。
SELECT MAX(A) AS a
FROM B;
返回A列最大值。
MIN()函数
返回某列的最小值。
SELECT MIN(A) AS a
FROM B;
返回A列的最小值。
SUM()函数
返回指定列值得和。
SELECT SUM(A) AS a
FROM B WHERE c=d;
返回满足c=d条件时所有列值得和。
GROUP BY 语句解释
根据一个或多个列对结果集进行分组。
SELECT A,COUNT(*) AS a
FROM B
GROUP BY A;
对A列进行分组数据,然后统计分组结果的所有行数。
HAVING
过滤分组:基于完整的分组而不是个别的行进行过滤。
SELECT A,COUNT(*) AS a
FROM B
GROUP BY A
HAVING COUNT(*) >=2;
先对A列进行分组,然后把COUNT(*)>=2的分组过滤掉。
排序语句ORDER BY
语句解释
SELECT A,COUNT(*) AS a
FROM B
GROUP BY A
HAVING COUNT(*)>=2
ORDER BY a,A;
使用GROUP BY子句对A数据进行分组,然后过滤COUNT(*)>=2的分组,最后用ORDER BY子句进行排序输出。
正序(A-Z)
一般而言,ORDER BY 默认是正序输出。
逆序(Z-A)
SELECT A
FROM B
ORDER BY A DESC;
对A列进行逆序输出。
函数
时间函数
YEAR():从日期中提取年份。
SELECT A
FROM B
WHERE YEAR(C)=2019;
检索A列中值为2019年份的行。
数值处理函数
ABS()函数
返回一个数的绝对值。
COS()函数
返回一个角度的余弦值。
EXP()函数
返回一个数的指数值。
PI()函数
返回圆周率。
SIN()函数
返回一个角度的正弦值。
SQRT()函数
返回一个数的平方根。
TAN()函数
返回一个角度的正切值。
字符串函数
SELECT A,UPPER(A) AS a
FROM B
ORDER BY A;
A列转换为大写后与A列原值一起输出(即输出两列,一列为原值,一列为大写值)。
其他函数
SQL注释
- -单行注释
SELECT A --这是一条注释。
FROM B;
文字部分不会执行。
/*…*/多行注释
/*SELECT A,B
FROM C;*/
SELECT A
FROM B;
第一个SELECT语句不会执行。
代码规范
本文章参考资料:《SQL必知必会第4版》。