mysql必知必会--创建计算字段
计算字段
存储在数据库表中的数据一般不是应用程序所需要的格式。下面举
几个例子。
* 如果想在一个字段中既显示公司名,又显示公司的地址,但这两
个信息一般包含在不同的表列中。
* 城市、州和邮政编码存储在不同的列中(应该这样),但邮件标签
打印程序却需要把它们作为一个恰当格式的字段检索出来。
* 列数据是大小写混合的,但报表程序需要把所有数据按大写表示
出来。
* 物品订单表存储物品的价格和数量,但不需要存储每个物品的总
价格(用价格乘以数量即可)。为打印发票,需要物品的总价格。
* 需要根据表数据进行总数、平均数计算或其他计算。
在上述每个例子中,存储在表中的数据都不是应用程序所需要的。
我们需要直接从数据库中检索出转换、计算或格式化过的数据;而不是
检索出数据,然后再在客户机应用程序或报告程序中重新格式化。
这就是计算字段发挥作用的所在了。与前面各章介绍过的列不同,
计算字段并不实际存在于数据库表中。计算字段是运行时在 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必知必会--创建计算字段的更多相关文章
- SQL 必知必会·笔记<5>创建计算字段
字段(field) 基本上与列(column)的意思相同,经常互换使用,不过数据库列一 般称为列,而术语字段通常与计算字段一起使用. 拼接(concatenate) 将值联结到一起(将一个值附加到另一 ...
- SQL必知必会 -------- 通配符、计算字段、函数
1.LIKE操作符 1.1百分号(%)通配符 SELECT prod_id, prod_name FROM Products WHERE prod_name LIKE 'Fish%' 此例子使用了搜索 ...
- 《mysql必知必会》笔记1(检索、排序、过滤、计算、汇聚、分组)
一:了解SQL 1:列是表中的字段,所有表都由一个或多个列组成的.行是表中的记录,表中的数据都按行存储. 2:表中每一行都应该有可以唯一标识自己的一列或一组列.主键(一列或一组列),其值能够唯一区分每 ...
- 《MySQL 必知必会》读书总结
这是 <MySQL 必知必会> 的读书总结.也是自己整理的常用操作的参考手册. 使用 MySQL 连接到 MySQL shell>mysql -u root -p Enter pas ...
- 《MySQL必知必会》[01] 基本查询
<MySQL必知必会>(点击查看详情) 1.写在前面的话 这本书是一本MySQL的经典入门书籍,小小的一本,也受到众多网友推荐.之前自己学习的时候是啃的清华大学出版社的计算机系列教材< ...
- mysql必知必会
春节放假没事,找了本电子书mysql必知必会敲了下.用的工具是有道笔记的markdown文档类型. 下面是根据大纲已经敲完的章节,可复制到有道笔记的查看,更美观. # 第一章 了解SQL## 什么是S ...
- 《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 ...
- 读《MySql必知必会》笔记
MySql必知必会 2017-12-21 意义:记录个人不注意的,或不明确的,或不知道的细节方法技巧,此书250页 登陆: mysql -u root-p -h myserver -P 9999 SH ...
- 读《MySQL必知必会》我学到了什么?
前言 最近在写项目的时候发现自己的SQL基本功有些薄弱,遂上知乎查询MYSQL关键字,期望得到某些高赞答案的指点,于是乎发现了 https://www.zhihu.com/question/34840 ...
随机推荐
- 通过Excel表创建sql脚本
Excel.sql脚本 1)准备好存有数据的excel表格: 这里我们有些小技巧可以让表下面和右边的表格隐藏,在第8行的位置按住“Ctrl+Shift+↓”可以选定下面的空格,然后鼠标右键 隐藏即可, ...
- IO系统-基本知识
注:本文档主要整理了Linux下IO系统的基本知识,是整理的网易云课堂的学习笔记,老师讲得很不错,链接如下:Linux IO系统 1.Linux操作系统的基本构成 内核:操作系统的核心,负责管理系统的 ...
- 创建dynamics CRM client-side (十二) - HTML Web Resource
HTML Web Resource是我们经常使用的一个功能. 第一步, 我们先创建好一个HTML. 接下来,我们要在web resource中创建新的html web resource. 我们在tex ...
- Shell常用命令之curl
curl命令 在Linux中curl是一个利用URL规则在命令行下工作的文件传输工具,可以说是一款很强大的http命令行工具.它支持文件的上传和下载,是综合传输工具,但按传统,习惯称url为下载工具. ...
- day03_流程控制语句
day03_流程控制语句 建议: 凡是次数确定的场景多用for循环,否则用while循环. 三元运算符 由?:符号表示的,具体的含义其实就和if-else结构的含义差不多,这种运算符会将某个条 ...
- SUSE Linux Enterprise 11 离线安装 DLIB 人脸识别 python机器学习模块
python机器学习模块安装 我的博客:http://www.cnblogs.com/wglIT/p/7525046.html 环境:SUSE Linux Enterprise 11 sp4 离线安 ...
- String、StringBuilder、StringBuffer区别
=====================================String=================================★1.它在java.lang包中.String类 ...
- LR中解决接口请求中包含中文字符,服务器不识别的问题
在LR中,直接写的接口请求,如果请求字段包含中文字段,服务器会不识别,这个时候就要用到lr_convert_string_encoding这个函数: 具体用法: lr_convert_string_e ...
- 如何优雅的将Mybatis日志中的Preparing与Parameters转换为可执行SQL
原文链接 疫情期间大家宅在家里是不是已经快憋出“病”了~~ 公司给开了VPN,手机电脑都能连,手机装上APP测试包,就能干活了,所以walking从2020.02.01入京以来,已经窝在家里11天 ...
- Codeforces 1296F Berland Beauty
题目链接:http://codeforces.com/problemset/problem/1296/F 思路: 1————2————3————4————5————6 1->3 2 2-> ...