SQL | 计算字段

7-创建计算字段

7.1-计算字段

存储在数据库中的数据一般不是我们所需要的字段格式,

  • 需要公司名称,同时也需要公司地址,但是这两个数据存储在不同的列中。

  • 省,市,县和邮政编码存储在不同的列中,但是当我们需要发快递时,需要将他们组合在一起。

  • 某一列的数据是大小写混写的,但是偶尔我们需要全部大写输出。

  • 商品信息存储时,我们一般存储的有商品的数量,商品的总价,但是打印发票时我们需要知道商品的总价格。

  • 例如,总数,平均数的计算等等。

上述这些例子,都不是应用程序应该做的事情,只需要我们检索时,经过转换,计算过的数据即可。这就是计算字段可以派上的用场。

字段,与列是相同的概念,经常互换使用,不过数据库列一般称为列,而字段这个术语通常在计算字段这种场合下使用。

需要特别注意,只有数据库知道select语句中,哪些列是实际的数据库表列,哪些列为计算字段。但是从客户端看,计算字段和数据库表列是一样的。

在SQL语句内可完成的许多转换和格式化工作都可以直接在客户端应用程序内完成。但一般来说,在数据库服务器上完成这些操作比在客户端中完成要快得多

7.2-拼接字段

例如:Vendors表包含供应商名和地址信息。假如要生成一个供应商报表,需要在格式化的名称(位置)中列出供应商的位置。

此报表需要一个值,而表中数据存储在两个列vend_name和vend_country中。此外,需要用括号将vend_country括起来,这些东西都没有存储在数据库表中。

拼接:将值联结到一起(将一个值附加到另一个值)构成单个值

解决办法是把两个列拼接起来。在SQL中的SELECT语句中,可使用一个特殊的操作符来拼接两个列。根据你所使用的DBMS,此操作符可用加号(+)或两个竖杠(||)表示,SQL Server使用+号。DB2、Oracle、PostgreSQL和SQLite使用||。在MySQL和MariaDB中,必须使用特殊的函数

使用加号(+)的例子:

SELECT vend_name + '(' + vend_country + ')'
FROM Vendors
ORDER BY vend_name;

使用两个竖杠(||)的例子:

SELECT vend_name || '(' || vend_country || ')'
FROM Vendors
ORDER BY vend_name;

MySQLMariaDB时需要使用的语句:

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

由结果可以知道,上述语句先取出存储在vend_name中的名称,然后取出vend_country中的国家,然后使用Concat函数进行拼接,拼接后就会输出上述结果。

注意:有些(并不是所有数据库)数据库进行拼接的时候,会输出为列宽,也就是会多很多空格,所以我们需要使用SQL的RTRIM()函数来处理多余的空格。RTRIM()函数去掉值右边的所有空格。

例如:SELECT vend_name + '(' + RTRIM(vend_country) + ')'

TRIM函数:大多数DBMS都支持RTRIM()(正如刚才所见,它去掉字符串右边的空格)、LTRIM()(去掉字符串左边的空格)以及TRIM()(去掉字符串左右两边的空格)。

7.2.1 使用别名

SQL支持列别名。别名(alias)是一个字段或值的替换名。别名用AS关键字赋予。

select Concat(vend_name,'(',vend_country,')')
as vend_title
from vendors
order vend_name;

查询到的列会将列名设置为vend_title

AS: as子句是可选的,但是如果有计算字段和拼接字段出现的时候,最好使用它,这被视为一条最佳实践。

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

别名 别名的名字既可以是一个单词,也可以是一个字符串,可读性太差,无论是取别名还是取字段名应当见名知意。如果是后者,字符串应该括在引号中。虽然这种做法是合法的,但不建议这么去做。多单词的名字可读性高,不过会给客户端应用带来各种问题。因此,别名最常见的使用是将多个单词的列名重命名为一个单词的名字。

导出列 别名有时候也被称为导出列,代表的是相同的东西。

7.3-使用算术计算

计算字段另一个用途是对检索出的字段进行算术计算。Orders表包含收到的所有订单,OrderItems表包含每个订单中的各项物品。

select prod_id,quantity,item_price
from orderitems
where order_num = 20008;

 

