• 读书笔记--SQL必知必会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]> 
    
  • 相关阅读:
    解决多并发
    一个交换机到底能带几台摄像头?结合生产经验咱们来分析!
    ELK查询命令详解
    Ansible自动化部署入门到进阶笔记
    批量SSH key-gen无密码登陆认证脚本
    ELK查询命令详解总结
    Shell 正则表达式详解
    Linux 常用系统性能命令总结
    什么叫做消息队列呢?
    批量SSH key-gen无密码登陆认证脚本 附件脚本
  • 原文地址:https://www.cnblogs.com/anliven/p/6213275.html
Copyright © 2020-2023  润新知