《Mysql必知必会》 笔记(二)


三、语句总结

6. 创建计算字段

Concat( )

拼接(concatenate)

SELECT Concat(vend_name, '(', vend_country, ')')
FROM vendors
ORDER BY vend_name;

RTrim( ) / LTrim( ) / Trim( )

去掉串右侧/左侧/左右两边的空格

SELECT Concat(vend_name, '(', RTrim(vend_country), ')')
FROM vendors
ORDER BY vend_name;

AS关键字

使用别名(alias),有时已成为导出列(derived column)。

SELECT Concat(vend_name, '(', vend_country, ')') AS //字段或值的替换名
vend_title
FROM vendors
ORDER BY vend_name;

执行算术计算

//汇总物品的价格
SELECT prod_id,
	   quantity,
	   item_price,
	   quantity*item_price AS expanded_price
FROM orderitems
WHERE order_num=20005;

注意事项

  1. 多数DBMS使用+或| |来实现拼接,MySQL通过Concat()函数实现;

7. 数据处理函数

文本处理函数

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

SOUNDE是一个将任何文本串转换为描述其语音表示的字母数字模式的算法,对串进行发音比较而不是字母比较。

//匹配所有发音类似于Y.Lie的联系名,检索出Y Lee
SELECT cust_name, cust_contact
FROM customers
WHERE Soundex(cust_contact) = Soundex('Y Lie');

日期和时间处理函数

日期格式为yyyy-mm-dd

函数说明
AddDate( )增加一个日期(天/周等)
AddTime( )增加一个时间(时/分等)
CurDate( )增加一个日期(天/周等)
CurDate( )返回当前日期
AddDate( )返回当前时间
Date( )返回日期时间的日期部分
DateDiff( )计算两个日期之差
Date_Add( )高度灵活的日期运算函数
Date_Format( )返回一个格式化的日期或时间串
Day( )返回一个日期的天数部分
DayOfWeek( )对于一个日期,返回对应的星期几
Hour( )返回一个时间的小时部分
Minute( )返回一个时间的分钟部分
Month( )返回一个时间的月份部分
Now( )返回当前日期和时间
Second( )返回一个时间的秒部分
Time( )返回一个日期时间的时间部分
Year( )返回一个日期的年份部分
//检索2005年9月的所有订单
SELECT cust_id, order_name
FROM orders
WHERE Year(order_date) = 2005 AND Month(order_date) = 9;

数值处理函数

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

注意事项

  1. 函数没有SQL可移植性强,若使用函数应做好代码注释;
  2. 如果想要的仅仅是日期,使用Date( ); 只想要时间使用Time( );

8. 汇总数据

聚集函数

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

AVG( )

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

COUNT( )

  • COUNT(*)对表中行的数目进行计数,无论列中为空值或非空值

  • COUNT(column)对特定列中具有值的行计数,忽略NULL值

      SELECT COUNT(cust_email) AS num_cust
      FROM customers;
    

SUM( )

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

聚集不同值

DISTINCT( ) MySQL 5之后的版本中出现

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

组合聚集函数

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;

组合聚集函数

注意事项

  1. AVG( )/MAX( )/MIN( )/SUM( )忽略列值为NULL的行;
  2. 如果指定列名,DISTINCT只能用于COUNT( ),不能用于COUNT(*),也不能用于计算或表达式;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值