7/7 SELECT语句:创建计算字段
计算字段:
存储在数据库表中的数据一般不是应用程序所需要的格式。比如:
- 如果想在一个字段中既显示公司名,又显示公司的地址,但这两个信息一般包含在不同的表列中;
- 城市、州和邮政编码存储在不同的列中(应该这样),但邮件标签打印程序却需要把它们作为一个恰当格式的字段检索出来;
- 列数据是大小写混合的,但报表程序需要把所有数据按大写表示出来;
- 物品订单表存储物品的价格和数量,但不需要存储每个物品的总价格(用价格乘以数量即可)。为打印发票,需要物品的总价格;
- 需要根据表数据进行总数、平均数计算或其他计算。
在上述每个例子中,存储在表中的数据都不是应用程序所需要的。我们需要直接从数据库中检索出转换、计算或格式化过的数据;而不是检索出数据,然后再在客户机应用程序或报告程序中重新格式化。
计算字段
并不实际存在于数据库表中,计算字段是运行时在SELECT语句
内创建的。
只有数据库知道SELECT语句
中哪些列是实际的表列,哪些列是计算字段。从客户机(如应用程序)的角度来看,计算字段的数据是以与其他列的数据相同的方式返回的。
序号 | 说明 | 操作 |
---|---|---|
1 | 拼接字段 |
Concat() 函数
|
2 | 使用别名 |
AS 关键字,顺序:AS —FROM —WHERE —ORDER BY —LIMIT
|
3 | 执行算术计算 |
+ 、- 、* 、/
|
4 | 删除多余空格 |
Trim() 、RTrim() 、LTrim()
|
以下为数据库SQLTEST
中的三张表,其结构和内容如下:
1. 拼接字段
拼接(concatenate):将值联结到一起构成单个值。
MySQL的不同之处:多数DBMS使用+
或||
来实现拼接,MySQL则使用Concat()函数
来实现。所以当把SQL语句转换成MySQL语句时一定要把这个区别铭记在心。
mysql> SELECT Concat(Stu_Name, '(', Class_id, ')')-> FROM t_stu_profile-> ORDER BY Class_id;
+--------------------------------------+
| Concat(Stu_Name, '(', Class_id, ')') |
+--------------------------------------+
| 郭东(0611) |
| 钱南(0611) |
| .test(0611) |
| 李西(0612) |
| test(0612) |
| 张北(0613) |
| 王五(0614) |
| 赵七(0615) |
+--------------------------------------+
2. 使用别名
SQL支持列别名。别名(alias)是一个字段或值得替换名,别名用
AS
关键字赋予;
顺序:AS
—FROM
—WHERE
—ORDER BY
—LIMIT
。
mysql> DELETE-> FROM t_stu_profile-> WHERE Stu_Name REGEXP 'test$';
mysql> INSERT t_stu_profile-> VALUES-> (7, ' test', 'F', 15, '0615'),-> (8, 'test ', 'M', 18, '0612 ');
mysql> SELECT Concat(LTrim(Stu_Name), '[', RTrim(Class_id), ']')-> AS new_stu_profile-> FROM t_stu_profile-> ORDER BY Class_id DESC;
+-----------------+
| new_stu_profile |
+-----------------+
| 赵七[0615] |
| test[0615] |
| 王五[0614] |
| 张北[0613] |
| test [0612] |
| 李西[0612] |
| 郭东[0611] |
| 钱南[0611] |
+-----------------+
3. 执行算术计算
计算字段的另一常见用途是对检索出的数据进行算术计算。
# 创建新表:orderitems
mysql> CREATE TABLE IF NOT EXISTS orderitems-> (prd_id TINYINT, quantity INT, item_price FLOAT);
mysql> INSERT orderitems-> VALUES-> (1, 10, 5.99),-> (2, 3, 9.99),-> (3, 5, 10.00),-> (4, 1, 10.00);
新添加一列
expanded_price
,用来计算总价(quantity*item_price
)。
mysql> SELECT prd_id,-> quantity,-> item_price,-> quantity*item_price AS expanded_price-> FROM orderitems;
+--------+----------+------------+--------------------+
| prd_id | quantity | item_price | expanded_price |
+--------+----------+------------+--------------------+
| 1 | 10 | 5.99 | 59.89999771118164 |
| 2 | 3 | 9.99 | 29.969999313354492 |
| 3 | 5 | 10 | 50 |
| 4 | 1 | 10 | 10 |
+--------+----------+------------+--------------------+
4. 删除多余空格
Trim()函数
可去掉串左右两边的空格;RTrim()函数
可去掉值右边的空格;LTrim()函数
可去掉值左边的空格。
mysql> SELECT Concat(LTrim(Stu_Name), '[', RTrim(Class_id), ']')-> FROM t_stu_profile-> ORDER BY Class_id DESC;
+----------------------------------------------------+
| Concat(LTrim(Stu_Name), '[', RTrim(Class_id), ']') |
+----------------------------------------------------+
| 赵七[0615] |
| test[0615] |
| 王五[0614] |
| 张北[0613] |
| test [0612] |
| 李西[0612] |
| 郭东[0611] |
| 钱南[0611] |
+----------------------------------------------------+
7/7 SELECT语句:创建计算字段相关推荐
- mysql中将某个字段做计算,mysql创建计算字段使用子查询教程
作为计算字段使用子查询 使用子查询的另一方法是创建计算字段.假如需要显示 customers表中每个客户的订单总数.订单与相应的客户ID存储在 orders 表中. 为了执行这个操作,遵循下面的步骤. ...
- mysql拼接两个字段_重拾MySQL之创建计算字段和函数
一.计算字段 有时候,数据库中的数据格式不一定是使用所需要的数据格式,需要对原数据进行拼接.裁剪.计算等操作,这时就要创建计算字段. 1 拼接 顾名思义,拼接就是将原属于表中两个列的字段拼成一个列,在 ...
- Tableau创建计算字段
问题:Tableau可视化图表呈现每日新增用户情况 解决:根据数据结构创建计算字段,写出函数判断 1.Tableau左下角度量区域,右键创建计算字段,命名为新增用户 2.右键新增用户,编辑函数判断 C ...
- tableau创建计算字段,进行年龄段分类
分析-创建计算字段,可对字段进行计算 if (DATEDIFF('year',[birthday],NOW()) <=18) then '未成年' ELSEIF ( 19<=DATEDIF ...
- Excel 数据透视表教程大全之 08 创建计算字段,将销售额除以数量实现计算每种产品单价(教程含数据)
标准数据透视表具有创建计算字段的简单功能.您可以将计算字段视为源数据中的虚拟列.计算字段将出现在字段列表窗口中,但不会占用源数据中的空间.在所示示例中,已使用将销售额除以数量的公式创建了一个名为&qu ...
- Day-6:创建计算字段
字段:基本上与列的意思相同,经常互换使用,计算字段是运行时在SELECT语句内创建的,不实际存在于数据库表中. 拼接字段:将值联结到一起构成单个值 SQL中的SELECT语句中可以使用+或||操作符拼 ...
- mysql字段自动计算_MySQL创建计算字段
概述 存储在数据库表中的数据一般不是应用程序所需要的格式.这时候计算字段就发挥作用了.与前面各章介绍过的列不同,计算字段并不实际存在于数据库表中.计算字段是运行在SELECT语句内创建的. 可在SQL ...
- MySQL必知必会03_创建计算字段和拼接字段
通常,存储在表中的数据都不是应用程序所需要的.我们需要直接从数据库中检索出转换.计算或格式化过的数据:而不是 检索出数据,然后再在客户机应用程序或报告程序中重新格式化计算字段并不实际存在于数据库表中. ...
- SQL 必知必会·笔记5创建计算字段
字段(field) 基本上与列(column)的意思相同,经常互换使用,不过数据库列一 般称为列,而术语字段通常与计算字段一起使用. 拼接(concatenate) 将值联结到一起(将一个值附加到另一 ...
最新文章
- 对于注册中心,ZooKeeper、Eureka 哪个更合适?
- 开发者欣慰:苹果表软件圣诞表现不错
- CentOS查看已挂载的文件系统和文件系统信息
- J2EE的13个规范总结
- php数据结构链表代码,数据结构之线性表——链式存储结构之单链表(php代码实现)...
- 成功解决ImportError: [joblib] Attempting to do parallel computing without protecting your import on a sy
- 用键盘怎么直接打出小于等于和大于等于
- Class.getResource和ClassLoader.getResource的区别分析
- HTML--HTML对象的关于位置和大小的属性的图解
- 初中毕业学计算机在哪学,初中毕业要学计算机要去哪个里学呢
- android 360相机,相机360app安卓版
- 第五章 基于时序差分和Q学习的无模型预测与控制-强化学习理论学习与代码实现(强化学习导论第二版)
- LinUX接收蓝牙音频,Win10 v2004已重新支持蓝牙A2DP音频串流接收功能
- Windows 11 中打印时提示打印机不兼容,都来是“+”惹的祸
- Linux内存从0到1学习笔记(9.4,内存优化调试之使用page_owner分析内存黑洞)
- 无线网络部署与规划要点及案例分享
- 聊聊那些我们不应该被百度惯坏的搜索技巧
- 【图像修复】基于滤波实现损坏图像修复含Matlab源码
- UE4使用OpenCV插件调用电脑摄像头
- 阿里云技术大咖分享新内容新交互时代下的新技术、新机会
热门文章
- java命令主动清空jvm_JVM史上最全实践优化没有之一
- 大学生创业交流会计算机二级,我校召开第三届“互联网+”大学生创新创业大赛选题交流讨论会...
- 最小二乘多项式拟合程序matlab,最小二乘法的多项式拟合(matlab实现)
- web项目怎么连接云服务器,web项目怎么连接云服务器
- mysql 服务器性能,mysql服务器性能配置
- django防止csrf跨域伪造攻击
- Hibernate 注解配置
- spring mvc hello
- [Machine learning] 国外程序员整理的机器学习资源大全
- 《leetcode》spiral-matrix-ii(构造螺旋矩阵)