标签:
SELECT
[ALL | DISTINCT | DISTINCTROW ]
[HIGH_PRIORITY]
[STRAIGHT_JOIN]
[SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT]
[SQL_CACHE | 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}
[ASC | DESC], ... [WITH ROLLUP]]
[HAVING where_condition]
[ORDER BY {col_name | expr | position}
[ASC | DESC], ...]
[LIMIT {[offset,] row_count | row_count OFFSET offset}]
[PROCEDURE procedure_name(argument_list)]
[INTO OUTFILE ‘file_name‘
[CHARACTER SET charset_name]
export_options
| INTO DUMPFILE ‘file_name‘
| INTO var_name [, var_name]]
[FOR UPDATE | LOCK IN SHARE MODE]]
select被使用来得到从一个或者多个表中挑选出来的行,可以包含union语句和子查询。
select最常见的子句如下:
在mysql 5.6.6和之后,select ... partition from table使用会执行表级别的锁(因此分区锁)的存储引擎如myisam会只锁partition选项中指定的分区或者子分区。
在where表达式里,可以使用mysql提供的除了聚合函数外的所有的函数和操作符。
select也可以使用来获取行计算,而且不使用任何表。
例如:select 1 + 1;2
当没有使用任何表时,也允许使用dual作为一个虚假的表名。
例如:select 1 + 1 from dual;2
dual纯粹为了需要所有的查询语句都包含from和其它可能的子句时方便。mysql可能忽略这个子句。mysql不需要from dual,如果没有使用任何表的话。
一般来讲,子句必须严格按照语法描述中显示的顺序使用。例如,having子句必须在任意的group by子句之后,和任意的order by之后。例外是into子句,into子句可以像语法描述中显示的一样显示,也可以立即跟随在select_expr列表后。
select_expr术语列表包含了表明获取哪些列的查询列表。术语指定一个列或者表达式或者使用*缩写。
select * from t1 inner join t2 ...
select t1.*, t2.* from t1 inner join t2 ...
select avg(score), t1.* from t1 ...
标签:
原文地址:http://www.cnblogs.com/yongyangwen/p/4785364.html