计算字段

存储在数据库表中的数据一般不是应用程序所需要的格式。下面举
几个例子。
* 如果想在一个字段中既显示公司名,又显示公司的地址,但这两
个信息一般包含在不同的表列中。
* 城市、州和邮政编码存储在不同的列中(应该这样),但邮件标签
打印程序却需要把它们作为一个恰当格式的字段检索出来。
* 列数据是大小写混合的,但报表程序需要把所有数据按大写表示
出来。
* 物品订单表存储物品的价格和数量,但不需要存储每个物品的总
价格(用价格乘以数量即可)。为打印发票,需要物品的总价格。
* 需要根据表数据进行总数、平均数计算或其他计算。
在上述每个例子中,存储在表中的数据都不是应用程序所需要的。
我们需要直接从数据库中检索出转换、计算或格式化过的数据;而不是
检索出数据,然后再在客户机应用程序或报告程序中重新格式化。
这就是计算字段发挥作用的所在了。与前面各章介绍过的列不同,
计算字段并不实际存在于数据库表中。计算字段是运行时在 SELECT 语句
内创建的。

字段(field) 基本上与列(column)的意思相同,经常互换使
用,不过数据库列一般称为列,而术语字段通常用在计算字段的
连接上。
重要的是要注意到,只有数据库知道 SELECT 语句中哪些列是实际的
表列,哪些列是计算字段。从客户机(如应用程序)的角度来看,计算
字段的数据是以与其他列的数据相同的方式返回的。

客户机与服务器的格式 可在SQL语句内完成的许多转换
和格式化工作都可以直接在客户机应用程序内完成。但一
般来说,在数据库服务器上完成这些操作比在客户机中完
成要快得多,因为DBMS是设计来快速有效地完成这种处
理的。

拼接字段

拼接(concatenate) 将值联结到一起构成单个值。
解决办法是把两个列拼接起来。在MySQL的 SELECT 语句中,可使用
Concat() 函数来拼接两个列

MySQL的不同之处 多数DBMS使用 + 或 || 来实现拼接,
MySQL则使用 Concat() 函数来实现。当把SQL语句转换成
MySQL语句时一定要把这个区别铭记在心。

Concat() 拼接串,即把多个串连接起来形成一个较长的串。
Concat() 需要一个或多个指定的串,各个串之间用逗号分隔。
上面的 SELECT 语句连接以下4个元素:

  • 存储在 vend_name 列中的名字;
  • 包含一个空格和一个左圆括号的串;
  • 存储在 vend_country 列中的国家;
  • 包含一个右圆括号的串。
    从上述输出中可以看到, SELECT 语句返回包含上述4个元素的单个列
    (计算字段)。

通过删除数据右侧多余的空格来整理数据,这可以
使用MySQL的 RTrim() 函数来完成,如下所示:

Trim 函数 MySQL除了支持 RTrim() (正如刚才所见,它去掉
串右边的空格),还支持 LTrim() (去掉串左边的空格)以及
Trim() (去掉串左右两边的空格)。

使用别名

从前面的输出中可以看到, SELECT 语句拼接地址字段工作得很好。
但此新计算列的名字是什么呢?实际上它没有名字,它只是一个值。如
果仅在SQL查询工具中查看一下结果,这样没有什么不好。但是,一个未
命名的列不能用于客户机应用中,因为客户机没有办法引用它。
为了解决这个问题,SQL支持列别名。别名(alias)是一个字段或值
的替换名。别名用 AS 关键字赋予。请看下面的 SELECT 语句

SELECT 语句本身与以前使用的相同,只不过这里的语句中计算
字段之后跟了文本 AS vend_title 。它指示SQL创建一个包含
指定计算的名为 vend_title 的计算字段。从输出中可以看到,结果与以
前的相同,但现在列名为 vend_title ,任何客户机应用都可以按名引用
这个列,就像它是一个实际的表列一样

别名的其他用途 别名还有其他用途。常见的用途包括在实际
的表列名包含不符合规定的字符(如空格)时重新命名它,在
原来的名字含混或容易误解时扩充它,等等

导出列 别名有时也称为导出列(derived column),不管称为
什么,它们所代表的都是相同的东西

执行算术计算

计算字段的另一常见用途是对检索出的数据进行算术计算

如何测试计算 SELECT 提供了测试和试验函数与计算的一个
很好的办法。虽然 SELECT 通常用来从表中检索数据,但可以
省略 FROM 子句以便简单地访问和处理表达式。例如, SELECT
3*2; 将返回 6 , SELECT Trim('abc'); 将返回 abc ,而 SELECT
Now() 利用 Now() 函数返回当前日期和时间。通过这些例子,
可以明白如何根据需要使用 SELECT 进行试验。

本章介绍了计算字段以及如何创建计算字段。我们用例子说明了计
算字段在串拼接和算术计算的用途。此外,还学习了如何创建和使用别
名,以便应用程序能引用计算字段。

