⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 manual_reference.html

📁 MySQL参考手册中文版
💻 HTML
📖 第 1 页 / 共 5 页
字号:
  <dt><code>MEDIUMBLOB</code> </dt>
  <dd> </dd>
  <dt><code>MEDIUMTEXT</code> </dt>
  <dd>一个<code>BLOB</code>或<code>TEXT</code>列,最大长度为16777215(2^24-1)个字符。见<a HREF="manual_Reference.html#Silent_column_changes">7.7.1 隐式列指定变化</a>。 <a NAME="IDX234"></a> <a NAME="IDX235"></a> </dd>
  <dt><code>LONGBLOB</code> </dt>
  <dd> </dd>
  <dt><code>LONGTEXT</code> </dt>
  <dd>一个<code>BLOB</code>或<code>TEXT</code>列,最大长度为4294967295(2^32-1)个字符。见<a HREF="manual_Reference.html#Silent_column_changes">7.7.1 隐式列指定变化</a> <a NAME="IDX236"></a> </dd>
  <dt><code>ENUM('value1','value2',...)</code> </dt>
  <dd>枚举。一个仅有一个值的字符串对象,这个值式选自与值列表<code>'value1'</code>、<code>'value2'</code>, 
    <code>...</code>,或<code>NULL</code>。一个<code>ENUM</code>最多能有65535不同的值。 
    <a NAME="IDX237"></a> </dd>
  <dt><code>SET('value1','value2',...)</code> </dt>
  <dd>一个集合。能有零个或多个值的一个字符串对象,其中每一个必须从值列表<code>'value1'</code>, 
    <code>'value2'</code>, <code>...</code>选出。一个<code>SET</code>最多能有64个成员。 
  </dd>
</dl>

<h3><a NAME="Storage_requirements" HREF="manual_toc.html#Storage_requirements">7.3.1 
列类型存储需求</a></h3>

<p>对于每个由<strong>MySQL</strong>支持的列类型的存储需求在下面按类列出。 
</p>

<h3>7.3.2 数字类型</h3>

<table BORDER="1" WIDTH="100%" NOSAVE="#101090" class="p4">
  <tr>
    <td><strong>列类型</strong> </td>
    <td><strong>需要的存储量</strong> </td>
  </tr>
  <tr>
    <td><code>TINYINT</code> </td>
    <td>1 字节</td>
  </tr>
  <tr>
    <td><code>SMALLINT</code> </td>
    <td>2 个字节</td>
  </tr>
  <tr>
    <td><code>MEDIUMINT</code> </td>
    <td>3 个字节</td>
  </tr>
  <tr>
    <td><code>INT</code> </td>
    <td>4 个字节</td>
  </tr>
  <tr>
    <td><code>INTEGER</code> </td>
    <td>4 个字节</td>
  </tr>
  <tr>
    <td><code>BIGINT</code> </td>
    <td>8 个字节</td>
  </tr>
  <tr>
    <td><code>FLOAT(X)</code> </td>
    <td>4 如果 X &lt; = 24 或 8 如果 25 &lt; = X &lt; = 53</td>
  </tr>
  <tr>
    <td><code>FLOAT</code> </td>
    <td>4 个字节</td>
  </tr>
  <tr>
    <td><code>DOUBLE</code> </td>
    <td>8 个字节</td>
  </tr>
  <tr>
    <td><code>DOUBLE PRECISION</code> </td>
    <td>8 个字节</td>
  </tr>
  <tr>
    <td><code>REAL</code> </td>
    <td>8 个字节</td>
  </tr>
  <tr>
    <td><code>DECIMAL(M,D)</code> </td>
    <td><code>M</code>字节(<code>D</code>+2 , 如果<code>M &lt; D</code>) </td>
  </tr>
  <tr>
    <td><code>NUMERIC(M,D)</code> </td>
    <td><code>M</code>字节(<code>D</code>+2 , 如果<code>M &lt; D</code>) </td>
  </tr>
</table>

<h3>7.3.3 日期和时间类型</h3>

<table BORDER="1" WIDTH="100%" NOSAVE="#101090" class="p4">
  <tr>
    <td><strong>列类型</strong> </td>
    <td><strong>需要的存储量</strong> </td>
  </tr>
  <tr>
    <td><code>DATE</code> </td>
    <td>3 个字节</td>
  </tr>
  <tr>
    <td><code>DATETIME</code> </td>
    <td>8 个字节</td>
  </tr>
  <tr>
    <td><code>TIMESTAMP</code> </td>
    <td>4 个字节</td>
  </tr>
  <tr>
    <td><code>TIME</code> </td>
    <td>3 个字节</td>
  </tr>
  <tr>
    <td><code>YEAR</code> </td>
    <td>1 字节</td>
  </tr>
