zoukankan      html  css  js  c++  java
  • mysql之SQL入门与提升(四)——终结篇,函数

    一.SQL Aggregate (聚合)函数

    SQL Aggregate 函数计算从列中取得的值,返回一个单一的值。

    • AVG() - 返回平均值
    • COUNT() - 返回行数
    • FIRST() - 返回第一个记录的值
    • LAST() - 返回最后一个记录的值
    • MAX() - 返回最大值
    • MIN() - 返回最小值
    • SUM() - 返回总和

    二.SQL Scalar 函数

    SQL Scalar 函数基于输入值,返回一个单一的值。

    • UCASE() - 将某个字段转换为大写
    • LCASE() - 将某个字段转换为小写
    • MID() - 从某个文本字段提取字符,MySql 中使用
    • SubString(字段,1,end) - 从某个文本字段提取字符
    • LEN() - 返回某个文本字段的长度
    • ROUND() - 对某个数值字段进行指定小数位数的四舍五入
    • NOW() - 返回当前的系统日期和时间
    • FORMAT() - 格式化某个字段的显示方式

    三实例

    3.1SQL AVG() 实例

    3.1.1下面的 SQL 语句从 "access_log" 表的 "count" 列获取平均值:

    SELECT AVG(count) AS CountAverage FROM access_log;

    3.1.2下面的 SQL 语句选择访问量高于平均访问量的 "site_id" 和 "count":

    SELECT site_id, count FROM access_log
    WHERE count > (SELECT AVG(count) FROM access_log);

    3.2SQL COUNT() 函数

    3.2.1有此字段的行数

    SELECT COUNT(column_name) FROM table_name;

    3.2.2行数总和

    SELECT COUNT(*) FROM table_name;

    3.2.3统计某字段的值不重复的和

    SELECT COUNT(DISTINCT column_name) FROM table_name;

    3.2.4实例,同一id的访问统计次数

    SELECT COUNT(count) AS nums FROM access_log
    WHERE site_id=3;

     

     


     3.2.5 SELECT COUNT(DISTINCT site_id) AS nums FROM access_log;

    3.3取第一行的数据

    SELECT name FROM Websites
    ORDER BY id ASC
    LIMIT 1;

     

     

     3.4取最后一行的数据

    SELECT column_name FROM table_name
    ORDER BY column_name DESC
    LIMIT 1;

    3.5MAX() 函数

    MAX() 函数返回指定列的最大值

    3.5.1下面的 SQL 语句从 "Websites" 表的 "alexa" 列获取最大值

    SELECT MAX(alexa) AS max_alexa FROM Websites;

    3.6MIN() 函数

    MIN() 函数返回指定列的最小值。

    SELECT MIN(alexa) AS min_alexa FROM Websites;

    3.7SUM() 函数返回数值列的总数。

    SELECT SUM(count) AS nums FROM access_log;

    3.8GROUP BY 语句

    GROUP BY 语句用于结合聚合函数,根据一个或多个列对结果集进行分组。

    SQL GROUP BY 语法

    SELECT column_name, aggregate_function(column_name)
    FROM table_name
    WHERE column_name operator value
    GROUP BY column_name;
     
    3.8.1单表操作  统计 access_log 各个 site_id 的访问量
    SELECT site_id, SUM(access_log.count) AS nums
    FROM access_log GROUP BY site_id;
    3.8.2多表操作   下面的 SQL 语句统计有记录的网站的记录数量

    下面的 SQL 语句统计有记录的网站的记录次数:

    实例

    SELECT Websites.name,COUNT(access_log.aid) AS nums FROM access_log
    LEFT JOIN Websites
    ON access_log.site_id=Websites.id
    GROUP BY Websites.name;

    3.9HAVING 子句

    在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与聚合函数一起使用

    HAVING 子句可以让我们筛选分组后的各组数据。

    SQL HAVING 语法

    SELECT column_name, aggregate_function(column_name)
    FROM table_name
    WHERE column_name operator value
    GROUP BY column_name
    HAVING aggregate_function(column_name) operator value;
     
    3.9.1现在我们想要查找总访问量大于 200 的网站
    SELECT Websites.name, Websites.url, SUM(access_log.count) AS nums FROM (access_log
    INNER JOIN Websites
    ON access_log.site_id=Websites.id)
    GROUP BY Websites.name
    HAVING SUM(access_log.count) > 200;
     
    3.9.2现在我们想要查找总访问量大于 200 的网站,并且 alexa 排名小于 200
    SELECT Websites.name, SUM(access_log.count) AS nums FROM Websites
    INNER JOIN access_log
    ON Websites.id=access_log.site_id
    WHERE Websites.alexa < 200 
    GROUP BY Websites.name
    HAVING SUM(access_log.count) > 200;
    3.10UCASE() 函数
    下面的 SQL 语句从 "Websites" 表中选取 "name" 和 "url" 列,并把 "name" 列的值转换为大写
    SELECT UCASE(name) AS site_title, url FROM Websites;

    3.11LCASE() 函数

    LCASE() 函数把字段的值转换为小写。

    下面的 SQL 语句从 "Websites" 表中选取 "name" 和 "url" 列,并把 "name" 列的值转换为小写:

    SELECT LCASE(name) AS site_title, url
    FROM Websites;

    3.12MID() 函数

    MID() 函数用于从文本字段中提取字符。

    column_name 必需。要提取字符的字段。
    start 必需。规定开始位置(起始值是 1)。
    length 可选。要返回的字符数。如果省略,则 MID() 函数返回剩余文本。

    3.12.1下面的 SQL 语句从 "Websites" 表的 "name" 列中提取前 4 个字符

    SELECT MID(name,1,4) AS ShortTitle FROM Websites;

    3.13LEN() 函数

    LEN() 函数返回文本字段中值的长度

    下面的 SQL 语句从 "Websites" 表中选取 "name" 和 "url" 列中值的长度:

    SELECT name, LENGTH(url) as LengthOfURL FROM Websites;

    3.14ROUND() 函数

    ROUND() 函数用于把数值字段舍入为指定的小数位数。

    参数描述
    column_name 必需。要舍入的字段。
    decimals 必需。规定要返回的小数位数。

    3.15NOW() 函数

    下面的 SQL 语句从 "Websites" 表中选取 name,url,及当天日期:

    SELECT name, url, Now() AS date  FROM Websites;

    3.16FORMAT() 函数

    FORMAT() 函数用于对字段的显示进行格式化。

    SQL FORMAT() 语法

    SELECT FORMAT(column_name,format) FROM table_name;
    参数描述
    column_name 必需。要格式化的字段。
    format 必需。规定格式。

    下面的 SQL 语句从 "Websites" 表中选取 name, url 以及格式化为 YYYY-MM-DD 的日期:

    SELECT name, url, DATE_FORMAT(Now(),'%Y-%m-%d') AS date  FROM Websites;

     四.项目实战之concat函数运用

    CONCAT函数做模糊查询:
    WHERE a.sys_xzqh=b.xzqh_id AND a.sys_scbj = '0' AND b.node_id LIKE CONCAT(?, '%')

    好了,数据库入门到此为止啦,小伙伴们请继续关注

  • 相关阅读:
    采用GRE隧道连接不同虚拟机上的mininet网络
    ubuntu下安装Pycharm
    Update to openvswitch 2.3.0
    安装Openvswich 2.3.0
    ubuntu安装git
    解决Vmware Vsphere中虚拟机与本地机复制粘贴问题
    windows下安装python的xlrd和xlwd安装包
    ubuntu 下NetworkX的安装和使用
    大整数乘法 python实现
    推特(Twitter)的Snowflake算法——用于生成唯一ID
  • 原文地址:https://www.cnblogs.com/tongcc/p/10923314.html
Copyright © 2011-2022 走看看