• MySQL Crash Course #05# Chapter 9. 10. 11. 12 正则.函数. API


    索引

    Using MySQL Regular Expressions

    默认大小写不敏感

    mysql> SELECT '312HEWQKHD' REGEXP '[0-9]';
    +-----------------------------+
    | '312HEWQKHD' REGEXP '[0-9]' |
    +-----------------------------+
    |                           1 |
    +-----------------------------+
    1 row in set (0.00 sec)
    
    mysql> SELECT 'HEWQKHD' REGEXP '[0-9]';
    +--------------------------+
    | 'HEWQKHD' REGEXP '[0-9]' |
    +--------------------------+
    |                        0 |
    +--------------------------+
    1 row in set (0.00 sec)

    测试 正则表达式并不需要一张特定的表 ↑ REGEXP checks always return 0 (not a match) or 1 (match). 

    正常而言,LIKE 能做的事情正则一定能做,正则能做的 LIKE 不一定能做(例如说 ' x | x '),效率上我倾向于正则比较慢(因为比较繁琐,匹配的东西多),但是实际情况还是要试了才知道。

    Understanding Calculated Fields

    ps. Fields 和 column 通常指一个东西

    Rather than retrieve the data as it is and then reformat it within your client application or report, what you really want is to retrieve converted, calculated, or reformatted data directly from the database.

    This is where calculated fields come in. Unlike all the columns we retrieved in the chapters thus far, calculated fields don't actually exist in database tables. Rather, a calculated field is created on-the-fly within a SQL SELECT statement.

    Many of the conversions and reformatting that can be performed within SQL statements can also be performed directly in your client application. However, as a rule, it is far quicker to perform these operations on the database server than it is to perform them within the client because Database Management Systems (DBMS) are built to perform this type of processing quickly and efficiently.

    /

    In MySQL SELECT statements, you can concatenate columns using the Concat() function.

    MySQL Is Different Most DBMSs use operators + or || for concatenation; MySQL uses the Concat() function. Keep this in mind when converting SQL statements to MySQL.

    mysql> SELECT Concat(vend_name, ' (', vend_country, ')')
        -> FROM vendors
        -> ORDER BY vend_name;
    +--------------------------------------------+
    | Concat(vend_name, ' (', vend_country, ')') |
    +--------------------------------------------+
    | ACME (USA)                                 |
    | Anvils R Us (USA)                          |
    | Furball Inc. (USA)                         |
    | Jet Set (England)                          |
    | Jouets Et Ours (France)                    |
    | LT Supplies (USA)                          |
    +--------------------------------------------+
    6 rows in set (0.00 sec)

    /

    SELECT Concat(RTrim(vend_name), ' (', RTrim(vend_country), ')')
    FROM vendors
    ORDER BY vend_name;

    The trim() Functions In addition to RTrim() (which, as just seen, trims the right side of a string), MySQL supports the use of LTrim() (which trims the left side of a string), and trim() (which trims both the right and left).

    /

    Using Aliases

    mysql> SELECT Concat(RTrim(vend_name), ' (', RTrim(vend_country), ')') AS
        -> vend_title
        -> FROM vendors
        -> ORDER BY vend_name;
    +-------------------------+
    | vend_title              |
    +-------------------------+
    | ACME (USA)              |
    | Anvils R Us (USA)       |
    | Furball Inc. (USA)      |
    | Jet Set (England)       |
    | Jouets Et Ours (France) |
    | LT Supplies (USA)       |
    +-------------------------+
    6 rows in set (0.00 sec)

     /

    SELECT prod_id,
           quantity,
           item_price,
           quantity*item_price AS expanded_price
    FROM orderitems
    WHERE order_num = 20005;

    How to Test Calculations

    SELECT provides a great way to test and experiment with functions and calculations. Although SELECT is usually used to retrieve data from a table, the FROM clause may be omitted to simply access and work with expressions. For example, SELECT 3 * 2; would return 6, SELECT Trim(' abc '); would return abc, and SELECT Now() uses the Now() function to return the current date and time. You get the ideause SELECT to experiment as needed.

     

    Using Functions

    1. 在 MySQL 中自定义函数是允许的。
    2. 允许在 WHERE SELECT INSERT .各种地方使用函数。
    3. 存在类似 Soundex 的比较有趣的函数,以及例如 IF 的方便函数。

    官方 API → MySQL 5.7 Reference Manual  /  Functions and Operators

    mysql> SELECT cust_id, order_num, order_date
        -> FROM orders
        -> WHERE Date(order_date) = '2005-09-01';
    +---------+-----------+---------------------+
    | cust_id | order_num | order_date          |
    +---------+-----------+---------------------+
    |   10001 |     20005 | 2005-09-01 00:00:00 |
    +---------+-----------+---------------------+
    1 row in set (0.01 sec)
    mysql> SELECT cust_id, order_num, order_date
        -> FROM orders
        -> WHERE Year(order_date) = 2005 AND Month(order_date) = 9;
    +---------+-----------+---------------------+
    | cust_id | order_num | order_date          |
    +---------+-----------+---------------------+
    |   10001 |     20005 | 2005-09-01 00:00:00 |
    |   10003 |     20006 | 2005-09-12 00:00:00 |
    |   10004 |     20007 | 2005-09-30 00:00:00 |
    +---------+-----------+---------------------+
    3 rows in set (0.00 sec)

    在处理时间相关的问题时可能会比较有用。

    Using Aggregate Functions

    Aggregate Functions Functions that operate on a set of rows to calculate and return a single value.

    mysql> SELECT COUNT(*) AS num_items,
        ->        MIN(prod_price) AS price_min,
        ->        MAX(prod_price) AS price_max,
        ->        AVG(DISTINCT prod_price) AS price_avg
        -> FROM products;
    +-----------+-----------+-----------+-----------+
    | num_items | price_min | price_max | price_avg |
    +-----------+-----------+-----------+-----------+
    |        14 |      2.50 |     55.00 | 17.780833 |
    +-----------+-----------+-----------+-----------+
    1 row in set (0.00 sec)

    Aggregate functions are used to summarize data. MySQL supports a range of aggregate functions, all of which can be used in multiple ways to return just the results you need. These functions are designed to be highly efficient, and they usually return results far more quickly than you could calculate them yourself within your own client application.

  • 相关阅读:
    python-条件判断
    获取网卡名称
    vSphere Client安装
    python远程执行命令
    xorm操作
    httpd服务安装配置
    error: failed to push some refs to 'git@gitee.com:xxxx'
    三种获取数据的方法fetch和ajax和axios
    react组件的生命周期
    react在移动端的自适应布局
  • 原文地址:https://www.cnblogs.com/xkxf/p/8665715.html
Copyright © 2020-2023  润新知