8.基础-创建计算字段

计算字段

       存储在数据库表中的数据一般不是应用程序需要的格式。例如,你想要在一个地方中既显示公司名,又显示公司的地址,但这两个信息一般包含在不同的表列中。

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

       这就需要用到计算字段了。计算字段与前面介绍的列不同,它并不实际存于数据库表中,它是运行时在SELECT语句内创建的。

       字段:基本上与列的意思相同,经常互换使用,不过数据库列一般称为列,而术语字段通常用在计算字段的连接上。

       只有数据库知道SELECT语句中哪些列是实际的表列,哪些列是计算字段。从应用程序角度来看,计算字段和实际的列没什么区别。

拼接字段

       将值联结到一起构成单个值;

       在MySQL中可以使用Concat()函数来拼接两个列;而在其他的数据库中大多是使用+或||来实现拼接的。当把SQL语句转换为MySQL语句时,一定要注意这点;

       输入:SELECT Concat( vend_name , '(' , vend_country , ')' )

                 FROM vendors

                 ORDER BY vend_name;

       输出:

8.基础-创建计算字段

        分析:Concat()把多个串连接起来形成一个较长的串。  上述SELECT语句返回了一个计算字段。

        输入:SELECT Concat( RTrim(vend_name) , '(' , vend_country , ')' )

                  FROM vendors

                  ORDER BY vend_name;

       分析:RTrim()函数用来删除数据右侧多余的空格。还可以用LTrim()函数去掉左边多余的空格,Trim去掉左右两边的空格;

使用别名(alias)

       SELECT语句拼接出来的计算字段的名字是什么呢?实际上它没有名字,它只是一个值。但是未命名的列不能用于客户机应用中,因为没办法引用它。

       为了解决这个问题,可以使用别名。别名是一个字段或值的替换名。别名用AS关键字赋予。

      输入:SELECT Concat( RTrim(vend_name) , '(' , vend_country , ')' ) AS vend_title

                FROM vendors

                ORDER BY vend_name;

      输出:

8.基础-创建计算字段

      分析:任何应用都可以按vend_title列名来引用这个列,就像它是一个实际的表列一样。

      别名不仅仅可以和Concat()函数一起使用,还可以单独使用。当原来的列名包含了不符合规定的字符或原来的名字不容易理解的时候,就可以用AS重新命名。

      别名有时候也称之为导出列;

执行算术计算

      还可以对检索出的数据进行算术计算。可以用圆括号来区分优先级;

      输入:SELECT prod_id
                             quantity,
                             item_price
                             quantity*item_price AS expanded_price
                FROM   orderitems

                WHERE order_num = 20005;

      输出:

8.基础-创建计算字段

8.基础-创建计算字段

8.基础-创建计算字段