1 平均值 AVG ()
SELECT AVG(count) AS CountAverage FROM access_log;
下面的 SQL 语句选择访问量高于平均访问量的 "site_id" 和 "count":
SELECT site_id, count FROM access_log
WHERE count > (SELECT AVG(count) FROM access_log);
2 行数 COUNT ()
下面的 SQL 语句计算 "access_log" 表中总记录数:
SELECT COUNT(*) AS nums FROM access_log;
下面的 SQL 语句计算 "access_log" 表中不同 site_id 的记录数:
SELECT COUNT(DISTINCT site_id) AS nums FROM access_log;
3 第一个记录的值 FIRST ()
SELECT name AS FirstSite FROM Websites LIMIT 1;
4 最后一个记录的值 LAST ()
SELECT name FROM Websites
ORDER BY id DESC
LIMIT 1;
5 最大值 MAX ()
SELECT MAX(alexa) AS max_alexa FROM Websites;
6 最小值 MIN ()
SELECT MIN(alexa) AS min_alexa FROM Websites;
7 总和 SUM ()
SELECT SUM(count) AS nums FROM access_log;
8 排序 GROUP BY
SELECT site_id, SUM(access_log.count) AS nums
FROM access_log GROUP BY site_id;
9 HAVING
在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与聚合函数一起使用。
现在我们想要查找总访问量大于 200 的网站。
SELECT Websites.name, Websites.url, SUM(access_log.count) AS nums FROM (access_log
INNER JOIN Websites
ON access_log.site_id=Websites.id)
GROUP BY Websites.name
HAVING SUM(access_log.count) > 200;
现在我们想要查找总访问量大于 200 的网站,并且 alexa 排名小于 200
SELECT Websites.name, SUM(access_log.count) AS nums FROM Websites
INNER JOIN access_log
ON Websites.id=access_log.site_id
WHERE Websites.alexa < 200
GROUP BY Websites.name
HAVING SUM(access_log.count) > 200;
10 转换为大写 UCASE ()
下面的 SQL 语句从 "Websites" 表中选取 "name" 和 "url" 列,并把 "name" 列的值转换为大写:
SELECT UCASE(name) AS site_title, url
FROM Websites;
11 转换为小写 LCASE ()
下面的 SQL 语句从 "Websites" 表中选取 "name" 和 "url" 列,并把 "name" 列的值转换为小写:
SELECT LCASE(name) AS site_title, url
FROM Websites;
12 从文本字段中提取字符 MID ()
下面的 SQL 语句从 "Websites" 表的 "name" 每列中提取前 4 个字符:
SELECT MID(name,1,4) AS ShortTitle
FROM Websites;
13 返回文本字段中值的长度 LEN ()
下面的 SQL 语句从 "Websites" 表中选取 "name" 和 "url" 列中值的长度:
SELECT name, LENGTH(url) as LengthOfURL
FROM Websites;
14 把数值字段舍入为指定的小数位数 ROUND ( )
ROUND(X): 返回参数X的四舍五入的一个整数。
mysql> select ROUND(-1.23);
-> -1
mysql> select ROUND(-1.58);
-> -2
mysql> select ROUND(1.58);
-> 2
ROUND(X,D):
返回参数X的四舍五入的有 D 位小数的一个数字。如果D为0,结果将没有小数点或小数部分。
mysql> select ROUND(1.298, 1);
-> 1.3
mysql> select ROUND(1.298, 0);
-> 1
15 返回当前系统的日期和时间 NOW ( )
下面的 SQL 语句从 "Websites" 表中选取 name,url,及当天日期:
SELECT name, url, Now() AS date
FROM Websites;
16 对字段的显示进行格式化 FORMAT ( )
下面的 SQL 语句从 "Websites" 表中选取 name, url 以及格式化为 YYYY-MM-DD 的日期:
SELECT name, url, DATE_FORMAT(Now(),'%Y-%m-%d') AS date
FROM Websites;