当前位置:Gxlcms > 数据库问题 > MySql SELECT 语法

MySql SELECT 语法

时间:2021-07-01 10:21:17 帮助过:1人阅读

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最常见的子句如下:

  • 每一个select_expr表明想要获取的一个列。必须至少有一个select_expr。
  • table_references表明从哪个表或者哪些表来获取行。语法会在join语法中描述。
  • 从mysql 5.6.2开始,select支持明确的分区查询,在一个table_reference中接着表名后,使用有一个分区或者子分区的列表的partition关键字。在这种情况下,只有分区列表中的行会被查询,而表的其他分区会被忽略。

   在mysql 5.6.6和之后,select ... partition from table使用会执行表级别的锁(因此分区锁)的存储引擎如myisam会只锁partition选项中指定的分区或者子分区。

  • where子句,如果给出的话,表明行为了被选择必须满足的条件。where_condition是一个表达式,每一个被选择的行会得到true。如果没有where子句,语句会查询出所有的行。

   在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 ...

  • tbl_name.*可以使用作为一个有限制的缩写,来从这个定义的表中查询所有列。

   select t1.*, t2.* from t1 inner join t2 ...

  • 在查询列表里使用没有限制的*和其它项可能会产生语法错误。为了避免这个问题,可以使用tbl_name.*来引用。

    select avg(score), t1.* from t1 ...

 

MySql SELECT 语法

标签:

人气教程排行