上回:《SQL必知必会》(4,5,6):过滤数据、高级数据过滤、通配符过滤
存储在数据库中的数据一般不是我们程序所需要的格式,如:
这就是计算字段派上用场的地方。与前几节课不同的是,计算字段并不是间存在与数据库表中。计算字段是运行时在select语句内创建的。
字段(field):基本上与列(column)的意思相同,经常互换使用。
计算字段,说白了就是不能直接拿过来用,需要处理一下在传到客户端的。
举个栗子:
家庭住址,往往在数据库中不是一长串存储的,xx省xx市xx区xxxxx;涉及到表级约束,可以百度一下。一般省市等,也许在一个表中,单一的不在同一个列,这是一级约束,不可再分原则。
但是我们需要的数据,是那一长串的,我们需要在数据库中拿出这些数据,拼接一下,在传给客户端。
拼接(concatenate):将值联结到一起,构成单个值。
select语句中,操作符可以使用 +
或 ||
。但是在MySQL中必须使用特殊的函数。
在MySQL中是这样的:
SELECT CONCAT(vend_name,'(',vend_country,')')
FROM vendors
ORDER BY vend_name;
如果输出的数据有空格,可以使用trim() 函数来去除空格。
语法 :as is 或者直接 空格跟别名三种一般都可以。
as应该是所以DBMS都支持的。
这里就是直接使用空格。
最常用的就是,小学数学问题:一直单价 数量,求总价。
SELECT prod_id,
quantity ,item_price,
quantity*item_price AS expanded_price
FROM OrderItems
WHERE order_num - 20008 ;
提示:如何测试计算
SELECT语句为测试.检验函数和计算提供了很好的方法。虽然SELECT通常用于从表中检索数据,但是省略了FROM子句后就是简单地访问和处理表达式,例如SELECT 3*2;将返回6,SELECT Trim(’ abc ');将返回abc,SELECT Now();使用Now()函数返回当前日期和时间。现在你明白了,可以根据需要使用SELECT语句进行检验。
别名很重要,可以简化我们sql的单词拼写,还增强了可读性。对数据库的本质没有改变,只是个相当于代号的东西。
再熟悉不过了,从初中就开始接触,伴随到现在,函数就是一个方法的入口,包含着一系列底层的操作,执行相应的功能 有的可以返回需要的值。(我自己说的,可能不准确,不喜勿喷 哈哈)
前边说的trim() 去除空格的那个,那就是个函数,功能是去除空格。
大多数DBMS都支持以下这些:
用的最多的。
用法参考trim();
算了,还是来个栗子吧:
upper() 转大写
日期和时间采用相应的数据类型存储在表中,每种 DBMS 都有自己的特殊形式。日期和时间值以特殊的格式存储,以便能快速和有效地排序或过滤,并且节省物理存储空间。
应用程序—般不使用日期和时间的存储格式,因此日期和时间函数总是用来读取、统计和处理这些值。由于这个原因,日期和时间函数在SQL中具有重要的作用。遗憾的是,它们很不一致,可移植性最差。
SELECT order_num,order_date FROM Orders
WHERE YEAR(order_date) = 2012;
DBMS提供的功能远不止简单的日期成分提取。大多数DBMS具有比较日期、执行基于日期的运算、选择日期格式等的函数。但是,可以看到,不同DBMS的日期-时间处理函数可能不同。关于具体 DBMS支持的目期-时间处理函数,请参阅相应的文档。
这—课介绍了如何使用SQL的数据处理函数。虽然这些函数在格式化、处理和过滤数据中非常有用,但它们在各种SQL实现中很不一致,毫无移植性可言,用DBMS的时候,多看看帮助文档。