创建计算字段

本章介绍什么是计算字段,如何创建计算字段,以及在应用程序中使用别名来引用计算字段。

计算字段

举个简单的例子,如果想要在一个搜索结果中既显示公司的名称,又显示公司的地址。我们无法直接

SELECT name, adress FROM TABLE;,因为这样显示的是两列搜索结果,有的计算字段就可以把两列搜索结果连接起来形成一个字段。

当列中存储的数据不是我们所直接需要的时候,我们就需要计算字段,来对数据进行转化,计算来得到我们想要的结果。

计算字段其实实质上也是一种列,只不过这个列是我们通过计算的到的。

拼接字段

拼接:将多个值联结起来形成一个值。

在我们的数据库中,有vendor的name和country,如果我们需要name(location)形式的输出。这是单个值,但表中的数据存储在两个列中:vend_name和vend_country,此外还需要()把数据括起来。但括号并没有存储在数据库中。

这个时候的解决办法就是把两个列拼接起来。可以使用Concat()函数拼接数据。

有的SQL语句是使用+或者||来实现拼接,但MySQL是使用Concat语句。

Concat函数的形参列表没有指定多少元素,可以对多个元素进行拼接。

在整理数据的时候如果我们想要删去两侧多余的空格,可以使用Trim()函数。

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

RTrim()函数是删去右边的所有空格,而LTrim()是删去左边的所有空格,Trim()是删去两侧的所有空格。

使用别名

我们注意到,在上面的例子中,所显示出来的列的名字似乎就只是我们的计算字段,那如何对这个检索出来的结果起一个新的名称呢?

我们可以使用别名,别名的关键字是AS。

SELECT语句由原来的没有什么不同,但后面的文本AS表示创建了一个包含指定计算(这里是Concat函数)的名为vend_title的计算字段。

执行算术计算

计算字段的另一用途是对检索出的数据进行算术计算。例如orders表包含所有的订单信息,orderitems包含每个订单的各项物品。

例如这个例子表示订单号为20005的各项物品。

现在要汇总单种物品的价格。

这个样例中新增了一列expanded_price,这个是通过quantity * item_price得到的。

MySQL中的算数计算包含常见的 +,-,*,/。

使用数据处理函数

函数

SQL中的函数一般是用来对数据进行处理与转换。例如上一节的Trim()函数。

使用函数

大多数SQL中都有以下函数:

1.用于处理文本串的文本函数函数(如删除或添加指定值,转换值为大写或小写)。

2.用于在数值数据上进行算数运算的数值函数(如返回绝对值,进行代数运算)。

3.用于处理日期和时间值并从这些值中提取特定成分的日期和时间函数(如返回两个日期之差,检查日期是否有效)。

4.返回DBMS正使用的特殊信息的系统函数(如返回用户登陆信息,检查版本细节)。

系统函数一般不太会用到,接下来我们举几个例子来介绍一下前三个函数。

文本处理函数

上一节已经看到过一个文本处理的函数,就是Trim()函数,还记得他的作用吗?

下面是另一个例子,使用Upper()函数。

在这个例子中,通过使用Upper()函数,将vend_name的文本数据转换为大写。

下表列出了某些常见的文本处理函数。

对于这些函数,不会一一的去讲解,因为这些函数可以通过MySQL命令行的help命令去了解,以left()为例。

如上,(MySQL不严格区分大小写),left()函数的具体用法是left(str, len),即参数为串和返回的字符个数。如果串为空(NULL),则返回空(NULL)。如SELECT left('foobarbar', 5);则返回从左开始的5个字符,即fooba。通过help能够了解这些函数的用法。

若想知道串的Soundex值请查询:https://blog.csdn.net/m0_52319639/article/details/121527255?spm=1001.2014.3001.5501

更多的文本处理函数请查询 https://dev.mysql.com/doc/refman/8.0/en/string-functions.html

日期和时间处理函数

日期和时间采用相应的数据类型和特殊的格式储存,但我们一般不使用这些格式,直只对日期和时间进行读取,统计和处理。

下表是常用的日期和时间处理函数。

同文本处理函数类似,通过help命令可以查看这些函数的使用方式。

接下来看个简单的例子。(下面的例子可以帮助复习WHERE的使用)

在表orders中有order_date的列,里面存储的是日期和时间。

这个例子查找日期为2005-09-01的列,但这样查找可靠吗?

通过查看列的属性我们可以知道order_date的数据类型是datetime,这是指其存储的数据是日期加时间。

这个是其中存储的数据。例子中的时间全都是00:00:00,但实际并不可能是这样,这个时候order_date = '2005-09-01’就可能有些问题,我们的目的是查找日期在这一天的的列,这个时候我们就可以使用Date()函数。

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

还有一个例子是检索所有2005年九月下的订单。因为条件实际上有两个,一是2005年,还有一个是9月,我们可以使用and子句,因为Year()返回年份,Month()返回月份,即:

这个例子就可以检索所有2005年九月的订单。

更多日期和时间函数请查询:https://dev.mysql.com/doc/refman/8.0/en/date-and-time-type-syntax.html