</table>

<h3>7.3.4 串类型</h3>

<table BORDER="1" WIDTH="100%" NOSAVE="#101090" class="p4">
  <tr>
    <td><strong>列类型</strong> </td>
    <td><strong>需要的存储量</strong> </td>
  </tr>
  <tr>
    <td><code>CHAR(M)</code> </td>
    <td><code>M</code>字节,<code>1 &lt;= M &lt;= 255</code> </td>
  </tr>
  <tr>
    <td><code>VARCHAR(M)</code> </td>
    <td><code>L</code>+1 字节, 在此<code>L &lt;= M</code>和<code>1 &lt;= M &lt;= 255</code> 
    </td>
  </tr>
  <tr>
    <td><code>TINYBLOB</code>, <code>TINYTEXT</code> </td>
    <td><code>L</code>+1 字节, 在此<code>L</code>&lt; 2 ^ 8</td>
  </tr>
  <tr>
    <td><code>BLOB</code>, <code>TEXT</code> </td>
    <td><code>L</code>+2 字节, 在此<code>L</code>&lt; 2 ^ 16</td>
  </tr>
  <tr>
    <td><code>MEDIUMBLOB</code>, <code>MEDIUMTEXT</code> </td>
    <td><code>L</code>+3 字节, 在此<code>L</code>&lt; 2 ^ 24</td>
  </tr>
  <tr>
    <td><code>LONGBLOB</code>, <code>LONGTEXT</code> </td>
    <td><code>L</code>+4 字节, 在此<code>L</code>&lt; 2 ^ 32</td>
  </tr>
  <tr>
    <td><code>ENUM('value1','value2',...)</code> </td>
    <td>1 或 2 个字节, 取决于枚举值的数目(最大值65535)</td>
  </tr>
  <tr>
    <td><code>SET('value1','value2',...)</code> </td>
    <td>1,2,3,4或8个字节, 取决于集合成员的数量(最多64个成员)</td>
  </tr>
</table>

<p><code>VARCHAR</code>和<code>BLOB</code>和<code>TEXT</code>类型是变长类型,对于其存储需求取决于列值的实际长度(在前面的表格中用<code>L</code>表示),而不是取决于类型的最大可能尺寸。例如,一个<code>VARCHAR(10)</code>列能保存最大长度为10个字符的一个字符串,实际的存储需要是字符串的长度(<code>L</code>),加上1个字节以记录字符串的长度。对于字符串<code>'abcd'</code>,<code>L</code>是4而存储要求是5个字节。 
</p>

<p><code>BLOB</code>和<code>TEXT</code>类型需要1,2,3或4个字节来记录列值的长度,这取决于类型的最大可能长度。 
</p>

<p>如果一个表包括任何变长的列类型,记录格式将也是变长的。注意,当一个表被创建时,<strong>MySQL</strong>可能在某些条件下将一个列从一个变长类型改变为一个定长类型或相反。见<a HREF="manual_Reference.html#Silent_column_changes">7.7.1 隐式列指定变化</a>。 </p>

<p>一个<code>ENUM</code>对象的大小由不同枚举值的数量决定。1字节被用于枚举,最大到255个可能的值;2个字节用于枚举,最大到65535 
值。 </p>

<p>一个<code>SET</code>对象的大小由不同的集合成员的数量决定。如果集合大小是<code>N</code>,对象占据<code>(N+7)/8</code>个字节,四舍五入为1,2,3,4或8 
个字节。一个<code>SET</code>最多能有64个成员。 </p>

<h3><a NAME="Numeric_types" HREF="manual_toc.html#Numeric_types">7.3.5 数字类型</a></h3>

<p><strong>MySQL</strong>支持所有的ANSI/ISO SQL92的数字类型。这些类型包括准确数字的数据类型(<code>NUMERIC</code>, 
<code>DECIMAL</code>, <code>INTEGER</code>,和<code>SMALLINT</code>),也包括近似数字的数据类型(<code>FLOAT</code>, 
<code>REAL</code>,和<code>DOUBLE PRECISION</code>)。关键词<code>INT</code>是<code>INTEGER</code>的一个同义词,而关键词<code>DEC</code>是<code>DECIMAL</code>一个同义词。 
</p>