上述SQL语句检索订单号为20008的所有订单。

检索到的数据中,item_price为商品单价,如果想要计算每种产品的总价。

select prod_id,quantity,item_price,quantity*item_price as total
from orderitems
where order_num = 20008;

 

 

通过数量×单价=总价,就可以得到每种产品的总价值。

SQL支持的基本操作符:

如何测试计算 SELECT语句为测试、检验函数和计算提供了很好的方法。虽然SELECT通常用于从表中检索数据,但是省略了FROM子句后就是简单地访问和处理表达式,例如SELECT 3 * 2;将返回6,SELECT Trim(' abc ');将返回abc,SELECT Curdate();使用Curdate()函数返回当前日期和时间。现在你明白了,可以根据需要使用SELECT语句进行检验。

练习

  1. 别名的常见用法是在检索出的结果中重命名表的列字段(为了符合特定的报表要求或客户需求)。编写SQL语句,从Vendors表中检索vend_id、vend_name、vend_address和vend_city,将vend_name重命名为vname,将vend_city重命名为vcity,将vend_address重命名为vaddress。按供应商名称对结果进行排序(可以使用原始名称或新的名称)。

    select vend_id,vend_name as vname,vend_address as vaddress,vend_city as vcity
    from vendors
    order by vname;

     

  2. 我们的示例商店正在进行打折促销,所有产品均降价10%。编写SQL语句,从Products表中返回prod_id、prod_price和sale_price。sale_price是一个包含促销价格的计算字段。提示:可以乘以0.9,得到原价的90%(即10%的折扣)。

    select prod_id,prod_price,prod_price*0.9 as sale_price
    from products;

     

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/86896.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

keil下载程序具体过程:概述

一、前言 keil下载程序具体过程将由一系列的博客组成,将深入探讨keil这种IDE下载镜像文件时具体做了哪些事情。我们平常下载镜像的时候,只是点击了一下Download按钮,剩下的都由keil替代我们完成了。本系列博客将揭示这一过程,keil…

事件循环原理

事件循环 浏览器的进程模型 何为进程? 程序运行需要有它自己专属的内存空间,可以把这块内存空间简单的理解为进程 每个应用至少有一个进程,进程之间相互独立,即使要通信,也需要双方同意。 何为线程? 有…

【Kafka】1.Kafka简介及安装

目 录 1. Kafka的简介1.1 使用场景1.2 基本概念 2. Kafka的安装2.1 下载Kafka的压缩包2.2 解压Kafka的压缩包2.3 启动Kafka服务 1. Kafka的简介 Kafka 是一个分布式、支持分区(partition)、多副本(replica)、基于 zookeeper 协调…

