Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

简单查询 行

SELECT 查询

  • 全字段

    SELECT *
    FROM public.table_name
    WHERE column1 = '11';
    
  • 部分字段

    SELECT column1, column2
    FROM public.table_name
    WHERE column1 = '11';
    
  • 一个完整的查询模式

    SELECT [ ALL | DISTINCT [ ON ( expression [, ...] ) ] ]
    [ * | expression [ [ AS ] output_name ] [, ...] ]
    [ FROM from_item [, ...] ]
    [ WHERE condition ]
    [ GROUP BY [ ALL | DISTINCT ] grouping_element [, ...] ]
    [ HAVING condition ]
    [ WINDOW window_name AS ( window_definition ) [, ...] ]
    [ { UNION | INTERSECT | EXCEPT } [ ALL | DISTINCT ] select ]
    [ ORDER BY expression [ ASC | DESC | USING operator ] [ NULLS { FIRST | LAST } ] [, ...] ]
    [ LIMIT { count | ALL } ]
    [ OFFSET start [ ROW | ROWS ] ]
    
    • 注意出现的顺序,下面会解释一部分

JOIN 联合

  • 出现位置: 紧跟在FROM后面

  • 【最常用】左联合LEFT JOIN other_table ON condition

    • 以主表为基础,每一行都去看看有没有在其他表跟它对应的
      • 若无对应
        • 保留主表此行,填入NULL
      • 若有多行对应
        • 则主表此行演变成多行一样的,把对应的项填补进来
    • 确认对应的,需要在ON后面加判断条件
  • 【一般常用】内联INNER JOIN other_table ON condition

    • 也是以主表为基础,每一行都去确认有没有在其他表跟它对应的
      • 若无对应
        • 移除主表此行
      • 若有多行对应
        • 则主表此行演变成多行一样的,把对应的项填补进来
    • 确认对应的,需要在ON后面加判断条件
  • 【很少用】右联合RIGHT JOIN

    • A left join B 等价与 B right join A

GROUP BY 聚合

如果存在 多行记录 的 某一列值 都相同,则可以用 此列 做依据,把它们聚合起来

配合聚合函数,把多行变成一行

ORDER BY 排序

ORDER BY mtime DESC
  • DESC指定由大到小排序
    • 如果不指定,则是从小到大排序AESC

LIMIT 限量、OFFSET 偏移

LIMIT 100
OFFSET 1000
  • 查询第1001-1100条