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 的规范。