数值处理函数

数值处理函数主要用于代数,统计数据。较为简单也易于理解。

下面是常用的数值处理函数。

更多的数值处理函数请查询: https://dev.mysql.com/doc/refman/8.0/en/mathematical-functions.html

MySQL必知必会5相关推荐

  1. MySQL必知必会教程:深入理解MySQL技术内幕

    2019独角兽企业重金招聘Python工程师标准>>> MySQL必知必会教程:深入理解MySQL技术内幕 作为最流行的开源数据库软件之一,MySQL数据库软件已经是广为人知了.当前 ...

  2. mysql必知必会_《MySQL必知必会》学习小结

    关于SQL,之前通过sqlzoo的题目,完成了入门,也仅仅是入门而已. 最近都在忙着投简历和找新的数据分析项目做(为了练python和面试的时候有的聊),所以SQL放了一段时间没练.目前的工作用不到, ...

  3. mysql正则表达式关键字_《MySQL必知必会》正则表达式

    <MySQL必知必会>正则表达式 正则表达式 1.1.关键字 REGEXP 正则表达式的使用需要用到关键字 REGEXP . select prod_name from products ...

  4. 《MySQL必知必会》所有SQL语句图表集合(可作为查询表使用)---已完结

    本篇文章是对<MySQL必知必会>所有语句知识点的图表集合,适合快速查询遗忘的SQL语句. 本文的脉络结构,首先先给出<MySQL必知必会>的目录和本书中用到的数据表的UML图 ...

  5. MYSQL必知必会学习笔记(二)

    MYSQL必知必会四-五章--检索.排序 书中部分代码展示: ##第四第五章 SELECT prod_name FROM products; /*从products表中检索一个叫prod_name的列 ...

  6. mysql必知必会学习笔记(一)

    MYSQL必知必会第三章--了解数据库和表 书中部分代码展示: CREATE DATABASE crashcourse; /*创建名为 crashcourse 的新数据库*/SHOW DATABASE ...

  7. mysql第四章分页显示查询出租房屋信息_MYSQL必知必会读书笔记第四章之检索数据...

    MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),MySQL数据库系统使用最常用的数据库管理语言--结构化查询语言(SQL)进行数据库管理. 使用Select语句返回的数据,可能会发现显 ...

  8. 《MySQL必知必会》[01] 基本查询

    <MySQL必知必会>(点击查看详情) 1.写在前面的话 这本书是一本MySQL的经典入门书籍,小小的一本,也受到众多网友推荐.之前自己学习的时候是啃的清华大学出版社的计算机系列教材< ...

  9. mysql必_MySQL必知必会(一)

    摘自<MySQL必知必会> 1.1.1 什么是数据库 数据库:保存有组织的数据的容器(通常是一个文件或一组文件) 人们通常用数据库这个术语来代表他们使用的数据库软件.这是不正确的,它是引起 ...

  10. mysql中用完即删用什么_MySQL使用和操作总结(《MySQL必知必会》读书笔记)

    简介 MySQL是一种DBMS,即它是一种数据库软件.DBMS可分为两类:一类是基于共享文件系统的DBMS,另一类是基于客户机--服务器的DBMS.前者用于桌面用途,通常不用于高端或更关键应用. My ...

最新文章

  1. hadoop 提高hdfs删文件效率----hadoop删除文件流程解析
  2. [快速数论变换 NTT]
  3. selinux禁用后系统无法正常启动的问题
  4. java 实现压缩单个文件
  5. 华为MatePad 11开启预售:鸿蒙OS加持 2499元起!
  6. IP与子网掩码的计算
  7. 关于嵌套类的调用更新问题
  8. Linux下模拟多线程的并发并发shell脚本
  9. 如何实现一个以中国为中心的世界地图
  10. 个人博客和微信公众号
  11. 第四百九十五日:念念不忘,必有回响
  12. 水晶报表的制作(图表)
  13. qq显示下线通知什么意思_qq下线通知是怎么回事
  14. 旅游公寓APP开发特点
  15. 运用程序化交易系统的能力表现在哪些方面?
  16. 绘图---PS使用教程总结(一)基本操作
  17. 南方周末:史玉柱脑白金式网游重建巨人(转载)
  18. Berkeley DB Java Edition Installation Notes(BDB JE安装教程)
  19. VNC CentOS Linux下VNC Server远程桌面配置详解
  20. android 动态进度条,Android实用view系列------炫酷的进度条

热门文章

  1. RFX2401C skyworks射频2.4GHZ ZIGBEE/ISM发射/接收RFeIC
  2. 基于Spring Aop及log4j2的MDC实现全链路调用跟踪(traceid)
  3. Python获取文件MD5
  4. 《那些年啊,那些事——一个程序员的奋斗史》——123
  5. iso文件用什么打开?还有iso是什么东西?
  6. 各位亲朋好友新春大吉
  7. 随笔2022.12.6
  8. 【LOJ】#3090. 「BJOI2019」勘破神机
  9. 影片推荐:《机械姬》
  10. 如何实现直播秒开技术?