函数

SQL支持利用函数来处理数据。函数一般是在数据上执行的,它给数据的转换和处理提供了方便。

文本处理函数

函数说明Left()返回串左边的字符Length()返回串的长度Locate()找出串的一个子串Lower()将串转换为小写LTrim()去掉串左边的空格Right()返回串右边的字符RTrim()去掉串右边的空格Soundex()返回串的SOUNDEX值SubString()返回子串的字符Upper()将串转换为大写

SELECT vend_name, Upper(vend_name) AS vend_name_upcase FROM vendors ORDER BY vend_name;

mysql数据处理函数教程


日期和时间处理函数

函数说明AddDate()增加一个日期(天、周等)AddTime()增加一个时间(时、分等)CurDate()返回当前日期CurTime()返回当前时间Date()返回日期时间的日期部分DateDiff()计算两个日期的差Date_Add()高度灵活的日期运算函数Date_Format()返回一个格式化的日期或时间串Day()返回一个日期的天数部分DayOfWeek()对于一个日期,返回对应的星期几Hour()返回一个时间的小时部分Minute()返回一个时间的分钟部分Month()返回一个时间的月份部分Now()返回当前日期和时间Second()返回一个时间的秒部分Time()返回一个日期时间的时间部分Year()返回一个日期的年份部分

匹配订单日期在2005-09-01那天:

SELECT cust_id, order_num FROM orders WHERE Date(order_date) = '2005-09-01';

订单日期在2005年9月份的:

SELECT cust_id, order_num FROM orders WHERE Date(order_date) BETWEEN '2005-09-01' AND '2005-09-30';

也可以按照下面这种写法,这种写法不必考虑一个月有多少天:

SELECT cust_id, order_num FROM orders WHERE Year(order_date) = 2005 AND Month(order_date) = 9;

数值处理函数

函数说明Abs()返回一个数的绝对值Cos()返回一个角度的余弦Exp()返回一个数的指数值Mod()返回除操作的余数Pi()返回圆周率Rand()返回一个随机数Sin()返回一个角度的正弦Sqrt()返回一个数的平方根Tan()返回一个角度的正切

聚集函数

函数说明AVG()返回某列的平均值COUNT()返回某列的行数MAX()返回某列的最大值MIN()返回某列的最小值SUM()返回某列值之和#### AVG() 函数

返回products表中所有产品的平均价格:SELECT AVG(prod_price) AS avg_price FROM products;

也可以用来确定特定列或行的平均值。

返回特定供应商所提供的产品的平均价格:

SELECT AVG(prod_price) AS avg_price FROM products WHERE vend_id = 1003;

AVG()函数只能用于单个列,且忽略列值为NULL的行

COUNT() 函数

返回customers表中客户的总数:

SELETE COUNT(*) AS num_cust FROM customers;

只对具有电子邮件地址的客户计数:

SELECT COUNT(cust_email) AS num_cust FROM customers;

*NULL值,如果制定列名,则制定列的值为空的行被COUNT()函数忽略,但如果COUNT()函数中用的是,则不忽略。**

MAX() 函数

返回products表中最贵的物品的价格:

SELECT MAX(prod_price) AS max_price FROM products;

对非数值数据使用MAX(),虽然MAX()一般用来找出最大的数值或时间,但MySQL允许将它用来返回任意列中的最大值,包括返回文本列中的最大值。用于文本数据时,如果数据按相应的列排序,则返回最后一行

MAX() 函数忽略列值为NULL的行

MIN() 函数

正好与MAX()功能相反

SELECT MIN(prod_price) AS min_price FROM product;

SUM() 函数

orderitems表包含订单中实际的物品,每个物品有相应的数量(quantity)。检索所订购物品的总数(所有quantity值之和):

SELECT SUM(quantity) AS items_ordered FROM orderitems WHERE order_num = 20005;

SUM()也可以用来合计计算值。

合计每项物品的item_price*quantity,得出总的订单金额(where 保证了只统计某个物品订单中的物品):

SELECT SUM(item_price*quantity) AS total_price FROM orderitems WHERE order_num = 20005;

聚类不同值

  • 对所有行执行计算,指定ALL参数或者不给参数。(某人是ALL)
  • 只包含不同的值,指定DISTINCT参数。

SELECT AVG(DISTINCT prod_price) AS avg_price FROM products WHERE vend_id = 1003;

**注意:**如果指定列名,则DISTINCT只能用于COUNT()。DISTINCT 不能用于COUNT(*),因此,不允许使用COUNT(DISTINCT)。类似的,DISTINCT必须使用列名,不能用于计算或表达式。

组合聚集函数

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, 返回, COUNT, order, 数据处理, SELECT, price

相关文章推荐

添加新评论,含*的栏目为必填