《SQL必知必会》| 第7-8课 创建计算字段、使用函数处理数据 学习笔记

时光总嘲笑我的痴心妄想 提交于 2020-01-28 13:03:33

第7课 创建计算字段

这一课介绍什么是计算字段,如何创建计算字段,以及如何从应用程序中使用别名引用它们。

7.1 计算字段

我们需要直接从数据库中检索出转换、计算或格式化过的数据,而不是检索出数据,然后再在客户端应用程序中重新格式化。

提示:客户端与服务端的格式

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

  • 计算字段并不实际存在于数据库表中。
  • 计算字段是运行时在SELECT语句内创建的。
  • 只有数据库知道SELECT语句中哪些列是实际的表列,哪些列是计算字段

7.2 拼接字段

拼接concatenate

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

  • 根据你所使用的DBMS,此操作符可用加号+或两个竖杠||表示。
  • MySQLMariaDB中,必须使用特殊的函数。
说明:是+还是||?
  • AccessSQL Server使用+号。
  • DB2OraclePostgreSQLSQLiteOpen Office Base使用||
SELECT vend_name + ' (' + vend_country + ')'
FROM Vendors
ORDER BY vend_name;

下面是使用MySQLMariaDB时需要使用的语句:

SELECT Concat(vend_name, ' (', vend_country, ')')
FROM Vendors
ORDER BY vend_name;
说明:TRIM()函数

大多数DBMS都支持TRIM()函数。
RTRIM()去掉字符串右边的空格。
LTRIM()去掉字符串左边的空格。
TRIM()去掉字符串左右两边的空格。

使用别名

别名alias是一个字段或值的替换名。别名AS关键字赋予。

说明:AS通常可选

在很多DBMS中,AS关键字是可选的,不过最好使用它,这被视为一条最佳实践。

提示:别名的其他用途

别名还有其他用途。

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

别名的名字既可以是一个单词,也可以是一个字符串。

  • 如果是后者,字符串应该括在引号中。虽然这种做法是合法的,但不建议这么去做。多单词的名字可读性高,不过会给客户端应用带来各种问题。
  • 因此,别名最常见的使用是将多个单词的列名重命名为一个单词的名字。
说明:导出列

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

7.3 执行算术计算

提示:如何测试计算

SELECT语句为测试、检验函数和计算提供了很好的方法。
虽然SELECT通常用于从表中检索数据,但是省略了FROM子句后就是简单地访问和处理表达式,例如:

  • SELECT 3 * 2;将返回6。
  • SELECT Trim(' abc ');将返回abc。
  • SELECT Now();使用Now()函数返回当前日期和时间。

现在你明白了,可以根据需要使用SELECT语句进行检验。


第8课 使用函数处理数据

这一课介绍了什么是函数,DBMS支持何种函数,以及如何使用这些函数;这些函数在格式化、处理和过滤数据中非常有用。还将讲解为什么SQL函数的使用可能会带来问题。在各种SQL实现中很不一致。

8.1 函数

每一个DBMS都有特定的函数。

DBMS函数的差异

在这里插入图片描述

可移植portable

所编写的代码可以在多个系统上运行。

8.2 使用函数

  • 用于处理文本字符串(如删除或填充值,转换值为大写或小写)的文本函数。
  • 用于在数值数据上进行算术操作(如返回绝对值,进行代数运算)的数值函数。
  • 用于处理日期和时间值并从这些值中提取特定成分(如返回两个日期之差,检查日期有效性)的日期和时间函数。
  • 返回DBMS正使用的特殊信息(如返回用户登录信息)的系统函数。
8.2.1 文本处理函数

在这里插入图片描述
SOUNDEX是一个将任何文本串转换为描述其语音表示的字母数字模式的算法。SOUNDEX考虑了类似的发音字符和音节,使得能对字符串进行发音比较而不是字母比较。虽然SOUNDEX不是SQL概念,但多数DBMS都提供对SOUNDEX的支持。

说明:SOUNDEX支持

Microsoft AccessPostgreSQL不支持SOUNDEX(),因此以下的例子不适用于这些DBMS
另外,如果在创建SQLite时使用了SQLITE_SOUNDEX编译时选项,那么SOUNDEX()SQLite中就可用。因为SQLITE_SOUNDEX不是默认的编译时选项,所以多数SQLite实现不支持SOUNDEX()

8.2.2 日期和时间处理函数

DATEPART()函数,此函数返回日期的某一部分。
DATEPART()函数有两个参数,它们分别是返回的成分和从中返回成分的日期。
MySQLMariaDB具有各种日期处理函数,但没有DATEPART()
MySQLMariaDB用户可使用名为YEAR()的函数从日期中提取年份。
大多数DBMS具有比较日期、执行基于日期的运算、选择日期格式等的函数。

8.2.3 数值处理函数

数值处理函数仅处理数值数据。
这些函数一般主要用于代数、三角或几何运算。
在这里插入图片描述

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!