读书笔记--SQL必知必会07--创建计算字段

来源:互联网 发布:arma预测C 源码 编辑:程序博客网 时间:2024/06/06 05:07

7.1 计算字段

字段(field),基本与列(column)含义相同。
利用计算字段可以直接从数据库中检索出转换、计算或格式化过的数据。
计算字段不实际存在于数据库表中,是运行时在SELECT语句内创建的。
需要特别注意:从客户端来看,计算字段的数据与实际表列的返回方式相同。只有DBMS能够区分SELECT语句中的实际表列和计算字段。

7.2 拼接字段

拼接(concatenate),将值联结到一起(将一个值附加到另一个值)构成单个值。
在一些DBMS的SELECT语句中,可使用加号“+”或两个竖杠“||”来拼接两个列。
但在MySQL和MariaDB中,必须使用特殊的函数。

新计算列实际上没有名字,只是一个值,可利用AS关键字赋予别名来引用它。
别名(alias),有时也叫导出列(derived column),是一个字段或值的替换名。
建议使用一个含义清楚的单词,或者将多个单词的列名重命名为一个词汇当作别名

MariaDB [sqlbzbh]> SELECT * FROM Vendors;+---------+-----------------+-----------------+------------+------------+----------+--------------+| vend_id | vend_name       | vend_address    | vend_city  | vend_state | vend_zip | vend_country |+---------+-----------------+-----------------+------------+------------+----------+--------------+| BRE02   | Bear Emporium   | 500 Park Street | Anytown    | OH         | 44333    | USA          || BRS01   | Bears R Us      | 123 Main Street | Bear Town  | MI         | 44444    | USA          || DLL01   | Doll House Inc. | 555 High Street | Dollsville | CA         | 99999    | USA          || FNG01   | Fun and Games   | 42 Galaxy Road  | London     | NULL       | N16 6PS  | England      || FRB01   | Furball Inc.    | 1000 5th Avenue | New York   | NY         | 11111    | USA          || JTS01   | Jouets et ours  | 1 Rue Amusement | Paris      | NULL       | 45678    | France       |+---------+-----------------+-----------------+------------+------------+----------+--------------+6 rows in set (0.00 sec)MariaDB [sqlbzbh]> MariaDB [sqlbzbh]> MariaDB [sqlbzbh]> SELECT Concat(vend_name, '---', vend_country) FROM Vendors;+----------------------------------------+| Concat(vend_name, '---', vend_country) |+----------------------------------------+| Bear Emporium---USA                    || Bears R Us---USA                       || Doll House Inc.---USA                  || Fun and Games---England                || Furball Inc.---USA                     || Jouets et ours---France                |+----------------------------------------+6 rows in set (0.00 sec)MariaDB [sqlbzbh]> MariaDB [sqlbzbh]> SELECT Concat(vend_name, '---', vend_country) AS vend_title FROM Vendors;+-------------------------+| vend_title              |+-------------------------+| Bear Emporium---USA     || Bears R Us---USA        || Doll House Inc.---USA   || Fun and Games---England || Furball Inc.---USA      || Jouets et ours---France |+-------------------------+6 rows in set (0.00 sec)MariaDB [sqlbzbh]> 

7.3 执行算术计算

可以利用计算字段对检索出的数据进行算术计算。
SQL支持基本算术操作符:+ - * /
圆括号可用来区分优先顺序。

MariaDB [sqlbzbh]> SELECT prod_id, quantity, item_price  FROM OrderItems WHERE order_num = 20008;+---------+----------+------------+| prod_id | quantity | item_price |+---------+----------+------------+| RGAN01  |        5 |       4.99 || BR03    |        5 |      11.99 || BNBG01  |       10 |       3.49 || BNBG02  |       10 |       3.49 || BNBG03  |       10 |       3.49 |+---------+----------+------------+5 rows in set (0.00 sec)MariaDB [sqlbzbh]> SELECT prod_id, quantity, item_price, quantity*item_price AS expanded_price FROM OrderItems WHERE order_num = 20008;+---------+----------+------------+----------------+| prod_id | quantity | item_price | expanded_price |+---------+----------+------------+----------------+| RGAN01  |        5 |       4.99 |          24.95 || BR03    |        5 |      11.99 |          59.95 || BNBG01  |       10 |       3.49 |          34.90 || BNBG02  |       10 |       3.49 |          34.90 || BNBG03  |       10 |       3.49 |          34.90 |+---------+----------+------------+----------------+5 rows in set (0.00 sec)MariaDB [sqlbzbh]> 

没有FROM子句的SELECT语句,可以简单地访问和处理表达式。

MariaDB [sqlbzbh]> SELECT 3*2;+-----+| 3*2 |+-----+|   6 |+-----+1 row in set (0.00 sec)MariaDB [sqlbzbh]> MariaDB [sqlbzbh]> SELECT Now();+---------------------+| Now()               |+---------------------+| 2016-12-22 23:14:40 |+---------------------+1 row in set (0.00 sec)MariaDB [sqlbzbh]> 
原创粉丝点击