【图像恢复】基于交替乘子方法(ADMM)图像恢复算法研究[固定点收敛和应用](Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

HarmonyOS/OpenHarmony应用开发-ArkTS语言渲染控制概述

ArkUI通过自定义组件的build()函数和builder装饰器中的声明式UI描述语句构建相应的UI。 在声明式描述语句中开发者除了使用系统组件外,还可以使用渲染控制语句来辅助UI的构建,这些渲染控制语句包括控制组件是否显示的条件渲染语句,基于数组数…

Xcode 基座打包

Xcode基座打包-APP更新版本内容无效 问题:解决: 问题: 使用xcode基座打包之后,上传到appstore进行提审发布。 用户在appstore商城进行更新下载,打开更新后的APP发现版本号是最新的,APP里面的其他内容还是上…

linux环形缓冲区kfifo实践2:配合等待队列使用

基础 struct __wait_queue_head {spinlock_t lock;struct list_head task_list; }; typedef struct __wait_queue_head wait_queue_head_t; 初始化等待队列:init_waitqueue_head 深挖init_waitqueue_head宏的定义可知,传递给它的参数q是一个wait_queu…

docker删除容器时报错:Error response from daemon: reference does not exist

前言 之前使用的docker版本太低了,升级高版本docker之后的错误。 低版本docker(1.30.1)中的镜像有:golang、mysql,将docker升级为24.0.5并新拉取mysql最新版本之后,执行docker images命令,发现…

【面试专题】Java核心基础篇①

📃个人主页:个人主页 🔥系列专栏:Java面试专题 目录 1.面向对象的三大特性?分别解释下? 2.介绍一下Java的数据类型 3.说一说重写与重载的区别 4.说一说你对static关键字的理解 5.static修饰的类能不能…

neo4j查询语言Cypher详解(二)--Pattern和类型

Patterns 图形模式匹配是Cypher的核心。它是一种用于通过应用声明性模式从图中导航、描述和提取数据的机制。在MATCH子句中,可以使用图模式定义要搜索的数据和要返回的数据。图模式匹配也可以在不使用MATCH子句的情况下在EXISTS、COUNT和COLLECT子查询中使用。 图…

百川智能发布首个530亿参数闭源大模型,今年追上GPT-3.5

4月官宣创业,6月15日发布第一款7B开源模型,7月11日发布第二款13B、130亿参数开源模型。 平均保持2个月一个版本发布速度,8月8日,百川智能发布了创业以来的首个530亿参数闭源大模型——Baichuan-53B(以下简称“53B”&a…

(十五)大数据实战——hive的安装部署

前言 Hive是由Facebook开源,基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张表,并提供类SQL查询功能。本节内容我们主要介绍一下hive的安装与部署的相关内容。 正文 上传hive安装包到hadoop101服务器/opt/software目录 解…

承接各种设计

小弟985研究生毕业,目前攻读读博士,可做各种设计,包括但不限于Matlab 电力电子/电气工程,matlab/simulink 电气专业仿真MATLAB 电气工程专业,matlab建模 电力电子,电气工程,电力系统&#xff0c…

一文读懂什么是Byzer

目录 一、什么是Byzer? 二、Byzer特性 2.1 语法特性 2.2 数据的管理特性 2.3 支持自定义函数拓展Byzer语法 三、Byzer有哪些功能? 3.1 Byzer-Lang语言特性 3.1.1强大的数据处理能力 3.1.2内置机器学习算法 3.2 Byzer-Lang支持权限控制 3.3 Byzer-LLM拓展…

Stable Diffusion AI绘图教学

课程介绍下载 这门课程将教授学生使用Stable Diffusion AI绘图工具进行数据可视化和图形设计。学生将学习基本的绘图原理、数据分析技巧,以及如何使用Stable Diffusion AI创建高质量的图表和可视化作品。通过实践项目和案例研究,学生将提升绘图技能&…

通过easyui实现动态控制表格字段显示、导出表格数据

前言 学过layui前端框架的都知道,layui默认帮我们实现了控制表格字段显示以及数据的导出功能。 1、控制表格字段显示 2、数据导出 3、导出为pdf:导出按钮的右边那个按钮就是打印pdf的 那么,easyui要怎么实现这些功能呢?这篇文章就…

上市公司绿色发展专题:重污染行业企业名单与绿色创新数据

数据简介:上市公司,尤其是重污染行业上市公司实现绿色发展,广泛开展绿色创新,是我国高质量发展的必然要求,受到了来自学界与各级ZF的诸多关注。现有研究中对上市公司绿色发展问题的研究发现,重污染行业上市…

Jenkins 修改默认管理员帐号

1、新增一个新的超级管理员用户,并验证能正常登录 2、进入 Jenkins 用户管理目录: /data/software/jenkins/users 3、修改超级管理文件夹的名称为其他名称,如:mv admin_*** ifadm_*** 4、重启Jenkins容器

使用RecyclerView构建灵活的列表界面

使用RecyclerView构建灵活的列表界面 1. 引言 在现代移动应用中,列表界面是最常见的用户界面之一,它能够展示大量的数据,让用户可以浏览和操作。无论是社交媒体的动态流、商品展示、新闻列表还是任务清单,列表界面都扮演着不可或…

SpringMVC 的基本概念(一)

1.1 关于三层架构和 MVC 1.1.1 三层架构 我们的开发架构一般都是基于两种形式,一种是 C/S 架构,也就是客户端 / 服务器,另一种是 B/S 架构,也就 是浏览器服务器。在 JavaEE 开发中,几乎全都是基于 B/S 架构…