MySQL 基础教程

MySQL 高级教程

MySQL SQL 语句

MySQL 笔记

MySQL 查询数据


MySQL 数据库使用 SELECT 语句来查询数据。SELECT 语句用于检索从一个或多个表中选择的行,并且可以包括 UNION 语句和子查询。

语法

SELECT
    [ALL | DISTINCT | DISTINCTROW ]
      [HIGH_PRIORITY]
      [STRAIGHT_JOIN]
      [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT]
      [SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS]
    select_expr [, select_expr ...]
    [FROM table_references
      [PARTITION partition_list]
    [WHERE where_condition]
    [GROUP BY {col_name | expr | position}, ... [WITH ROLLUP]]
    [HAVING where_condition]
    [WINDOW window_name AS (window_spec)
        [, window_name AS (window_spec)] ...]
    [ORDER BY {col_name | expr | position}
      [ASC | DESC], ... [WITH ROLLUP]]
    [LIMIT {[offset,] row_count | row_count OFFSET offset}]
    [INTO OUTFILE 'file_name'
        [CHARACTER SET charset_name]
        export_options
      | INTO DUMPFILE 'file_name'
      | INTO var_name [, var_name]]
    [FOR {UPDATE | SHARE} [OF tbl_name [, tbl_name] ...] [NOWAIT | SKIP LOCKED] 
      | LOCK IN SHARE MODE]]
  • 每个 select_expr 表示要查询的列。必须至少有一个 select_expr
  • table_references 表示要查询的一个或多个表。
  • WHERE 如果给出该子句,则表示行必须满足要选择的条件;where_condition 是一个表达式,对于要选择的每一行,计算结果必须为 true。如果没有 WHERE 子句,该语句将选择所有行。
  • 在 WHERE 表达式中,除了聚合(汇总)函数外,我们可以使用 MySQL 支持的任何函数和运算符。
  • 我们可以使用星号(*)来代替其他字段,SELECT 语句会返回表的所有字段数据。
  • 我们可以使用 LIMIT 属性来设定返回的记录数。
  • 我们可以通过 OFFSET 指定 SELECT 语句开始查询的数据偏移量;默认情况下偏移量为 0。

SELECT 也可用于查询计算的行而不需引用任何表。

mysql> SELECT 1 + 1;
        -> 2

也可以使用虚拟表名 DUAL。

mysql> SELECT 1 + 1 FROM DUAL;
        -> 2

DUAL 纯粹是为了方便那些要求所有 SELECT 语句具有 FROM 的规范。