zoukankan      html  css  js  c++  java
  • SQL学习(三)之子句和函数

    函数

    COUNT()/计数、MIN()/最小值、MAX()/最大值、AVG()/平均值、SUM()/和

    子句

    子句是语句的一部分包括WHERE、GROUP、ORDER、LIMIT

    • WHERE:条件

    • GROUP:合并(聚类,其实就是合并相同的)

    • ORDER:排序

    • LIMIT:限制(限制输出)

    WHERE

    • WHERE name='blue'

    • WHERE age>18

    • WHERE age<=18

    • WHERE age>=18 AND score<60

    • WHERE cach>100 OR score>10000

    删-DELETE

    DELETE FROM 表 WHERE 条件; 删除表中指定的一条数据

    DELETE FROM `user_table` WHERE ID='${res.query.id}'; 根据指定的id删除指定一条数据的所有字段

    注意:没有办法只删除一个字段,只能是删除一行

    改-UPDATE

    UPDATE 表 SET 字段=值,字段=值,...WHERE 条件;

    UPDATE `article_data` SET `n_like=n_like+1` WHERE ID=xxx; 根据指定的id更新指定数据的n_like字段

    查-SELECT

    SELECT * FROM 表 WHERE 条件;

    SELECT * FROM `user_table` WHERE ID='${res.query.id}'; 根据指定的id查询指定数据的所有字段

    注意:不加WHERE就是操作整张表,除了INSERT都可以用WHERE

    GROUP

    • GROUP BY class

    • GROUP BY name

    查-SELECT

    SELECT * FROM 表 GROUP BY 字段;

    SELECT * FROM student_table GROUP BY class; 表示以class为依据进行分组,只要是class相同的就一定会合并起来,相同的class只留一条数据,做了一个去重

    SELECT class,COUNT(class) FROM student_table GROUP BY class; 只查询class字段,以class为依据进行分组,并对相同的class进行计数

    SELECT class,AVG(score) FROM student_table GROUP BY class; 查询得到每个班级平均值

    SELECT class,MAX(score),MIN(score) FROM student_table GROUP BY class; 查询得到每个班级最高最低分

    SELECT name,SUM(price) FROM sales_table GROUP BY name;  查询得到每个人的消费总额

    注意:GROUP单独用没有什么意义我们应该配合函数来用(COUNT/计数、MIN/最小值、MAX/最大值、AVG/平均值、SUM/和)

    ORDER

    • ORDER BY age ASC

    • ORDER BY age DESC

    • ORDER BY SUM(price)

    ASC-升序(从小到大)/DESC-降序(从大到小)

    查-SELECT

    SELECT * FROM 表 ORDER BY 字段 ASC;  单一条件排序

    SELECT * FROM 表 ORDER BY 字段 ASC ,字段 DESC; 多条件排序

    SELECT * FROM student_table ORDER BY price DESC; 查询表中数据并以price为准降序排列

    SELECT * FROM 表 ORDER BY price ASC, sales DESC; 查询表中数据并以price为准升序排列,price相同以sales为准降序排列

    SELECT name,SUM(price) FROM sales_table GROUP BY name ORDER BY SUM(price) DESC;  查询得到每个人的消费总额按照降序排列

    SELECT name,SUM(price) FROM sales_table GROUP BY name ORDER BY SUM(price) ASC;  查询得到每个人的消费总额按照升序排列

    LIMIT

    • LIMIT 10; 前10条

    • LIMIT 5,8; 从5开始,要8个

    查-SELECT

    SELECT *  FROM 表 LIMIT 数字;

    SELECT *  FROM student_table LIMIT 2; 查询表中的前两条数据

    分页

    方法一:所有数据给前端,前端来控制每页数据(数据量大不靠谱)

    方法二:后台只给一丁点数据,后端来控制每页数据(实际上就是在数据库里就限制)

    使用方法二如果想要做分页,每页20条数据:

    • 第1页 limit 0,20 0~19

    • 第2页 limit 20,20 20~39

    • 第3页 limit 40,20

    • 第n页 limit (n-1)*20,20

    子句之间的顺序

    子句之间是有顺序的:WHERE GROUP ORDER LIMIT

    注释:没有的可以不写

    实例:

    SELECT class,COUNT(class) FROM student_table

    WHERE score>60

    GROUP BY class

    ORDER BY COUNT(class) DESC

    LIMIT 2;

  • 相关阅读:
    ACdream 1114(莫比乌斯反演)
    ACdream 1148(莫比乌斯反演+分块)
    bzoj2301(莫比乌斯反演+分块)
    hdu1695(莫比乌斯反演)
    hdu4908(中位数)
    bzoj1497(最小割)
    hdu3605(最大流+状态压缩)
    【Leetcode】Add Two Numbers
    【Leetcode】Add Binary
    【Leetcode】Single Number II
  • 原文地址:https://www.cnblogs.com/kunmomo/p/11448063.html
Copyright © 2011-2022 走看看