《SQL必知必会》第七课 创建计算字段 计算字段与别名使用
第七课 创建计算字段
计算字段与别名使用
#存储在表中的数据一般不是应用程序所需要的,需要从数据库中检索出转换、计算或格式化过的数据
#计算字段并不实际存在于数据库表中
#计算字段是运行时在SELECT语句内创建的
字段:
基本上与列的意思相同,术语字段通常与计算字段一起使用
#在数据库服务器上完成转换和格式化操作比在客户端上完成要快得多
拼接字段:
创建由两列组成的标题,创建组合值
在SQL中的SELECT语句中,可以使用一个特殊的操作符来拼接两个列
#根据DBMS不同,此操作符可为加号(+)或两个竖杠(||)表示,在MySQL中使用Concat()函数
#**拼接:**将值联结到一起(将一个值附加到另一个值)构成单个值
【1】SELECT CONCAT(vend_name,' (',vend_country,')') FROM vendors ORDER BY vend_name;
#上述SELECT语句拼接以下元素:
(1)存储在vend_name列中的名字
(2)包含一个空格和一个左圆括号的字符串
(3)存储在vend_country列中的国家
(4)包含一个右圆括号的字符串
SELECT vend_name + ‘(’ + vend_country + ‘)’ FROM vendors ORDER BY vend_name;
SELECT vend_name || ‘(’ || vend_country || ‘)’ FROM vendors ORDER BY vend_name;
【2】SELECT CONCAT(RTRIM(vend_name),' (',RTRIM(vend_country),')') FROM vendors ORDER BY vend_name;
#RTRIM()函数去掉值右边的所有空格
#LTRIM()函数去掉值(字符串)左边的所有空格
#TRIM()函数去掉值(字符串)左右两边的所有空格
SQL支持列别名:
别名是一个字段或值的替换名,别名用AS关键字赋予
【3】SELECT CONCAT(RTRIM(vend_name),' (',RTRIM(vend_country),')') AS vend_title FROM vendors ORDER BY vend_name;
#AS vend_title指定SQL创建一个包含指定计算结果的名为vend_title的计算字段
#任意客户端应用程序都可以按名称vend_title引用这个列
提示:
别名其他常见的用途包括在实际表列名包含不合法的字符(如空格)时重新命名它
注意:
(1)别名的名字既可以是一个单词,亦可以是一个字符串,字符串应该括在引号内
(2)别名最常见的使用是将多个单词的列名重命名为一个单词的名字
(3)别名有时也称为导出列
执行算数计算
计算字段的另一个常见用途是对检索出的数据进行算术计算
OrderItems表:
【4】SELECT prod_id, quantity,item_price FROM orderitems WHERE order_num=20008;
#检索订单号为20008的所有物品
【5】SELECT prod_id, quantity, item_price, quantity*item_price AS expanded_price FROM orderitems WHERE order_num=20008;
#expanded_price列为计算字段,此列计算为 quantity*item_price
【6】SELECT 3*2;
【7】SELECT TRIM(' abc ');
【8】SELECT NOW();
#使用Now()函数返回当前日期和时间
参考文献:
【1】《SQL必知必会》第四版 人民邮电出版社 [美] Ben Forta 著 钟鸣 刘晓霞 译