天天看点

Mysql:SQL语句:DML语句

<b>执行存储过程</b>

call <code>sp_name</code>([<code>parameter</code>[,...]])

call <code>sp_name</code>[()]

<b>删除</b>

delete [low_priority] [quick] [ignore]

from <code>tbl_name</code>

[where <code>where_condition</code>]

[order by ...]

[limit <code>row_count</code>]

<b>执行表达式计算</b>

do <code>expr</code> [, <code>expr</code>] ... 和select <code>expr</code> [, <code>expr</code>] ...类似,但不返回select的结果,因此进行表达式的技术时,性能较高

<b>插入数据</b>

insert [low_priority | delayed | high_priority] [ignore] [into] <code>tbl_name</code> [(<code>col_name</code>,...)]

{values | value} ({<code>expr</code> | default},...),(...),...

[ on duplicate key update <code>col_name</code>=<code>expr</code> [, <code>col_name</code>=<code>expr</code>] ... ]

insert [low_priority | delayed | high_priority] [ignore] [into] <code>tbl_name</code>

set <code>col_name</code>={<code>expr</code> | default}, ...

insert [low_priority | high_priority] [ignore] [into] <code>tbl_name</code> [(<code>col_name</code>,...)]

select ...

<b>插入数据-mysql的扩展,和insert类似,除了:如果表中有何新插入冲突的数据,会先删除旧数据,而后再插入新数据</b>

replace [low_priority | delayed] [into] <code>tbl_name</code> [(<code>col_name</code>,...)]

replace [low_priority | delayed] [into] <code>tbl_name</code>

<b>选择语句select</b>

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] <code></code>

<code>select_expr</code> [, <code>select_expr</code> ...]

[

from <code>table_references</code>

[group by {<code>col_name</code> | <code>expr</code> | <code>position</code>} [asc | desc], ... [with rollup]]

[having <code>where_condition</code>]

[order by {<code>col_name</code> | <code>expr</code> | <code>position</code>} [asc | desc], ...]

[limit {[<code>offset</code>,] <code>row_count</code> | <code>row_count</code> offset <code>offset</code>}]

[procedure <code>procedure_name</code>(<code>argument_list</code>)]

[into outfile '<code>file_name</code>' [character set <code>charset_name</code>] <code>export_options</code> | into dumpfile '<code>file_name</code>' | into <code>var_name</code> [, <code>var_name</code>]]

[for update | lock in share mode]

]

<b>联合查询结果</b>

union [all | distinct]

[union [all | distinct] select ...]

<b>更新表</b>

update [low_priority] [ignore] <code>table_reference</code>

set <code>col_name1</code>={<code>expr1</code>|default} [, <code>col_name2</code>={<code>expr2</code>|default}] ...

<b>截断表</b>

truncate [table] <code>tbl_name</code>

<b>子查询:使用子查询总是有诸多的限制的,而且往往是可以更好的进行优化的。</b>

<b>在条件中的子查询</b><b></b>

<b>子查询的结果集特征</b>

一列

多列

一行

单个标量:

{= | &gt; | &lt; | &gt;= | &lt;= |  &lt;&gt; |  != |  &lt;=&gt;} subquery

{exists | not exists} subquery

 单个矢量:

 矢量形式  {= | &gt; | &lt; | &gt;= | &lt;= |&lt;&gt; | != | &lt;=&gt;}  subquery

多行

范围标量:

 in subquery

{= | &gt; | &lt; | &gt;= | &lt;= |  &lt;&gt; |  != |  &lt;=&gt;} <b>{all | any | some }</b> subquery

 范围矢量:

<b>相关子查询 :(内层)子查询中用到 外层查询中的表值</b>

例如:select * from t1 where column1 = any (select column1 from t2 where t2.column2 = t1.column2);

<b>作为from 表 来源的子查询:</b>

select ... from (<code>subquery</code>) [as] <code>name</code> ...

<b>装载数据文件中的数据</b>

load data

[low_priority | concurrent] [local]

infile '<code>file_name</code>'

[replace | ignore]

into table <code>tbl_name</code>

[character set <code>charset_name</code>]

[{fields | columns} [terminated by '<code>string</code>'] [[optionally] enclosed by '<code>char</code>'] [escaped by '<code>char</code>'] ]

[lines [starting by '<code>string</code>'] [terminated by '<code>string</code>'] ]

[ignore <code>number</code> lines]

[(<code>col_name_or_user_var</code>,...)]

[set <code>col_name</code> = <code>expr</code>,...]