美文网首页Python
数据库排序、分组、过滤

数据库排序、分组、过滤

作者: 叫我老村长 | 来源:发表于2018-08-11 17:16 被阅读1次

    排序
    order by
    asc 默认
    desc
    单列排序
    SELECT * FROM 表明 ORDER BY age (desc|asc);
    条件排序
    SELECT* FROM 表明 WHERE 条件 ORDER BY age (asc|desc);
    多列排序
    SELECT * FROM studentinfo order by age desc,gender asc;
    有一样的值在相同的时候,第二个条件进行排序。
    列子:age相同,就把gender的值做升许。
    英文汉字按AZ排序

    如果排序的列是中文,排序的列编码转为gbk,然后进行排序。
    SELECT * FROM biao ORDERBY convert(name USING gbk) DESC;
    列名

    限定查询
    如果linit后面只跟了一个数字,表示0,数字。表示限制返回多少条。
    SELECT * FROM biao ORDER BY LIMIT 6;
    SELECT * FROM biao ORDER BY LIMIT 0,6;
    查东西限定,要在查到结果以后进行限定,所以limit 一直放在后面。
    第一位偏移量,也叫开头(不包含当前的行)。后一个表示限制返回多少条。
    SELECT * FROM biao ORDER BY LIMIT 6,6;
    从第6开始查,返回6条。返回7-12行。

    如何实现分列。
    输入页码m 返回20条内容。
    SELECT * FROM stu LIMIT (m-1)*20,20;
    取年龄最小
    SELECT * FROM stunt ORDER BY age LIMIT1;

    聚合函数
    AVG 平均值
    SELECT AVG(age) FROM stu;
    别名:
    SELECT AVG(age) as avgage FROM stu;

    COUNT 统计某一列项的总行数
    SUM 计算列总和
    MIN 某一列最小值
    MAX 某一列最大值

    组合:
    mysql> SELECT COUNT(age),MAX(age) FROM studentinfo;
    去重:
    mysql> SELECT COUNT(DISTINCT age) FROM studentinfo;
    添加条件:
    SELECT COUNT(gender) FROM studentinfo WHERE gender=1;

    分组
    GROUP BY (相同放在一组)
    丹丹分组无意义:
    SELECT age from studentinfo GROUP BY age;
    加聚合(age 每组有多少人):
    SELECT count(*),age from studentinfo GROUP BY age;

    GROUP 与 group_concat(列):
    SELECT gender,group_concat(student_name),group_concat(age) from studentinfo GROUP BY gender;

    +--------+-------------------------------------------+-------------------+
    | gender | group_concat(student_name)                | group_concat(age) |
    +--------+-------------------------------------------+-------------------+
    |      0 | xx,老黄,小环,小花花,小刚,小牛             | 23,23,6,22,20,25  |
    |      1 | jim,王二                                  | 30,11             |
    +--------+-------------------------------------------+-------------------+
    

    group by +with rollup
    在最后新增一行,来记录当前列里所有记录的总和
    SELECT gender,group_concat(student_name),group_concat(age) from studentinfo GROUP BY gender with rollup;

    HAVING
    根据条件过滤(筛选)结果。
    HAVING和WHERE相似。where是根据条件筛选结果,不过having根据条件筛选结果,是在已有结果基础进一步筛选。
    如何使用:
    原句:
    SELECT count(),age from studentinfo group by age;
    进行过滤:
    分组行数大于等于2才返回。
    SELECT count(
    ),age from studentinfo group by age having count(*)>=2;

    where行
    having 和group组合,在组基础上筛选

    SELECT count(*),age,gender from studentinfo group by age,gender having gender=1 order by age desc;

    order by 配合使用:

    SELECT count(*),age,gender from studentinfo group by age,gender having gender=1 AND age>23 order by age desc;

    limit配合使用:

    SELECT count(*),age,gender from studentinfo group by age,gender having gender=1 AND age>23 order by age desc LIMIT 2;

    查询顺序:
    select
    列,列
    from
    表名
    where
    条件
    group by
    列,列
    having
    条件
    order by 
    列 (asc|desc)
    limit start,count

    r原样输出
    str = '\c' \c
    str = 'r\c' \c

    \b单词的边际分割

    三大约束
    none
    not null
    唯一 unique:
    设置唯一以后,当插入相同的唯一时就报错。
    唯一可为null
    主键 不能为空
    创表跟primary类似。

    CREATE TABLE unique5 ( userid  int , UNIQUE KEY(userid) );
    
    

    result

    +--------+---------+------+-----+---------+-------+
    | Field  | Type    | Null | Key | Default | Extra |
    +--------+---------+------+-----+---------+-------+
    | userid | int(11) | YES  | UNI | NULL    |       |
    +--------+---------+------+-----+---------+-------+
    
    

    主键

    mysql> CREATE TABLE IF NOT EXISTS unique2 ( userid int not null, PRIMARY KEY(userid) );
    Query OK, 0 rows affected (0.33 sec)
    
    mysql> desc unique2;
    +--------+---------+------+-----+---------+-------+
    | Field  | Type    | Null | Key | Default | Extra |
    +--------+---------+------+-----+---------+-------+
    | userid | int(11) | NO   | PRI | NULL    |       |
    +--------+---------+------+-----+---------+-------+
    

    【数据库五大约束】

    1.primary KEY:设置主键约束,不以为空,唯一;
    2.UNIQUE:设置唯一性约束,不能有重复值,可以为null;
    3.DEFAULT 默认值约束,height DOUBLE(3,2)DEFAULT 1.2 height不输入是默认为1,2,不使用就会使用默认值。
    4.NOT NULL:设置非空约束,该字段不能为空不等于空字符串;
    5.FOREIGN key :设置外键约束,。

    相关文章

      网友评论

        本文标题:数据库排序、分组、过滤

        本文链接:https://www.haomeiwen.com/subject/ypohbftx.html