<p><code>NUMERIC</code>和<code>DECIMAL</code>类型被<strong>MySQL</strong>实现为同样的类型,这在SQL92标准允许。他们被用于保存值,该值的准确精度是极其重要的值,例如与金钱有关的数据。当声明一个类是这些类型之一时,精度和规模的能被(并且通常是)指定;例如:</p>

<pre>salary DECIMAL(9,2) </pre>

<p>在这个例子中,<code>9</code>(<code>precision</code>)代表将被用于存储值的总的小数位数,而<code>2</code>(<code>scale</code>)代表将被用于存储小数点后的位数。因此,在这种情况下,能被存储在<code>salary</code>列中的值的范围是从<code>-9999999.99</code>到<code>9999999.99</code>。在ANSI/ISO 
SQL92中,句法<code>DECIMAL(p)</code>等价于<code>DECIMAL(p,0)</code>。同样,句法<code>DECIMAL</code>等价于<code>DECIMAL(p,0)</code>,这里实现被允许决定值<code>p</code>。<strong>MySQL</strong>当前不支持<code>DECIMAL</code>/<code>NUMERIC</code>数据类型的这些变种形式的任一种。这一般说来不是一个严重的问题,因为这些类型的主要益处得自于明显地控制精度和规模的能力。 
</p>

<p><code>DECIMAL</code>和<code>NUMERIC</code>值作为字符串存储,而不是作为二进制浮点数,以便保存那些值的小数精度。一个字符用于值的每一位、小数点(如果<code>scale</code>&gt;0)和<samp>“-”</samp>符号(对于负值)。如果<code>scale</code>是0,<code>DECIMAL</code>和<code>NUMERIC</code>值不包含小数点或小数部分。 
</p>

<p><code>DECIMAL</code>和<code>NUMERIC</code>值得最大的范围与<code>DOUBLE</code>一样,但是对于一个给定的<code>DECIMAL</code>或<code>NUMERIC</code>列,实际的范围可由制由给定列的<code>precision</code>或<code>scale</code>限制。当这样的列赋给了小数点后面的位超过指定<code>scale</code>所允许的位的值,该值根据<code>scale</code>四舍五入。当一个<code>DECIMAL</code>或<code>NUMERIC</code>列被赋给了其大小超过指定(或缺省的)<code>precision</code>和<code>scale</code>隐含的范围的值,<strong>MySQL</strong>存储表示那个范围的相应的端点值。 
</p>

<p>作为对ANSI/ISO SQL92标准的扩展,<strong>MySQL</strong>也支持上表所列的整型类型<code>TINYINT</code>、MEDIUMINT和<code>BIGINT</code>。另一个扩展是<strong>MySQL</strong>支持可选地指定一个整型值显示的宽度,用括号跟在基本关键词之后(例如,<code>INT(4)</code>)。这个可选的宽度指定被用于其宽度小于列指定宽度的值得左填补显示,但是不限制能在列中被存储的值的范围,也不限制值将被显示的位数,其宽度超过列指定的宽度。当与可选的扩展属性<code>ZEROFILL</code>一起使用时,缺省的空格填补用零代替。例如,对于声明为<code>INT(5) 
ZEROFILL</code>的列,一个为4的值作为<code>00004</code>被检索。注意,如果你在一个整型列存储超过显示宽度的更大值,当<strong>MySQL</strong>对于某些复杂的联结(join)生成临时表时,你可能会遇到问题,因为在这些情况下,<strong>MySQL</strong>相信数据确实适合原来的列宽度。 
</p>

<p>所有的整型类型可以有一个可选(非标准的)属性<code>UNSIGNED</code>。当你想要在列中仅允许正数并且你需要一个稍大一点的列范围,可以使用无符号值。 
</p>

<p><code>FLOAT</code>类型被用来标示近似数字的数据类型。ANSI/ISO SQL92标准允许一个可选的精度说明(但不是指数的范围),跟在关键词<code>FLOAT</code>后面的括号内位数。<strong>MySQL</strong>实现也支持这个可选的精度说明。当关键词<code>FLOAT</code>被用于一个列类型而没有精度说明时,<strong>MySQL</strong>使用4个字节存储值。一个变种的句法也被支持,在<code>FLOAT</code>关键词后面的括号给出2个数字。用这个选项,第一个数字继续表示在字节计算的值存储需求,而第二个数字指定要被存储的和显示跟随小数点后的位数(就象<code>DECIMAL</code>和<code>NUMERIC</code>)。当<strong>MySQL</strong>要求为这样一个列,一个小数点后的小数位超过列指定的值,存储值时,该值被四舍五入,去掉额外的位。 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -