<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh-Hans-CN">
	<id>http://wiki.eijux.com/index.php?action=history&amp;feed=atom&amp;title=MySQL_%E5%87%BD%E6%95%B0%E5%92%8C%E8%BF%90%E7%AE%97%E7%AC%A6%EF%BC%9A%E4%BF%A1%E6%81%AF%E5%87%BD%E6%95%B0</id>
	<title>MySQL 函数和运算符：信息函数 - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.eijux.com/index.php?action=history&amp;feed=atom&amp;title=MySQL_%E5%87%BD%E6%95%B0%E5%92%8C%E8%BF%90%E7%AE%97%E7%AC%A6%EF%BC%9A%E4%BF%A1%E6%81%AF%E5%87%BD%E6%95%B0"/>
	<link rel="alternate" type="text/html" href="http://wiki.eijux.com/index.php?title=MySQL_%E5%87%BD%E6%95%B0%E5%92%8C%E8%BF%90%E7%AE%97%E7%AC%A6%EF%BC%9A%E4%BF%A1%E6%81%AF%E5%87%BD%E6%95%B0&amp;action=history"/>
	<updated>2026-05-02T11:25:59Z</updated>
	<subtitle>本wiki上该页面的版本历史</subtitle>
	<generator>MediaWiki 1.38.2</generator>
	<entry>
		<id>http://wiki.eijux.com/index.php?title=MySQL_%E5%87%BD%E6%95%B0%E5%92%8C%E8%BF%90%E7%AE%97%E7%AC%A6%EF%BC%9A%E4%BF%A1%E6%81%AF%E5%87%BD%E6%95%B0&amp;diff=6530&amp;oldid=prev</id>
		<title>2023年3月31日 (五) 15:10 Eijux</title>
		<link rel="alternate" type="text/html" href="http://wiki.eijux.com/index.php?title=MySQL_%E5%87%BD%E6%95%B0%E5%92%8C%E8%BF%90%E7%AE%97%E7%AC%A6%EF%BC%9A%E4%BF%A1%E6%81%AF%E5%87%BD%E6%95%B0&amp;diff=6530&amp;oldid=prev"/>
		<updated>2023-03-31T15:10:33Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;zh-Hans-CN&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;←上一版本&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;2023年3月31日 (五) 23:10的版本&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;第1行：&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;第1行：&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[category:&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;MySQL&lt;/del&gt;]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[category:&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;MySQL文档&lt;/ins&gt;]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;信息函数：&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;信息函数：&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Eijux</name></author>
	</entry>
	<entry>
		<id>http://wiki.eijux.com/index.php?title=MySQL_%E5%87%BD%E6%95%B0%E5%92%8C%E8%BF%90%E7%AE%97%E7%AC%A6%EF%BC%9A%E4%BF%A1%E6%81%AF%E5%87%BD%E6%95%B0&amp;diff=2234&amp;oldid=prev</id>
		<title>Eijux：​建立内容为“category:MySQL  信息函数： {| class=&quot;wikitable&quot; ! Name !! Description  |- | BENCHMARK() || 重复执行一个表达式 “BENCHMARK(count,expr)”：重…”的新页面</title>
		<link rel="alternate" type="text/html" href="http://wiki.eijux.com/index.php?title=MySQL_%E5%87%BD%E6%95%B0%E5%92%8C%E8%BF%90%E7%AE%97%E7%AC%A6%EF%BC%9A%E4%BF%A1%E6%81%AF%E5%87%BD%E6%95%B0&amp;diff=2234&amp;oldid=prev"/>
		<updated>2021-04-02T17:34:04Z</updated>

		<summary type="html">&lt;p&gt;建立内容为“&lt;a href=&quot;/%E5%88%86%E7%B1%BB:MySQL&quot; title=&quot;分类:MySQL&quot;&gt;category:MySQL&lt;/a&gt;  信息函数： {| class=&amp;quot;wikitable&amp;quot; ! Name !! Description  |- | BENCHMARK() || 重复执行一个表达式 “BENCHMARK(count,expr)”：重…”的新页面&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;[[category:MySQL]]&lt;br /&gt;
&lt;br /&gt;
信息函数：&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Name !! Description &lt;br /&gt;
|-&lt;br /&gt;
| BENCHMARK() || 重复执行一个表达式&lt;br /&gt;
“BENCHMARK(count,expr)”：重复执行“expr”“count”次。它可以用来计时 MySQL 处理表达式的速度。对于不适当的参数(例如NULL或负重复计数)，结果值是 0 或 NULL。&lt;br /&gt;
&lt;br /&gt;
预期用途来自mysqlClient 端，该 Client 端报告查询执行时间：&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
mysql&amp;gt; SELECT BENCHMARK(1000000,AES_ENCRYPT('hello','goodbye'));&lt;br /&gt;
+---------------------------------------------------+&lt;br /&gt;
| BENCHMARK(1000000,AES_ENCRYPT('hello','goodbye')) |&lt;br /&gt;
+---------------------------------------------------+&lt;br /&gt;
|                                                 0 |&lt;br /&gt;
+---------------------------------------------------+&lt;br /&gt;
1 row in set (4.74 sec)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* '''报告的时间是 Client 端的经过时间，而不是服务器端的 CPU 时间。'''建议执行BENCHMARK()次，并解释有关服务器计算机负载的结果。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
BENCHMARK() 用于测量标量表达式的运行时性能，这对使用它和解释结果的方式有一些重要影响：&lt;br /&gt;
# '''只能使用标量表达式'''。尽管表达式可以是子查询，但'''它必须返回单列和最多单行'''。例如，如果表t具有多于一列或多于一行，则“BENCHMARK(10，(SELECT * FROM t))”将失败。&lt;br /&gt;
# 在涉及的开销方面，执行“SELECT expr”语句 N 次的时间与执行“SELECT BENCHMARK(N, expr)”的时间不同。两者的执行配置文件非常不同，您不应期望它们花费相同的时间：&lt;br /&gt;
## 前者涉及解析器，优化器，表锁定和运行时评估 N 每次。&lt;br /&gt;
## 后者仅涉及运行时评估 N 次，而所有其他组件仅评估一次。已经分配的内存结构将被重用，并且运行时优化(例如已针对聚合函数评估的结果的本地缓存)可能会更改结果。 &lt;br /&gt;
&lt;br /&gt;
BENCHMARK()的使用因此通过赋予该组件更多的权重并消除网络，解析器，优化器等引入的影响来衡量该组件的性能。&lt;br /&gt;
|-&lt;br /&gt;
| CHARSET() || 返回参数的字符集&lt;br /&gt;
“CHARSET(str)”：返回字符串参数的字符集。&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
mysql&amp;gt; SELECT CHARSET('abc');&lt;br /&gt;
        -&amp;gt; 'latin1'&lt;br /&gt;
mysql&amp;gt; SELECT CHARSET(CONVERT('abc' USING utf8));&lt;br /&gt;
        -&amp;gt; 'utf8'&lt;br /&gt;
mysql&amp;gt; SELECT CHARSET(USER());&lt;br /&gt;
        -&amp;gt; 'utf8'&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| COERCIBILITY() || 返回字符串参数的排序规则强制性值&lt;br /&gt;
“COERCIBILITY(str)”：返回字符串参数的排序规则强制性值。【'''较低的值具有较高的优先级'''】&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
mysql&amp;gt; SELECT COERCIBILITY('abc' COLLATE latin1_swedish_ci);&lt;br /&gt;
        -&amp;gt; 0&lt;br /&gt;
mysql&amp;gt; SELECT COERCIBILITY(USER());&lt;br /&gt;
        -&amp;gt; 3&lt;br /&gt;
mysql&amp;gt; SELECT COERCIBILITY('abc');&lt;br /&gt;
        -&amp;gt; 4&lt;br /&gt;
mysql&amp;gt; SELECT COERCIBILITY(1000);&lt;br /&gt;
        -&amp;gt; 5&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
返回值的含义如下：&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Coercibility !! Meaning !! Example &lt;br /&gt;
|-&lt;br /&gt;
| 0 || Explicit collation || 带有COLLATE子句的值&lt;br /&gt;
|-&lt;br /&gt;
| 1 || No collation || 具有不同排序规则的字符串的串联&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Implicit collation || 列值，存储的例程参数或局部变量&lt;br /&gt;
|-&lt;br /&gt;
| 3 || System constant || USER()返回值&lt;br /&gt;
|-&lt;br /&gt;
| 4 || Coercible || Literal string&lt;br /&gt;
|-&lt;br /&gt;
| 5 || Numeric || 数值或时间值&lt;br /&gt;
|-&lt;br /&gt;
| 5 || Ignorable || NULL或源自NULL的表达式&lt;br /&gt;
|}&lt;br /&gt;
|-&lt;br /&gt;
| COLLATION() || 返回字符串参数的排序规则&lt;br /&gt;
“COLLATION(str)”：返回字符串参数的排序规则。&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
mysql&amp;gt; SELECT COLLATION('abc');&lt;br /&gt;
        -&amp;gt; 'latin1_swedish_ci'&lt;br /&gt;
mysql&amp;gt; SELECT COLLATION(_utf8'abc');&lt;br /&gt;
        -&amp;gt; 'utf8_general_ci'&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| CONNECTION_ID() || 返回连接的连接 ID(线程 ID)&lt;br /&gt;
* 每个连接都有一个在当前连接的 Client 端集中唯一的 ID。&lt;br /&gt;
* “CONNECTION_ID()”返回的值与“INFORMATION_SCHEMA.PROCESSLIST”表的ID列，“SHOW PROCESSLIST”输出的“Id”列和“Performance Schema threads”表的“PROCESSLIST_ID”列中显示的值类型相同。&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
mysql&amp;gt; SELECT CONNECTION_ID();&lt;br /&gt;
        -&amp;gt; 23786&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| CURRENT_USER(), CURRENT_USER || 经过身份验证的用户名和主机名&lt;br /&gt;
* 返回的是服务器用来认证当前 Client 端的 MySQL 帐户的用户名和主机名组合。该帐户确定您的访问权限。&lt;br /&gt;
* 返回值是utf8字符集中的字符串。&lt;br /&gt;
* “CURRENT_USER()”的值可以与“USER()”的值不同。&lt;br /&gt;
*: &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
mysql&amp;gt; SELECT USER();&lt;br /&gt;
        -&amp;gt; 'davida@localhost'&lt;br /&gt;
mysql&amp;gt; SELECT * FROM mysql.user;&lt;br /&gt;
ERROR 1044: Access denied for user ''@'localhost' to&lt;br /&gt;
database 'mysql'&lt;br /&gt;
mysql&amp;gt; SELECT CURRENT_USER();&lt;br /&gt;
        -&amp;gt; '@localhost'&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*: 如上：尽管 Client 端指定了 davida 的用户名(如USER()函数的值所示)，但服务器仍使用匿名用户帐户对 Client 端进行了身份验证(如CURRENT_USER()值的空用户名部分所示)。发生这种情况的一种方法是，在davida的授予表中没有列出帐户。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
在存储的程序或视图中，“CURRENT_USER()”返回定义对象的用户的帐户(由其“DEFINER”值给出)，除非使用“SQL SECURITY INVOKER”特性定义。在后一种情况下，“CURRENT_USER()”返回对象的调用者。&lt;br /&gt;
&lt;br /&gt;
触发器和事件没有定义“SQL SECURITY”特性的选项，因此对于这些对象，“CURRENT_USER()”返回定义该对象的用户的帐户。要返回调用者，请使用“USER()”或“SESSION_USER()”。&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| '''DATABASE()''' || '''返回默认(当前)数据库名称'''&lt;br /&gt;
* 以 utf8 字符集的字符串形式返回默认(当前)数据库名称。&lt;br /&gt;
* 如果没有默认数据库，则DATABASE()返回NULL。&lt;br /&gt;
* 在存储的例程中，默认数据库是与该例程关联的数据库，它不一定与调用上下文中的默认数据库相同。&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
mysql&amp;gt; SELECT DATABASE();&lt;br /&gt;
        -&amp;gt; 'test'&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| '''FOUND_ROWS()''' || '''对于带有 LIMIT 子句的 SELECT，如果没有 LIMIT 子句，则将返回的行数'''【？？？】&lt;br /&gt;
“SELECT”语句可以包含“LIMIT”子句以限制服务器返回给 Client 端的行数。在某些情况下，希望知道该语句在没有“LIMIT”的情况下将返回多少行，而无需再次运行该语句。要获得此行计数，请在“SELECT”语句中包含“'''SQL_CALC_FOUND_ROWS'''”【？？？】选项，然后再调用FOUND_ROWS()：&lt;br /&gt;
'''&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
mysql&amp;gt; SELECT SQL_CALC_FOUND_ROWS * FROM tbl_name&lt;br /&gt;
    -&amp;gt; WHERE id &amp;gt; 100 LIMIT 10;&lt;br /&gt;
mysql&amp;gt; SELECT FOUND_ROWS();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;'''&lt;br /&gt;
第二个SELECT返回一个数字，该数字指示如果不使用LIMIT子句写入第一个SELECT将会返回多少行。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
在最近成功执行的SELECT语句中没有“SQL_CALC_FOUND_ROWS”选项的情况下，FOUND_ROWS()返回该语句返回的结果集中的行数。如果该语句包含LIMIT子句，则FOUND_ROWS()返回不超过限制的行数。【？？？】&lt;br /&gt;
: 例如，如果语句包含LIMIT 10或LIMIT 50, 10，则FOUND_ROWS()分别返回 10 或 60.【？？？】&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
通过FOUND_ROWS()可用的行计数是'''临时'''的，并且在“SELECT SQL_CALC_FOUND_ROWS”语句之后的语句之后不可用。如果以后需要引用该值，请保存它：&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
mysql&amp;gt; SELECT SQL_CALC_FOUND_ROWS * FROM ... ;&lt;br /&gt;
mysql&amp;gt; SET @rows = FOUND_ROWS();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
“UNION”语句的使用 SQL_CALC_FOUND_ROWS 和 FOUND_ROWS() 比简单SELECT语句的使用更为复杂，因为LIMIT可能出现在UNION的多个位置。它可以应用于UNION中的单个SELECT语句，也可以应用于整个UNION结果。&lt;br /&gt;
&lt;br /&gt;
SQL_CALC_FOUND_ROWS对于UNION的意图是，它应返回没有全局LIMIT时将返回的行数。【？？？】&lt;br /&gt;
&lt;br /&gt;
将SQL_CALC_FOUND_ROWS与UNION一起使用的条件是：&lt;br /&gt;
# SQL_CALC_FOUND_ROWS关键字必须出现在UNION的前SELECT中。&lt;br /&gt;
# 仅当使用UNION ALL时，FOUND_ROWS()的值才是正确的。如果使用UNION而不使用ALL，则会发生重复删除，并且FOUND_ROWS()的值仅是近似值。&lt;br /&gt;
# 如果UNION中不存在LIMIT，则SQL_CALC_FOUND_ROWS将被忽略并返回在临时表中创建的用于处理UNION的行数。&lt;br /&gt;
除了此处描述的情况外，FOUND_ROWS()的行为是不确定的(例如，在SELECT语句后由于错误而失败的值)。&lt;br /&gt;
|-&lt;br /&gt;
| '''LAST_INSERT_ID()''' || '''最后一个 INSERT 的 AUTOINCREMENT 列的值'''&lt;br /&gt;
# “LAST_INSERT_ID()”：不带任何参数的LAST_INSERT_ID()返回'''BIGINT UNSIGNED'''(64 位)值，该值表示由于最近执行的“INSERT”语句而成功为“AUTO_INCREMENT”列成功插入的第一个自动生成的值。如果没有成功插入行，则LAST_INSERT_ID()的值保持不变。&lt;br /&gt;
# “LAST_INSERT_ID(expr)”：带有一个参数的LAST_INSERT_ID()返回'''无符号整数'''。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
mysql&amp;gt; SELECT LAST_INSERT_ID();&lt;br /&gt;
        -&amp;gt; 195&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 如果将行的 AUTO_INCREMENT 列设置为非“magic”值(即，不是NULL也不是0的值)，则LAST_INSERT_ID()的值不会更改。&lt;br /&gt;
* 如果前一条语句返回错误，则LAST_INSERT_ID()的值不确定。&lt;br /&gt;
* 对于事务表，如果由于错误而回滚该语句，则LAST_INSERT_ID()的值将保持未定义状态。&lt;br /&gt;
*: 对于手动'''ROLLBACK'''，LAST_INSERT_ID()的值不会恢复为 Transaction 之前的值；它保持在ROLLBACK的位置。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 如果使用'''单个 INSERT 语句插入多行'''，则 LAST_INSERT_ID() 返回为'''仅第一次插入的行锁生成的值'''。这样做的原因是使针对其他服务器轻松再现相同的INSERT语句成为可能。&lt;br /&gt;
*: &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
mysql&amp;gt; USE test;&lt;br /&gt;
&lt;br /&gt;
mysql&amp;gt; CREATE TABLE t (&lt;br /&gt;
       id INT AUTO_INCREMENT NOT NULL PRIMARY KEY,&lt;br /&gt;
       name VARCHAR(10) NOT NULL&lt;br /&gt;
       );&lt;br /&gt;
&lt;br /&gt;
mysql&amp;gt; INSERT INTO t VALUES (NULL, 'Bob');&lt;br /&gt;
&lt;br /&gt;
mysql&amp;gt; SELECT * FROM t;&lt;br /&gt;
+----+------+&lt;br /&gt;
| id | name |&lt;br /&gt;
+----+------+&lt;br /&gt;
|  1 | Bob  |&lt;br /&gt;
+----+------+&lt;br /&gt;
&lt;br /&gt;
mysql&amp;gt; SELECT LAST_INSERT_ID();&lt;br /&gt;
+------------------+&lt;br /&gt;
| LAST_INSERT_ID() |&lt;br /&gt;
+------------------+&lt;br /&gt;
|                1 |&lt;br /&gt;
+------------------+&lt;br /&gt;
&lt;br /&gt;
mysql&amp;gt; INSERT INTO t VALUES&lt;br /&gt;
       (NULL, 'Mary'), (NULL, 'Jane'), (NULL, 'Lisa');&lt;br /&gt;
&lt;br /&gt;
mysql&amp;gt; SELECT * FROM t;&lt;br /&gt;
+----+------+&lt;br /&gt;
| id | name |&lt;br /&gt;
+----+------+&lt;br /&gt;
|  1 | Bob  |&lt;br /&gt;
|  2 | Mary |&lt;br /&gt;
|  3 | Jane |&lt;br /&gt;
|  4 | Lisa |&lt;br /&gt;
+----+------+&lt;br /&gt;
&lt;br /&gt;
mysql&amp;gt; SELECT LAST_INSERT_ID();&lt;br /&gt;
+------------------+&lt;br /&gt;
| LAST_INSERT_ID() |&lt;br /&gt;
+------------------+&lt;br /&gt;
|                2 |&lt;br /&gt;
+------------------+&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
如果使用“INSERT IGNORE”【？？？】并且忽略该行，则LAST_INSERT_ID()将从当前值保持不变(如果连接尚未成功执行INSERT，则返回 0)，并且对于非事务处理表，AUTO_INCREMENT计数器不会递增。对于InnoDB表，如果“innodb_autoinc_lock_mode”设置为1或2，则AUTO_INCREMENT计数器增加，如以下示例所示：【？？？在说啥？？？】&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
mysql&amp;gt; USE test;&lt;br /&gt;
&lt;br /&gt;
mysql&amp;gt; SELECT @@innodb_autoinc_lock_mode;&lt;br /&gt;
+----------------------------+&lt;br /&gt;
| @@innodb_autoinc_lock_mode |&lt;br /&gt;
+----------------------------+&lt;br /&gt;
|                          1 |&lt;br /&gt;
+----------------------------+&lt;br /&gt;
&lt;br /&gt;
mysql&amp;gt; CREATE TABLE `t` (&lt;br /&gt;
       `id` INT(11) NOT NULL AUTO_INCREMENT,&lt;br /&gt;
       `val` INT(11) DEFAULT NULL,&lt;br /&gt;
       PRIMARY KEY (`id`),&lt;br /&gt;
       UNIQUE KEY `i1` (`val`)&lt;br /&gt;
       ) ENGINE=InnoDB DEFAULT CHARSET=latin1;&lt;br /&gt;
&lt;br /&gt;
# Insert two rows&lt;br /&gt;
&lt;br /&gt;
mysql&amp;gt; INSERT INTO t (val) VALUES (1),(2);&lt;br /&gt;
&lt;br /&gt;
# With auto_increment_offset=1, the inserted rows&lt;br /&gt;
# result in an AUTO_INCREMENT value of 3&lt;br /&gt;
&lt;br /&gt;
mysql&amp;gt; SHOW CREATE TABLE t\G&lt;br /&gt;
*************************** 1. row ***************************&lt;br /&gt;
       Table: t&lt;br /&gt;
Create Table: CREATE TABLE `t` (&lt;br /&gt;
  `id` int(11) NOT NULL AUTO_INCREMENT,&lt;br /&gt;
  `val` int(11) DEFAULT NULL,&lt;br /&gt;
  PRIMARY KEY (`id`),&lt;br /&gt;
  UNIQUE KEY `i1` (`val`)&lt;br /&gt;
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1&lt;br /&gt;
&lt;br /&gt;
# LAST_INSERT_ID() returns the first automatically generated&lt;br /&gt;
# value that is successfully inserted for the AUTO_INCREMENT column&lt;br /&gt;
&lt;br /&gt;
mysql&amp;gt; SELECT LAST_INSERT_ID();&lt;br /&gt;
+------------------+&lt;br /&gt;
| LAST_INSERT_ID() |&lt;br /&gt;
+------------------+&lt;br /&gt;
|                1 |&lt;br /&gt;
+------------------+&lt;br /&gt;
&lt;br /&gt;
# The attempted insertion of duplicate rows fail but errors are ignored&lt;br /&gt;
&lt;br /&gt;
mysql&amp;gt; INSERT IGNORE INTO t (val) VALUES (1),(2);&lt;br /&gt;
Query OK, 0 rows affected (0.00 sec)&lt;br /&gt;
Records: 2  Duplicates: 2  Warnings: 0&lt;br /&gt;
&lt;br /&gt;
# With innodb_autoinc_lock_mode=1, the AUTO_INCREMENT counter&lt;br /&gt;
# is incremented for the ignored rows&lt;br /&gt;
&lt;br /&gt;
mysql&amp;gt; SHOW CREATE TABLE t\G&lt;br /&gt;
*************************** 1. row ***************************&lt;br /&gt;
       Table: t&lt;br /&gt;
Create Table: CREATE TABLE `t` (&lt;br /&gt;
  `id` int(11) NOT NULL AUTO_INCREMENT,&lt;br /&gt;
  `val` int(11) DEFAULT NULL,&lt;br /&gt;
  PRIMARY KEY (`id`),&lt;br /&gt;
  UNIQUE KEY `i1` (`val`)&lt;br /&gt;
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=latin1&lt;br /&gt;
&lt;br /&gt;
# The LAST_INSERT_ID is unchanged because the previous insert was unsuccessful&lt;br /&gt;
&lt;br /&gt;
mysql&amp;gt; SELECT LAST_INSERT_ID();&lt;br /&gt;
+------------------+&lt;br /&gt;
| LAST_INSERT_ID() |&lt;br /&gt;
+------------------+&lt;br /&gt;
|                1 |&lt;br /&gt;
+------------------+&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;【？？？】&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
如果将“expr”作为LAST_INSERT_ID()的参数给出，则该参数的值由函数返回，并记为LAST_INSERT_ID()返回的下一个值。这可以用来模拟序列：&lt;br /&gt;
# 创建一个表来保存序列计数器并对其进行初始化：&lt;br /&gt;
#: &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
mysql&amp;gt; CREATE TABLE sequence (id INT NOT NULL);&lt;br /&gt;
mysql&amp;gt; INSERT INTO sequence VALUES (0);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# 使用该表生成如下的序列号：&lt;br /&gt;
#: &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
mysql&amp;gt; UPDATE sequence SET id=LAST_INSERT_ID(id+1);&lt;br /&gt;
mysql&amp;gt; SELECT LAST_INSERT_ID();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
【？？？？？？？？？？？？？？？？？？？？？？？？？？？？？？？？】&lt;br /&gt;
|-&lt;br /&gt;
| '''ROW_COUNT()''' || '''更新的行数'''&lt;br /&gt;
ROW_COUNT()返回的值如下：&lt;br /&gt;
# DDL 语句：'''0'''。【这适用于诸如“CREATE TABLE”或“DROP TABLE”的语句】&lt;br /&gt;
# SELECT以外的 DML 语句：'''受影响的行数'''。【这适用于诸如“UPDATE”，“INSERT”或“DELETE”之类的语句(如前所述)，但现在也适用于诸如“ALTER TABLE”和“LOAD DATA”之类的语句】&lt;br /&gt;
# SELECT：如果语句返回结果集，则为'''-1'''，否则返回“'''受影响'''”的行数。&lt;br /&gt;
#: 例如，对于SELECT * FROM t1，ROW_COUNT()返回-1.对于SELECT * FROM t1 INTO OUTFILE 'file_name'，ROW_COUNT()返回写入文件的行数。&lt;br /&gt;
# SIGNAL 语句：'''0'''。&lt;br /&gt;
&lt;br /&gt;
* 对于 UPDATE 语句，默认情况下受影响的行值为实际更改的行数。如果在连接到mysqld时将“CLIENT_FOUND_ROWS”标志指定为“mysql_real_connect()”，则受影响的行值为“找到”的行数；否则，为 0。也就是说，与WHERE子句匹配。【？？？】&lt;br /&gt;
* 对于 REPLACE 语句，'''如果新行替换了旧行，则受影响的行值为 2'''，因为在这种情况下，删除重复项后将插入一行。&lt;br /&gt;
* 对于“INSERT ... ON DUPLICATE KEY UPDATE”语句【？？？】，如果将行作为新行插入，则每行的受影响行值为 1；如果更新了现有行，则为 2；如果将现有行设置为其当前值，则为 0。如果指定“CLIENT_FOUND_ROWS”标志，则将现有行设置为其当前值时，受影响的行值为 1(而不是 0)。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
mysql&amp;gt; INSERT INTO t VALUES(1),(2),(3);&lt;br /&gt;
Query OK, 3 rows affected (0.00 sec)&lt;br /&gt;
Records: 3  Duplicates: 0  Warnings: 0&lt;br /&gt;
&lt;br /&gt;
mysql&amp;gt; SELECT ROW_COUNT();&lt;br /&gt;
+-------------+&lt;br /&gt;
| ROW_COUNT() |&lt;br /&gt;
+-------------+&lt;br /&gt;
|           3 |&lt;br /&gt;
+-------------+&lt;br /&gt;
1 row in set (0.00 sec)&lt;br /&gt;
&lt;br /&gt;
mysql&amp;gt; DELETE FROM t WHERE i IN(1,2);&lt;br /&gt;
Query OK, 2 rows affected (0.00 sec)&lt;br /&gt;
&lt;br /&gt;
mysql&amp;gt; SELECT ROW_COUNT();&lt;br /&gt;
+-------------+&lt;br /&gt;
| ROW_COUNT() |&lt;br /&gt;
+-------------+&lt;br /&gt;
|           2 |&lt;br /&gt;
+-------------+&lt;br /&gt;
1 row in set (0.00 sec)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| '''SCHEMA()''' || '''DATABASE()的同义词'''&lt;br /&gt;
|-&lt;br /&gt;
| SESSION_USER() || USER()的同义词&lt;br /&gt;
|-&lt;br /&gt;
| SYSTEM_USER() || USER()的同义词&lt;br /&gt;
|-&lt;br /&gt;
| USER() || Client 端提供的用户名和主机名&lt;br /&gt;
* 该值指示您在连接到服务器时指定的用户名，以及从中连接的 Client 端主机。该值可以与“CURRENT_USER()”的值不同。&lt;br /&gt;
* 以utf8字符集的字符串形式返回当前 MySQL 用户名和主机名。&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
mysql&amp;gt; SELECT USER();&lt;br /&gt;
        -&amp;gt; 'davida@localhost'&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| VERSION() || 返回指示 MySQL 服务器版本的字符串&lt;br /&gt;
* 该字符串使用utf8字符集。该值除版本号外还可以带有后缀。&lt;br /&gt;
* 此功能对于基于语句的复制不安全。如果在“binlog_format”设置为“STATEMENT”时使用此功能，则会记录一条警告。【？？？】&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
mysql&amp;gt; SELECT VERSION();&lt;br /&gt;
        -&amp;gt; '5.7.32-standard'&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Eijux</name></author>
	</entry>
</feed>