SELECT

语法描述

SELECT语句用于从表中检索数据。

语法结构

  1. > SELECT
  2. [ALL | DISTINCT]
  3. select_expr [[AS] alias], ...
  4. [INTO variable [, ...]]
  5. [ FROM table_references
  6. [WHERE expr]
  7. [GROUP BY {{col_name | expr | position}, ...
  8. | extended_grouping_expr}]
  9. [HAVING expr]
  10. [ORDER BY {col_name | expr} [ASC | DESC], ...]
  11. [LIMIT row_count]
  12. [OFFSET row_count]
  13. ]

SELECT INTO

SELECT INTO statement enables a query result to be stored in variables or written to a file
SELECT INTO 语句将查询结果存储在变量或者导出为文件。

  • SELECT … INTO var_list selects column values and stores them into variables.
  • SELECT … INTO OUTFILE writes the selected rows to a file. Column and line terminators can be specified to produce a specific output format.
  • SELECT … INTO var_list 可以检索列值并将其存储到变量中。
  • SELECT … INTO OUTFILE 将检索结果输出为文件,可以使用行/列分隔符来生成特定的格式。
  1. > SELECT <expr_list>
  2. INTO OUTFILE 'file_name'
  3. [{FIELDS}
  4. [TERMINATED BY 'char']
  5. [ENCLOSED BY 'char']
  6. ]
  7. [LINES
  8. [TERMINATED BY 'string']
  9. ]
  10. [HEADER 'bool']
  11. [MAX_FILE_SIZE long]
  12. [FORCE_QUOTE {'col1','col2',...}]

参数释义

  • <expr_list> 是你想输出的检索结果,为必选参数。
  • 'file_name' 为本机上你所导出的文件的文件名,以绝对路径。若存在同名文件,则会导致导出失败。此外,路径中的所有前置文件夹都必须事先创建,该命令不会自动创建所需要的文件夹。
  • TERMINATED BY 被用来指定字段分隔符,默认值为逗号 ,
  • ENCLOSED BY 指定了列字段包括符,默认为双引号 "
  • LINES TERMINATED BY 表示行结束符,默认为换行符 \n
  • HEADER 用于设置文件中是否包含每一列名称的标题行,当为TRUE时,输出包含标题行,反之则不包含。
  • 你可以通过MAX_FILE_SIZE限制输出文件的大小(以KB为单位)。 例如,当MAX_FILE_SIZE\=5242880(5GB)时,10GB的表就会被导出为两个文件,文件命名规则为原文件名后缀加上.序号。若不设置该值,那么默认输出一个文件。
  • FORCE_QUOTE强制对每个指定列中所有非NULL值使用引用,使用双引号作为标识。
  • NULL 值将被导出为\N

Info

如果不设置MAX_FILE_SIZE,当表的数据量很大时会输出一个极大的文件,可能因此发生导出失败的情况;因此我们建议您根据实际情况设置该值。

限制

  • 相同目录下若存在同名文件,则会导致导出失败。
  • 目前只支持导出 .csv 类型的文件。
  • 目前只支持通过绝对路径将文件导出到服务器主机,而不能导出到远程客户端。

示例

  1. > SELECT number FROM numbers(3);
  2. +--------+
  3. | number |
  4. +--------+
  5. | 0 |
  6. | 1 |
  7. | 2 |
  8. +--------+
  9. > SELECT * FROM t1 WHERE spID>2 AND userID <2 || userID >=2 OR userID < 2 LIMIT 3;
  10. > SELECT userID,MAX(score) max_score FROM t1 WHERE userID <2 || userID > 3 GROUP BY userID ORDER BY max_score;
  1. select * from t1 into outfile '/Users/tmp/test.csv'
  2. FIELDS TERMINATED BY ','
  3. ENCLOSED BY '"'
  4. LINES TERMINATED BY '\n'
  5. header 'TRUE'
  6. MAX_FILE_SIZE 9223372036854775807
  7. FORCE_QUOTE (a, b)