SQL基本检索

来源:互联网 发布:球球大作战辅助软件 编辑:程序博客网 时间:2024/04/30 12:17

有时候需要对数据库中的数据进行一些统计,比如统计员工总数,统计年龄大于25的员工中的最低工资,统计工资大于3800元的员工的平均年龄等。SQL规定了下面几种聚合函数来实现数据的统计功能:

 

    这几个聚合函数都有一个参数,这个参数表示要统计的字段名,比如要统计工资总额,就需要把工资字段作为SUM函数的参数。我们通过例子来看一下聚合函数的用法。

    第一个例子是检索当天销售金额大于300的订单中最小的折扣比例,编写下面的SQL:

 

    SELECT MIN(折扣比例) FROM demo_salesday WHERE 销售金额>300;

 

    执行完毕我们就能看到下面的结果:

+---------------+

| MIN(折扣比例) |

+---------------+

| 0.12000       |

+---------------+

    第二个例子我们来统计一下折扣比例小于0.5的订单的平均销售金额,编写如下SQL:

 

    SELECT AVG(销售金额) FROM demo_salesday WHERE 折扣比例<0.5;

 

    执行完毕我们就能看到下面的结果:

+---------------+

| AVG(销售金额) |

+---------------+

| 290.254271844 |

+---------------+

    第三个例子我们来统计一下当日所有订单的销售总额,编写如下SQL:

   

    SELECT SUM(销售金额) FROM demo_salesday;

 

    执行完毕我们能看到如下结果:

+---------------+

| SUM(销售金额) |

+---------------+

| 58601.42000   |

+---------------+

    最后一个例子我们统计销售金额小于200的订单数,编写如下SQL:

 

    SELECT COUNT(*)  as low_num FROM demo_salesday WHERE 销售金额<200;

 

    执行完毕我们能看到下面的执行结果:

+---------+

| low_num |

+---------+

|     100 |

+---------+

 

    正如我们在这个例子中所做的,为了提高检索结果的可读性,我们可以为输出字段取一个别名,列别名的定义格式为“列名 AS 别名”。从输出结果可以看出,输出的列名为low_num,并非COUNT(*)。

    我们还可以多次使用聚合函数,比如下面的SQL用来统计当日订单中最高和最低的销售额:

 

    SELECT MIN(销售金额),MAX(销售金额) FROM demo_salesday;

 

    执行完毕我们能看到下面的执行结果:

+-----------------------+-----------------------+

| MIN(销售金额) | MAX(销售金额) |

+-----------------------+-----------------------+

| 200.85000     | 399.82000     |

+------------------------+-----------------------+

 

    需要提一句,检索出表中所有列的SQL语句为SELECT *。*表示表中的所有记录,例如SQL语句:

 

    SELECT * FROM demo_area WHERE 地区ID<3;

 

    执行结果如下:

+--------+------+--------+------+--------+------+

| 国家ID | 国家 | 地区ID | 地区 | 城市ID | 城市 |

+--------+------+--------+------+--------+------+

|      1 | 中国 |      1 | 华东 |      1 | 山东 |

|      1 | 中国 |      1 | 华东 |      2 | 江苏 |

|      1 | 中国 |      1 | 华东 |      3 | 安徽 |

|      1 | 中国 |      1 | 华东 |      4 | 浙江 |

|      1 | 中国 |      1 | 华东 |      5 | 福建 |

|      1 | 中国 |      1 | 华东 |      6 | 上海 |

|      1 | 中国 |      2 | 华南 |      7 | 广东 |

|      1 | 中国 |      2 | 华南 |      8 | 广西 |

|      1 | 中国 |      2 | 华南 |      9 | 海南 |

+--------+------+--------+------+--------+------+

检索结果列出了demo_area表中地区ID小于3的地区的所有列。

 

    WHERE子句支持的过滤条件除了>,<,=,>=,<=,等比较关系条件外,还支持复杂的过滤条件。使用AND/OR/NOT可以连接多个简单过滤条件,以完成复杂的检索。例如下面的SQL语句用来检索demo_area表中地区ID<3且城市ID>2的所有地区信息:

 

    SELECT * FROM demo_area WHERE 地区ID<3  AND 城市ID>2;

 

    执行完毕我们就能看到下面的执行结果:

+--------+------+--------+------+--------+------+

| 国家ID | 国家 | 地区ID | 地区 | 城市ID | 城市 |

+--------+------+--------+------+--------+------+

|      1 | 中国 |      1 | 华东 |      3 | 安徽 |

|      1 | 中国 |      1 | 华东 |      4 | 浙江 |

|      1 | 中国 |      1 | 华东 |      5 | 福建 |

|      1 | 中国 |      1 | 华东 |      6 | 上海 |

|      1 | 中国 |      2 | 华南 |      7 | 广东 |

|      1 | 中国 |      2 | 华南 |      8 | 广西 |

|      1 | 中国 |      2 | 华南 |      9 | 海南 |

+--------+------+--------+------+--------+------+

原创粉丝点击