Mysql必知必会重点整理11-17章

chap11 使用数据处理函数

11.1 函数

RTrim():去掉串尾空格

11.2 使用函数

  1. 理文本串
  2. 在数值数据上进行算术操作
  3. 处理日期和时间并从这些值中提取特定成分(例如返回两个日期之差,检查日期有效性等)的日期和时间函数
  4. 返回DBMS正使用的特殊信息

11.2.1 文本处理函数

为常用的文本处理函数:

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

解释:SOUNDEX()函数是一个将任何文本串转换为描述其语音表示的字母数字模式的算法,使得能对串进行发音比较而不是字母比较
举例:customers表中有一个顾客Coyote Inc.,其联系名为Y.Lee,但是输入错误写为为Y.Lie,采用的方法:

SELECT customers.cust_name,customers.cust_contact FROM customers WHERE SOUNDEX(cust_contact)=SOUNDEX('Y Lie');

11.2.2 日期和时间处理函数

日期和时间采用相应的数据类型和特殊的格式存储,以便能快速和有效地排序或过滤,并且节省物理存储空间。
下表:常用日期和时间处理函数

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

迄今为止,WHERE子句经常过滤的部分为比较数值和文本,现在可以对日期进行过滤

举例:查询出在2005-09-01这天下单的顾客编号以及下单的数量

SELECT customers.cust_id,orderitems.order_num FROM customers,orderitems,orders WHERE order_date='2005-09-01';

如果存储的order_time值为2005-09-01 11:30:05,而WHERE order_date='2005-09-01'将检索失败
解决方法:使用Date()函数与部分列值进行比较
举例:

SELECT customers.cust_id,orderitems.order_num FROM customers,orderitems,orders WHERE DATE(orders.order_date)='2005-09-01';

注:如果想要的是日期,请使用Date():如果想要的仅仅是日期,则使用该函数是一个良好的习惯,即使知道相应的列只包含日期也是如此。
也存在一个Time()函数,在只要想要时间时使用

如果想要检出2005年9月下的所有订单,简单的相等测试也不行,可以采用以下的方法:
方法一:

SELECT customers.cust_id,orderitems.order_num FROM customers,orderitems,orders WHERE DATE(orders.order_date)  BETWEEN '2005-09-01' AND '2005-09-30';

方法二:

SELECT customers.cust_id,
       orderitems.order_num 
FROM customers,orderitems,orders 
WHERE YEAR(orders.order_date)=2005 AND
      MONTH(orders.order_date)=9;

11.2.3 数值处理函数

数值处理函数仅处理数值数据,这些函数一般主要用于代数、三角函数或几何运算,因此没有串或日期-时间处理使用频繁。
下表:常用数值处理函数

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

chap12 汇总数据

12.1 聚集函数

我们经常需要汇总数据而不用把它们实际检索出来,这种类型的检索大概有以下几种:

  1. 确定表中的行数
  2. 获得表中行组的和
  3. 找出表列的最大值、最小值和平均值
    聚集函数(aggregate function):运行在行组上,计算和返回单个值的函数

下表:SQL聚集函数

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

12.1.1 AVG()函数

AVG()函数对表中行数计数并计算特定列值之和,求得该列的平均值
AVG()函数可用来返回所有列的平均值,也可以用来返回特定列或行的平均值
例1:返回列中所有数据
返回产品表中所有产品的平均价格

SELECT AVG(products.prod_price) AS avg_price FROM products;

例2:返回特定列或行的平均值
返回特定供应商所提供产品的平均价格

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

只用于单个列:AVG()函数只能用来确定特定数值列的平均值,而且列名必须作为函数参数给出。为了获得多个列的平均值,必须使用多个AVG()函数。

12.1.2 COUNT()函数

COUNT()函数用于确定表中行的数目或符合特定条件的行的数目

  1. COUNT(*):对表中行的数目进行计数
  2. COUNT(column):对特定列中具有的行进行计数
    例1:检索客户表中客户的总数
SELECT COUNT(*) AS num_cust
FROM customers;

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

SELECT COUNT(cust_email) AS num_cust
FROM customers;

12.1.3 MAX()函数

例:检索出产品表中最贵的产品的价格

SELECT MAX(prod_price) AS max_price
FROM products;

12.1.4 MIN()函数

例:检索出产品表中最贵的产品的价格

SELECT MIN(prod_price) AS min_price
FROM products;
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,907评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,987评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,298评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,586评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,633评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,488评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,275评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,176评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,619评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,819评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,932评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,655评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,265评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,871评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,994评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,095评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,884评论 2 354

推荐阅读更多精彩内容

  • 数据库入门 数据库: 保存有组织的数据的容器(通常是一个文件或一组文件).数据库软件应该称为 DBMS(DataB...
    Mjericho阅读 499评论 0 0
  • 第三课: 排序检索数据 distinct关键字:distinct 列名1,列名2,列名3DISTINCT 关键字会...
    VictorBXv阅读 1,475评论 0 8
  • (一)几个数据库相关的概念 1.数据库 数据库: 保存有组织数据的容器。 数据的所有存储、检索、管理和处理实际上是...
    快乐的小飞熊阅读 523评论 0 1
  • 转载/王大师 我们国家花了三十多年时间,就走完了欧美发达国家要花三百年多才走完的路。我们经历了人类有史以来规模最庞...
    蓝色玻璃心阅读 130评论 0 0
  • 初来乍到,多多指教。喜欢写作或文学的小可爱们交友嘛
    安琪呐阅读 262评论 0 0