📄 manual_reference.html
字号:
<tr>
<td>别名</td>
<td>255</td>
<td>所有字符</td>
</tr>
</table>
<p>注意,除了以上,你在一个标识符中不能有ASCII(0)或ASCII(255)。 </p>
<p>注意,如果标识符是一个限制词或包含特殊字符,当你使用它时,你必须总是用<code>`</code>引用它:
</p>
<pre>SELECT * from `select` where `select`.id > 100;
</pre>
<p>在 MySQL的先前版本,命名规则如下:
<ul>
<li>一个名字可以包含来自当前字符集的数字字母的字符和<samp>“_”</samp>和<samp>“$”</samp>。缺省字符集是ISO-8859-1
Latin1;这可以通过重新编译<strong>MySQL</strong>来改变。见<a HREF="manual_Server.html#Character_sets">9.1.1 用于数据和排序的字符集</a>。</li>
<li>一个名字可以以在一个名字中合法的任何字符开始。特别地,一个名字可以以一个数字开始(这不同于许多其他的数据库系统!)。然而,一个名字不能<em>仅仅</em>由数字组成。
</li>
<li>你不能在名字中使用<samp>“.”</samp>,因为它被用来扩充格式,你能用它引用列(见下面)。
</li>
</ul>
<p>建议你不使用象<code>1e</code>这样的名字,因为一个表达式如<code>1e+1</code>是二义性的。它可以解释为表达式<code>1e
+ 1</code>或数字<code>1e+1</code>。 </p>
<p>在<strong>MySQL</strong>中,你能使用下列表格的任何一种引用列: </p>
<table BORDER="1" WIDTH="100%" NOSAVE="#101090" class="p4">
<tr>
<td><strong>列引用</strong> </td>
<td><strong>含义</strong> </td>
</tr>
<tr>
<td><code>col_name</code> </td>
<td>来自于任意表的列<code>col_name</code>,用于包含该表的一个列的查询中</td>
</tr>
<tr>
<td><code>tbl_name.col_name</code> </td>
<td>来自当前的数据库的表<code>tbl_name</code>的列<code>col_name</code></td>
</tr>
<tr>
<td><code>db_name.tbl_name.col_name</code> </td>
<td>行列<code>col_name</code>从表格<code>tbl_name</code>数据库<code>db_name</code>。这个形式在<strong>MySQL</strong>3.22或以后版本可用。
</td>
</tr>
<tr>
<td><code>`column_name`</code> </td>
<td>是一个关键词或包含特殊字符的列。 </td>
</tr>
</table>
<p>在一条语句的列引用中,你不必指定一个<code>tbl_name</code>或<code>db_name.tbl_name</code>前缀,除非引用会有二义性。例如,假定表<code>t1</code>和<code>t2</code>,每个均包含列<code>c</code>,并且你用一个使用<code>t1</code>和<code>t2</code>的<code>SELECT</code>语句检索<code>c</code>。在这种情况下,<code>c</code>有二义性,因为它在使用表的语句中不是唯一的,因此你必须通过写出<code>t1.c</code>或<code>t2.c</code>来指明你想要哪个表。同样,如果你从数据库<code>db1</code>中一个表<code>t</code>和在数据库<code>db2</code>的一个表<code>t</code>检索,你必须用<code>db1.t.col_name</code>和<code>db2.t.col_name</code>引用这些数据表的列。
</p>
<p><a NAME="IDX186"></a>句法<code>.tbl_name</code>意味着在当前的数据库中的表<code>tbl_name</code>,该句法为了ODBC的兼容性被接受,因为一些ODBC程序用一个<samp>“.”</samp>字符作为数据库表名的前缀。
</p>
<h4><a NAME="Name_case_sensitivity" HREF="manual_toc.html#Name_case_sensitivity">7.1.5.1
名字的大小写敏感性</a><a NAME="IDX190"></a> <a NAME="IDX191"></a> <a NAME="IDX192"></a> <a NAME="IDX193"></a> <a NAME="IDX194"></a> <a NAME="IDX195"></a> </h4>
<p>在<strong>MySQL</strong>中,数据库和表对应于在那些目录下的目录和文件,因而,内在的操作系统的敏感性决定数据库和表命名的大小写敏感性。这意味着数据库和表名在Unix上是区分大小写的,而在Win32上忽略大小写。
</p>
<p><strong>注意:</strong>在Win32上,尽管数据库和表名是忽略大小写的,你不应该在同一个查询中使用不同的大小写来引用一个给定的数据库和表。下列查询将不工作,因为它作为<code>my_table</code>和作为<code>MY_TABLE</code>引用一个表:</p>
<pre>mysql> SELECT * FROM my_table WHERE MY_TABLE.col=1;
</pre>
<p>列名在所有情况下都是忽略大小写的。 </p>
<p>表的别名是区分大小写的。下列查询将不工作<code>,</code>:
因为它用<code>a</code>和<code>A</code>引用别名:</p>
<pre>mysql> SELECT col_name FROM tbl_name AS a
WHERE a.col_name = 1 OR A.col_name = 2;
</pre>
<p>列的别名是忽略大小写的。 </p>
<h2><a NAME="Variables" HREF="manual_toc.html#Variables">7.2 用户变量</a></h2>
<p><strong>MySQL</strong>支持线程特定的变量,用<code>@variablename</code>句法。一个变量名可以由当前字符集的数字字母字符和<samp>“_”</samp>、<samp>“$”</samp>和<samp>“.”</samp>组成。缺省字符集是ISO-8859-1
Latin1;这可以通过重新编译<strong>MySQL</strong>改变。见<a HREF="manual_Server.html#Character_sets">9.1.1 用于数据和排序的字符集</a>。 </p>
<p>变量不必被初始化。缺省地,他们包含NULL并能存储整数、实数或一个字符串值。当线程退出时,对于一个线程的所有变量自动地被释放。
</p>
<p>你可以用<code>SET</code>句法设置一个变量: </p>
<pre>SET @variable= { integer expression | real expression | string expression }
[,@variable= ...].
</pre>
<p>你也可以用<code>@variable:=expr</code>句法在一个表达式中设置一个变量:
</p>
<pre>select @t1:=(@t2:=1)+@t3:=4,@t1,@t2,@t3;
+----------------------+------+------+------+
| @t1:=(@t2:=1)+@t3:=4 | @t1 | @t2 | @t3 |
+----------------------+------+------+------+
| 5 | 5 | 1 | 4 |
+----------------------+------+------+------+
</pre>
<p>(这里,我们不得不使用<code>:=</code>句法,因为<code>=</code>是为比较保留的)</p>
<h2><a NAME="Column_types" HREF="manual_toc.html#Column_types">7.3 列类型</a></h2>
<p><strong>MySQL</strong>支持大量的列类型,它可以被分为3类:数字类型、日期和时间类型以及字符串(字符)类型。本节首先给出可用类型的一个概述,并且总结每个列类型的存储需求,然后提供每个类中的类型性质的更详细的描述。概述有意简化,更详细的说明应该考虑到有关特定列类型的附加信息,例如你能为其指定值的允许格式。
</p>
<p>由<strong>MySQL</strong>支持的列类型列在下面。下列代码字母用于描述中:
<dl COMPACT="Column_types">
<dt><code>M</code> </dt>
<dd>指出最大的显示尺寸。最大的合法的显示尺寸是 255 。 </dd>
<dt><code>D</code> </dt>
<dd>适用于浮点类型并且指出跟随在十进制小数点后的数码的数量。最大可能的值是30,但是应该不大于<code>M</code>-2。
</dd>
</dl>
<p>方括号(<samp>“[”</samp>和<samp>“]”</samp>)指出可选的类型修饰符的部分。
</p>
<p>注意,如果你指定一个了为<code>ZEROFILL</code>,<strong>MySQL</strong>将为该列自动地增加<code>UNSIGNED</code>属性。
<dl COMPACT="IDX196">
<dt><code>TINYINT[(M)] [UNSIGNED] [ZEROFILL]</code> </dt>
<dd><a NAME="IDX197"></a>一个很小的整数。有符号的范围是<code>-128</code>到<code>127</code>,无符号的范围是<code>0</code>到<code>255</code>。
<a NAME="IDX198"></a> </dd>
<dt><code>SMALLINT[(M)] [UNSIGNED] [ZEROFILL]</code> </dt>
<dd>一个小整数。有符号的范围是<code>-32768</code>到<code>32767</code>,无符号的范围是<code>0</code>到<code>65535</code>。
<a NAME="IDX199"></a> </dd>
<dt><code>MEDIUMINT[(M)] [UNSIGNED] [ZEROFILL]</code> </dt>
<dd>一个中等大小整数。有符号的范围是<code>-8388608</code>到<code>8388607</code>,无符号的范围是<code>0</code>到<code>16777215</code>。
<a NAME="IDX200"></a> </dd>
<dt><code>INT[(M)] [UNSIGNED] [ZEROFILL]</code> </dt>
<dd>一个正常大小整数。有符号的范围是<code>-2147483648</code>到<code>2147483647</code>,无符号的范围是<code>0</code>到<code>4294967295</code>。
<a NAME="IDX201"></a> </dd>
<dt><code>INTEGER[(M)] [UNSIGNED] [ZEROFILL]</code> </dt>
<dd>这是<code>INT</code>的一个同义词。 <a NAME="IDX202"></a> </dd>
<dt><code>BIGINT[(M)] [UNSIGNED] [ZEROFILL]</code> </dt>
<dd>一个大整数。有符号的范围是<code>-9223372036854775808</code>到<code>9223372036854775807</code>,无符号的范围是<code>0</code>到<code>18446744073709551615</code>。注意,所有算术运算用有符号的<code>BIGINT</code>或<code>DOUBLE</code>值完成,因此你不应该使用大于<code>9223372036854775807</code>(63位)的有符号大整数,除了位函数!注意,当两个参数是<code>INTEGER</code>值时,<code>-</code>、<code>+</code>和<code>*</code>将使用<code>BIGINT</code>运算!这意味着如果你乘2个大整数(或来自于返回整数的函数),如果结果大于<code>9223372036854775807</code>,你可以得到意外的结果。<a NAME="IDX204"></a>一个浮点数字,不能是无符号的,对一个单精度浮点数,<code>其精度可以</code>是<code><=24</code>,对一个双精度浮点数,是在25
和53之间,这些类型如<code>FLOAT</code>和<code>DOUBLE</code>类型马上在下面描述。<code>FLOAT(X)</code>有对应的<code>FLOAT</code>和<code>DOUBLE</code>相同的范围,但是显示尺寸和小数位数是未定义的。在<strong>MySQL</strong>3.23中,这是一个真正的浮点值。在更早的<strong>MySQL</strong>版本中,<code>FLOAT(precision)</code>总是有2位小数。该句法为了ODBC兼容性而提供。
<a NAME="IDX207"></a> <a NAME="IDX208"></a> <a NAME="IDX209"></a> </dd>
<dt><code>FLOAT[(M,D)] [ZEROFILL]</code> </dt>
<dd>一个小(单精密)浮点数字。不能无符号。允许的值是<code>-3.402823466E+38</code>到<code>-1.175494351E-38</code>,<code>0</code>
和<code>1.175494351E-38</code>到<code>3.402823466E+38</code>。M是显示宽度而D是小数的位数。没有参数的<code>FLOAT</code>或有<24
的一个参数表示一个单精密浮点数字。<a NAME="IDX210"></a> <a NAME="IDX211"></a>
</dd>
<dt><code>DOUBLE[(M,D)] [ZEROFILL]</code> </dt>
<dd>一个正常大小(双精密)浮点数字。不能无符号。允许的值是<code>-1.7976931348623157E+308</code>到<code>-2.2250738585072014E-308</code>、
<code>0</code>和<code>2.2250738585072014E-308</code>到<code>1.7976931348623157E+308</code>。M是显示宽度而D是小数位数。没有一个参数的<code>DOUBLE</code>或<code>FLOAT(X)</code>(25
< = X < = 53)代表一个双精密浮点数字。 <a NAME="IDX212"></a> <a NAME="IDX213"></a> </dd>
<dt><code>DOUBLE PRECISION[(M,D)] [ZEROFILL]</code> </dt>
<dd> </dd>
<dt><code>REAL[(M,D)] [ZEROFILL]</code> </dt>
<dd>这些是<code>DOUBLE</code>同义词。 <a NAME="IDX214"></a> </dd>
<dt><code>DECIMAL[(M[,D])] [ZEROFILL]</code> </dt>
<dd>一个未压缩(unpack)的浮点数字。不能无符号。行为如同一个<code>CHAR</code>列:“未压缩”意味着数字作为一个字符串被存储,值的每一位使用一个字符。小数点,并且对于负数,<samp>“-”</samp>符号不在M中计算。如果<code>D</code>是0,值将没有小数点或小数部分。<code>DECIMAL</code>值的最大范围与<code>DOUBLE</code>相同,但是对一个给定的<code>DECIMAL</code>列,实际的范围可以通过<code>M</code>和<code>D</code>的选择被限制。如果<code>D</code>被省略,它被设置为0。如果<code>M</code>被省掉,它被设置为10。注意,在<strong>MySQL</strong>3.22里,<code>M</code>参数包括符号和小数点。
<a NAME="IDX215"></a> </dd>
<dt><code>NUMERIC(M,D) [ZEROFILL]</code> </dt>
<dd>这是<code>DECIMAL</code>的一个同义词。 <a NAME="IDX216"></a> </dd>
<dt><code>DATE</code> </dt>
<dd>一个日期。支持的范围是<code>'1000-01-01'</code>到<code>'9999-12-31'</code>。<strong>MySQL</strong>以<code>'YYYY-MM-DD'</code>格式来显示<code>DATE</code>值,但是允许你使用字符串或数字把值赋给<code>DATE</code>列。
<a NAME="IDX217"></a> </dd>
<dt><code>DATETIME</code> </dt>
<dd>一个日期和时间组合。支持的范围是<code>'1000-01-01 00:00:00'</code>到<code>'9999-12-31
23:59:59'</code>。<strong>MySQL</strong>以<code>'YYYY-MM-DD HH:MM:SS'</code>格式来显示<code>DATETIME</code>值,但是允许你使用字符串或数字把值赋给<code>DATETIME</code>的列。
<a NAME="IDX218"></a> </dd>
<dt><code>TIMESTAMP[(M)]</code> </dt>
<dd>一个时间戳记。范围是<code>'1970-01-01 00:00:00'</code>到<code>2037</code>年的某时。<strong>MySQL</strong>以<code>YYYYMMDDHHMMSS</code>、<code>YYMMDDHHMMSS</code>、<code>YYYYMMDD</code>或<code>YYMMDD</code>格式来显示<code>TIMESTAMP</code>值,取决于是否<code>M</code>是<code>14</code>(或省略)、<code>12</code>、<code>8</code>或<code>6</code>,但是允许你使用字符串或数字把值赋给<code>TIMESTAMP</code>列。一个<code>TIMESTAMP</code>列对于记录一个<code>INSERT</code>或<code>UPDATE</code>操作的日期和时间是有用的,因为如果你不自己给它赋值,它自动地被设置为最近操作的日期和时间。你以可以通过赋给它一个<code>NULL</code>值设置它为当前的日期和时间。见<a HREF="manual_Reference.html#Date_and_time_types">7.3.6 日期和时间类型</a>。 <a NAME="IDX219"></a> </dd>
<dt><code>TIME</code> </dt>
<dd>一个时间。范围是<code>'-838:59:59'</code>到<code>'838:59:59'</code>。<strong>MySQL</strong>以<code>'HH:MM:SS'</code>格式来显示<code>TIME</code>值,但是允许你使用字符串或数字把值赋给<code>TIME</code>列。
<a NAME="IDX220"></a> </dd>
<dt><code>YEAR[(2|4)]</code> </dt>
<dd>一个2或4位数字格式的年(缺省是4位)。允许的值是<code>1901</code>到<code>2155</code>,和<code>0000</code>(4位年格式),如果你使用2位,1970-2069(
70-69)。<strong>MySQL</strong>以<code>YYYY</code>格式来显示<code>YEAR</code>值,但是允许你把使用字符串或数字值赋给<code>YEAR</code>列。(<code>YEAR</code>类型在<strong>MySQL</strong>3.22中是新类型。)<a NAME="IDX221"></a> <a NAME="IDX222"></a> <a NAME="IDX223"></a> <a NAME="IDX224"></a> </dd>
<dt><code>CHAR(M) [BINARY]</code> </dt>
<dd>一个定长字符串,当存储时,总是是用空格填满右边到指定的长度。<code>M</code>的范围是1
~ 255个字符。当值被检索时,空格尾部被删除。<code>CHAR</code>值根据缺省字符集以大小写不区分的方式排序和比较,除非<code>给出BINARY</code>关键词。<code>NATIONAL
CHAR</code>(短形式<code>NCHAR</code>)是ANSI SQL的方式来定义CHAR列应该使用缺省字符集。这是<code>MySQL</code>的缺省。<code>CHAR</code>是<code>CHARACTER</code>的一个缩写。
<a NAME="IDX225"></a> <a NAME="IDX226"></a> <a NAME="IDX227"></a> </dd>
<dt><code>[NATIONAL] VARCHAR(M) [BINARY]</code> </dt>
<dd>一个变长字符串。注意:当值被存储时,尾部的空格被删除(这不同于ANSI
SQL规范)。M的范围是1 ~ 255个字符。 <code>VARCHAR</code>值根据缺省字符集以大小写不区分的方式排序和比较,除非<code>给出BINARY</code>关键词值。见<a HREF="manual_Reference.html#Silent_column_changes">7.7.1 隐式列指定变化</a>。 <code>VARCHAR</code>是<code>CHARACTER
VARYING</code>一个缩写。 <a NAME="IDX228"></a> <a NAME="IDX229"></a> </dd>
<dt><code>TINYBLOB</code> </dt>
<dd> </dd>
<dt><code>TINYTEXT</code> </dt>
<dd>一个<code>BLOB</code>或<code>TEXT</code>列,最大长度为255(2^8-1)个字符。见<a HREF="manual_Reference.html#Silent_column_changes">7.7.1 隐式列指定变化</a>。 <a NAME="IDX230"></a> <a NAME="IDX231"></a> </dd>
<dt><code>BLOB</code> </dt>
<dd> </dd>
<dt><code>TEXT</code> </dt>
<dd>一个<code>BLOB</code>或<code>TEXT</code>列,最大长度为65535(2^16-1)个字符。见<a HREF="manual_Reference.html#Silent_column_changes">7.7.1 隐式列指定变化</a>。 <a NAME="IDX232"></a> <a NAME="IDX233"></a> </dd>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -