zoukankan      html  css  js  c++  java
  • (原创)SQL总结(三)

    计算字段

    为什么需要计算字段:我们需要直接从数据库中检索出转换、计算或格式化过的数据,而不是检索出数据,然后再在客户端应用程序中重新格式化。
    字段与列的意思相同。
    注意:只有数据库知道select语句中哪些列是实际的表列,哪些列是计算字段,对客户端或者应用程序来说,计算字段的数据和其他列的数据的返回方式相同。

    拼接字段

    比如我们想将vend_name和vend_country一起按照格式vend_name(vend_country)输出。
    在这里不同的数据库处理方式不同。对于MYSQL而言,要用concat函数实现。
    SELECT concat(vend_name,' (',vend_country,')') FROM Vendors ORDER BY vend_name; 注意可以将’‘内的括号前加空格,来保证特有的格式输出。

    可以使用别名来定义拼接或者其他处理后的字段
    SELECT concat(vend_name,' (',vend_country,')') AS vend_title FROM Vendors ORDER BY vend_name;
    可以使用RTRIM()去掉字符串右边的空格,LTRIM去掉左边的空格。TRIM去掉字符串两边的空格。

    执行算术运算

    SELECT prod_id,quantity,item_price,quantity*item_price AS expanded_price FROM OrderItems WHERE order_num=20008;

    使用函数处理数据

    函数

    只有少数的函数为所有主要的DBMS等同的支持。

    文本处理函数
    SELECT vend_name,UPPER(vend_country) AS vend_country_up FROM Vendors ORDER BY vend_name;

    日期和时间处理函数
    对于不同的DBMS来说,函数会不同,对于MYSQL:
    SELECT order_num FROM Orders WHERE ( YEAR(order_date)=2004 AND MONTH(order_date)=01 );

    在主要的DBMS的函数中,数值函数时最一致的,比如ABS()、COS()等

    函数这一部分需要查阅相对应的DBMS的说明文档。

    汇总数据

    应用:汇总表中的数据,而不是需要实际数据本身。利用聚集函数,有五个 AVG COUNT MAX MIN SUM

    一些聚集函数及例子

    SELECT()函数
    SELECT AVG(prod_price) AS avg_price FROM Products; 返回该列的平均值。当然后面也可以加上WHRE语句进一步限定数据范围。
    注意AVG只能作用于单个列,若要求多个列的均值,需要多个AVG。另外AVG过滤掉NULL。
    COUNT()函数
    SELECT COUNT(*) AS num_cust FROM Customers;返回顾客总数
    SELECT COUNT(cust_email) AS num_cust FROM Customers; 对有邮件地址的用户计数
    MAX()函数
    SELECT MAX(prod_price) AS max_price FROM Products; 返回该列的最大值,MAX用于文本数据时,返回该列排序后的最后一行
    MIN 同上 文本时 返回排序后的第一行
    SUM()函数
    SELECT SUM(quantity) AS sum_orders FROM OrderItems WHERE order_num=20005;返回购买总量。

    聚集不同值

    如果想只对某一列不同的值进行汇总处理,那么需要使用DISTINCT。默认情况下是对所有值使用汇总,即ALL。
    SELECT AVG( DISTINCT prod_price ) AS avg_price FROM Products WHERE vend_id='DLL01';这表示对prod_price一列中不同的price进行均值解算。排除相同price的影响。
    注意 DISTINCT不能用于COUNT(*),同时它只能用于列名,不能用于计算或表达式。
    DISTINCT也能用于MAX MIN,但是并没有实际应用意义。

    组合聚集函数

    我们可以在一次查询中输出多个汇总数据
    SELECT COUNT(*) AS num_items, MIN(prod_price) AS min_price, MAX(prod_price) AS max_price, AVG(prod_price) AS avg_price FROM Products;

  • 相关阅读:
    稀疏矩阵解题数学库 -- UMFPACK
    国外程序猿整理的C++大全
    SQL实用语句大全
    this 三句话
    ELK 7.4.2 单机安装配置
    简单搭建DNS服务器——bind
    关于博客皮肤
    Golang 实现 array_push
    Golang 发送POST请求,加header头,带参数
    Golang 签名
  • 原文地址:https://www.cnblogs.com/rayshaw/p/9026383.html
Copyright © 2011-2022 走看看