mysql必知必会--创建计算字段的更多相关文章

  1. SQL 必知必会·笔记<5>创建计算字段

    字段(field) 基本上与列(column)的意思相同,经常互换使用,不过数据库列一 般称为列,而术语字段通常与计算字段一起使用. 拼接(concatenate) 将值联结到一起(将一个值附加到另一 ...

  2. SQL必知必会 -------- 通配符、计算字段、函数

    1.LIKE操作符 1.1百分号(%)通配符 SELECT prod_id, prod_name FROM Products WHERE prod_name LIKE 'Fish%' 此例子使用了搜索 ...

  3. 《mysql必知必会》笔记1(检索、排序、过滤、计算、汇聚、分组)

    一:了解SQL 1:列是表中的字段,所有表都由一个或多个列组成的.行是表中的记录,表中的数据都按行存储. 2:表中每一行都应该有可以唯一标识自己的一列或一组列.主键(一列或一组列),其值能够唯一区分每 ...

  4. 《MySQL 必知必会》读书总结

    这是 <MySQL 必知必会> 的读书总结.也是自己整理的常用操作的参考手册. 使用 MySQL 连接到 MySQL shell>mysql -u root -p Enter pas ...

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

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

  6. mysql必知必会

    春节放假没事,找了本电子书mysql必知必会敲了下.用的工具是有道笔记的markdown文档类型. 下面是根据大纲已经敲完的章节,可复制到有道笔记的查看,更美观. # 第一章 了解SQL## 什么是S ...

  7. 《MySQL必知必会》整理

    目录 第1章 了解数据库 1.1 数据库基础 1.1.1 什么是数据库 1.1.2 表 1.1.3 列和数据类型 1.1.4 行 1.1.5 主键 1.2 什么是SQL 第2章 MySQL简介 2.1 ...

  8. 读《MySql必知必会》笔记

    MySql必知必会 2017-12-21 意义:记录个人不注意的,或不明确的,或不知道的细节方法技巧,此书250页 登陆: mysql -u root-p -h myserver -P 9999 SH ...

  9. 读《MySQL必知必会》我学到了什么?

    前言 最近在写项目的时候发现自己的SQL基本功有些薄弱,遂上知乎查询MYSQL关键字,期望得到某些高赞答案的指点,于是乎发现了 https://www.zhihu.com/question/34840 ...

随机推荐

  1. 趣学CCNA 路由与交换

    第1章 OSI和TCP/IP 11.1 协议与协议分层 31.2 OSI参考模型 61.2.1 物理层 91.2.2 数据链路层 91.2.3 网络层 101.2.4 传输层 101.2.5 会话层 ...

  2. selenium,统计某分支下有多少个同类子分支的方法(用于循环获取同类型子分支属性值)

    利用selenium自动化统计微博阅读数 查看微博阅读数的元素路径 微博列表中第一条微博的元素路径“//*[@id="Pl_Official_MyProfileFeed__20"] ...

  3. DFS或BFS(深度优先搜索或广度优先搜索遍历无向图)-04-无向图-岛屿数量

    给定一个由 '1'(陆地)和 '0'(水)组成的的二维网格,计算岛屿的数量.一个岛被水包围,并且它是通过水平方向或垂直方向上相邻的陆地连接而成的.你可以假设网格的四个边均被水包围. 示例 1: 输入: ...

  4. libc.so.6修改链接指向后导致系统无法使用的原因及解决方法

    https://www.cnblogs.com/weijing24/p/5890031.html http://man.linuxde.net/ldconfig

  5. nginx文件压缩

    nginx文件压缩 如果我们租用了一个带宽很低的服务器,网站访问速度会很慢,这时我们可以通过让nginx开启GZIP压缩来提高网站的访问速度. 首先我们对nginx进行限速操作,限制每个连接的访问速度 ...

  6. docker启动redis端口映射错误问题解决

    今天使用docker安装redis,使用的时候出现了一些问题.第一次安装好后,在虚拟机后台启动了redis,然后在连接虚拟机的redis的时候怎么也连不上.出现这种情况我第一反应是防火墙没有开启所以我 ...

  7. JDK源码之StringBuffer与StringBuilder类分析

    一 概述 StringBuffer类被 final 所修饰,不能被继承,StringBuffer继承了AbstractStringBuilder类, 是一个可变的字符序列,并且类中方法都有synchr ...

  8. 【WPF学习】第三十五章 资源字典

    如果希望在多个项目之间共享资源,可创建资源字典.资源字典只是XAML文档,除了存储希望使用的资源外,不做其他任何事情. 一.创建资源字典 下面是一个资源字典示例,它包含一个资源: <Resour ...

  9. 死磕mysql(2)

    想测试自己的查询语句,导入批量的数据,一开始很慢以为是自己的语句有问题,后来是这个autocommit,效率相差好多好多............ delimiter // create procedu ...

  10. HDU_3853_概率dp

    http://acm.hdu.edu.cn/showproblem.php?pid=3853 又因为总期望为子期望的加权和,加权因子为子期望的转移概率,所以得到:dp[ i ][ j ]= p1 * ...