SQL查询数据

  1. 基本查询

    SELECT * FROM <表名>

    使用SELECT * FROM students时,SELECT是关键字,表示将要执行一个查询,*表示“所有列”,FROM表示将要从哪个表查询

  2. 条件查询
    SELECT * FROM <表名> WHERE <条件表达式>

    条件表达式可以用<条件1> AND <条件2>表达满足条件1并且满足条件2;<条件1> OR <条件2>表示满足条件1或者满足条件2;NOT <条件>,表示“不符合该条件”的记录。而NOT class_id = 2等价于class_id <> 2。

  3. 投影查询
    SELECT 列1, 列2, 列3 FROM <表名> //返回某些列的数据 
    SELECT 列1 别名1, 列2 别名2, 列3 别名3 FROM <表名> //返回某些列的数据并修改列名
  4. 排序
    SELECT id, name, gender, score FROM students ORDER BY score DESC, gender;

    ORDER BY score表示按score排序,DESC表示倒序,gender表示如果score相同时按gender升序排序(默认ASC)。如果带有WHERE,则ORDER BY需要放在WHERE后面。

  5. 分页查询
    -- 查询第1页
    SELECT id, name, gender, score
    FROM students
    ORDER BY score DESC
    LIMIT 3 OFFSET 0;
    LIMIT表示显示数据行数,OFFSET表示开始显示的索引,从0开始。
  6. 聚合查询
    -- 使用聚合查询并设置结果集的列名为num:
    SELECT COUNT(*) num FROM students;

    使用聚合查询时还可以使用WHERE进行条件查询。除了COUNT(),还有SUM() AVG() MAX() MIN()等聚合函数。CEILING()表示向上取整,FLOOR()向下取整。
    聚合查询用于分组时:

    SELECT class_id, COUNT(*) num FROM students GROUP BY class_id;

    将会显示3个结果,在SELECT后加入字段class_id,可以分组统计出class_id各个count值。
    此外,分组前还可以进行条件筛选:

    SELECT class_id, COUNT(*) num FROM students WHERE score > 90 GROUP BY class_id;

     分组后,还可以对分组进一步筛选:

    SELECT class_id, COUNT(*) num FROM students WHERE score > 90 GROUP BY class_id HAVING COUNT(*) > 2;

    WHERE和HAVING的区别:a.where在分组前限定,如果不符合要求,则不参与分组;having在分组之后限定,如果不符合要求,将不会被查询出来。b.where后不可跟聚合函数,having后可以进行聚合函数的判断。

  7. 连接查询
    SELECT s.id, s.name, s.class_id, c.name class_name, s.gender, s.score
    FROM students s
    INNER JOIN classes c
    ON s.class_id = c.id;
原文地址:https://www.cnblogs.com/try4396/p/12170939.html