(1) 文本处理函数
SELECT vend_name,Upper(vend_name) AS vend_name_upcase
FROM vendors
ORDER BY vend_name;
函数 说明
Left() 返回串左边的字符
Right() 返回串右边的字符
LTrim() 去掉串左边的空格
RTrim() 去掉串右边的空格
Lower() 将串转换为小写
Upper() 将串转换为大写
Length() 返回串的长度
Locate() 找出串的一个子串
Soundex() 返回串的SOUNDEX值
SubString() 返回子串的字符
注:SOUNDEX是一个将任何文本串转换为描述其语音表示的字母数字模式的算法。SOUNDEX考虑了类似的发音字符和音节,使得能对串进行发音比较而不是字母比较
SELECT cust_name,cust_contact
FROM customers
WHERE cust_contact = 'Y.Lie';
SELECT cust_name,cust_contact
FROM customers
WHERE Soundex(cust_contact )= Soundex('Y.Lie');
(2) 日期和时间处理函数
函数 说明
AddDate() 增加一个日期(天、周等)
AddTime() 增加一个时间(时、分等)
CurDate() 返回当前日期
CurTime() 返回当前时间
DateDiff() 计算两个日期之差
Date_Add() 高度灵活的日期运算函数
Date_Format() 返回一个格式化的日期或时间串
DayOfWeek() 对于一个日期,返回对应的星期几
Now() 返回当前日期和时间
Date() 返回日期时间的日期部分
Time() 返回一个日期时间的时间部分
Second() 返回一个时间的秒部分
Minute() 返回一个时间的分钟部分
Hour() 返回一个时间的小时部分
Day() 返回一个日期的天数部分
Month() 返回一个日期的月份部分
Year() 返回一个日期的年份部分
注:MySQL使用的日期格式,必须为格式yyyy-mm-dd
SELECT cust_id, order_num
FROM orders
WHERE Date(order_date)= '2020-01-25';
注:因为存储的order_date值可能为 2020-01-25 11:30:05,所以比较可靠的方法是只取其日期部分
SELECT cust_id, order_num
FROM orders
WHERE Date(order_date) BETWEEN '2020-09-01' AND '2020-09-30';
或者:
SELECT cust_id, order_num
FROM orders
WHERE Year(order_date) = 2005 AND Month(order_date) =9;
(3)数值处理函数
函数 说明
Abs() 返回一个数的绝对值
Cos() 返回一个角度的余弦
Exp() 返回一个数的指数值
Mod() 返回除操作的余数
Pi() 返回圆周率
Rand() 返回一个随机数
Sin() 返回一个角度的正弦
Sqrt() 返回一个数的平方根
Tan() 返回一个角度的正切
(1)聚集函数
函数 说明
AVG() 返回某列的平均值
COUNT() 返回某列的行数
MAX() 返回某列的最大值
MIN() 返回某列的最小值
SUM() 返回某列值之和
(2)AVG()函数
SELECT AVG(prod_price)AS avg_price
FROM products;
SELECT AVG(prod_price)AS avg_price
FROM products
WHERE vend_id= 1003;
注:
(3)COUNT()函数
COUNT()函数有两种使用方式
eg:返回customers表中客户的总数
SELECT COUNT(*) AS num_cust
FROM customers;
SELECT COUNT(cust_email) AS num_cust
FROM customers;
注:
(4)MAX()函数
SELECT MAX(prod_price) AS max_price
FROM products;
注:
(5)MIN()函数
SELECT MIN(prod_price) AS min_price
FROM products;
(6)SUM()函数
SELECT SUM(quantity) AS items_ordered
FROM orderitems
WHERE order_num = 20005;
SELECT SUM(item_price*quantity) AS total_price
FROM orderitems
WHERE order_num = 20005;
注:
(7)聚集不同值
SELECT AVG(DISTINCT prod_price)AS avg_price
FROM products
WHERE vend_id= 1003;
注:
如果指定列名,则DISTINCT只能用于COUNT()。DISTINCT 不能用于COUNT(*),因此不允许使用COUNT(DISTINCT), 否则会产生错误。类似地,DISTINCT必须使用列名,不能用于计算或表达式。
将DISTINCT用于MIN()和MAX() 虽然可以,但没有实际价值
(8)组合聚集函数
SELECT COUNT(*) AS num_items,
MIN(prod_price) AS price_min,
MAX(prod_price) AS price_max,
AVG(prod_price) AS price_avg
FROM products;
【MySQL必知必会】系列笔记:
【MySQL必知必会1-4章】学习笔记Day1
【MySQL必知必会5-7章】学习笔记Day2
【MySQL必知必会8-9章】学习笔记Day3
【MySQL必知必会10章】学习笔记Day4