国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
CH 11 列的類型
 

Chapter 11. Column Types

Table of Contents

11.1. Column Type Overview

11.1.1. Overview of Numeric Types

11.1.2. Overview of Date and Time Types

11.1.3. Overview of String Types

11.2. Numeric Types

11.3. Date and Time Types

11.3.1. The DATETIME, DATE, and TIMESTAMP Types

11.3.2. The TIME Type

11.3.3. The YEAR Type

11.3.4. Y2K Issues and Date Types

11.4. String Types

11.4.1. The CHAR and VARCHAR Types

11.4.2. The BINARY and VARBINARY Types

11.4.3. The BLOB and TEXT Types

11.4.4. The ENUM Type

11.4.5. The SET Type

11.5. Column Type Storage Requirements

11.6. Choosing the Right Type for a Column

11.7. Using Column Types from Other Database Engines

MySQL支持幾種類類型,每種類型里又有若干種類別:numeric types, date and time types, and string (character) types. 本章首先概覽這些列類型,然后給出詳細的介紹。

MySQL 5.0 支持處理空間數(shù)據(jù)的擴展。有關(guān)空間類型見: Chapter 17, Spatial Extensions in MySQL.

一些列類型描述使用如下約定:

 M

表示最大長度。最大的合法的顯示長度是255。

D

用于浮點類型和定點類型,表示小數(shù)點之后的數(shù)字位數(shù)。最大可能值是30,但是最好不要超過M-2.

  • 方括號 (‘[’ and ‘]’) 表示類型指示器的可選部分。

11.1. Column Type Overview

11.1.1. Overview of Numeric Types

下面是數(shù)字類型的總結(jié)。詳細信息見: Section 11.2, “Numeric Types”. 列的存儲要求見: Section 11.5, “Column Type Storage Requirements”.

 

如果你給數(shù)字列指定了 ZEROFILL, MySQL會自動給這個列賦屬性值為UNSIGNED.

SERIAL BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE的別名。

整數(shù)列的定義中SERIAL DEFAULT VALUE NOT NULL AUTO_INCREMENT UNIQUE的別名.

警告: 當你在兩個整數(shù)值之間使用減法運算時,如果一個是UNSIGNED類型,那么結(jié)果是UNSIGNED類型。見:Section 12.8, “Cast Functions and Operators”.

  • BIT[(M)]

A bit-field type. M 表示每個值的bit數(shù),從164。默認是1。

這個數(shù)值類型在 MySQL 5.0.3 中出項,屬于 MyISAM, 5.0.5 中擴展到了 MEMORY, InnoDB, and BDB. 5.0.3之前, BIT is TINYINT(1)的同義詞。

  • TINYINT[(M)] [UNSIGNED] [ZEROFILL]

一個很小的整數(shù)。其有符號值的范圍是 -128 127. 無符號值的范圍是 0 255.

  • BOOL, BOOLEAN

他們是 TINYINT(1)的同義詞。0值認為是false。非0值認為是true.

In the future, full boolean type handling will be introduced in accordance with standard SQL.

  • SMALLINT[(M)] [UNSIGNED] [ZEROFILL]

小整數(shù)。有符號值的范圍是-32768 to 3276.。無符號值的范圍是0 to 65535。

  • MEDIUMINT[(M)] [UNSIGNED] [ZEROFILL]

中等大?。?span>medium-size)的整數(shù)。有符號值的范圍是-8388608 to 8388607。無符號值的范圍是0 to 16777215

  • INT[(M)] [UNSIGNED] [ZEROFILL]

一般大?。?span>normal-size)的整數(shù). The signed range is -2147483648 to 2147483647. The unsigned range is 0 to 4294967295.

  • INTEGER[(M)] [UNSIGNED] [ZEROFILL]

INT的同義詞。

  • BIGINT[(M)] [UNSIGNED] [ZEROFILL]

一個大整數(shù)。有符號值的范圍是-9223372036854775808 to 9223372036854775807。無符號值的范圍是0 to 18446744073709551615。.

對于BIGINT列,你應(yīng)該注意以下問題:

    • 所有算術(shù)使用 BIGINT DOUBLE , 所以你不能使用大于9223372036854775807 (63 bits)的無符號值,除非使用bit函數(shù)/功能(function)。如果你那樣做了,結(jié)果中的最后幾位數(shù)字可能會是錯的。因為當把BIGINT值轉(zhuǎn)換為DOUBLE值時出現(xiàn)的取正錯誤。

MySQL 5.0 在下列情況下可以處理BIGINT 

      • 當使用整數(shù)在BIGINT列存儲大的無符號值時。
      • MIN(col_name) MAX(col_name), 如果col_name涉及到一個BIGINT .
      • 當使用操作符 (+, -, *, and so on)時,而且兩個操作數(shù)都是整數(shù)。  
    • 你總是通過存儲一個字符串存儲一個精確的整數(shù)值到BIGINT列中。這樣, MySQL 執(zhí)行一個字符串到數(shù)值的轉(zhuǎn)換。這不涉及到雙精確度的表示。(that involves no intermediate double-precision representation.
    • 當兩個操作數(shù)都是整數(shù)值時,-, +, * 操作符使用BIGINT進行算術(shù)。這表示如果你對兩個大整數(shù)相乘,當結(jié)果大于9223372036854775807時,你會得到一個預(yù)想不到的結(jié)果。
  • FLOAT[(M,D)] [UNSIGNED] [ZEROFILL]

小的(單精度)的數(shù)字。范圍是-3.402823466E+38 -1.175494351E-38, 0, 1.175494351E-38 3.402823466E+38.這些是基于IEEE標準的理論上的限制。實際的范圍可能稍微小些,這取決于你的硬件和操作系統(tǒng)。  

M 是小說的總位數(shù)。 D是小數(shù)點之后的數(shù)字位數(shù)。如果MD漏寫了,那么缺省的限制是你的硬件決定的。單精度的浮點數(shù)精確到大約小數(shù)點后7位。

如果指定UNSIGNED ,是不允許有負值的。

使用 FLOAT可能會產(chǎn)生預(yù)想不到的結(jié)果,因為所有MySQL中的計算都是按照雙精度計算的。見: Section A.5.7, “Solving Problems with No Matching Rows”.

  • DOUBLE[(M,D)] [UNSIGNED] [ZEROFILL]

一般大大?。p精度)的浮點數(shù)。范圍是-1.7976931348623157E+308 -2.2250738585072014E-308, 0, 2.2250738585072014E-308 1.7976931348623157E+308.這些是理論上的限制。實際情況取決于你的硬件和操作系統(tǒng)。

M 是小數(shù)的總位數(shù)。D是小數(shù)點后的數(shù)字位數(shù)。 如果MD漏寫了,那么這個限制由你的硬件決定。一個雙精度的浮點數(shù)精確到小數(shù)點后15位。  

如果指定 UNSIGNED 則不允許有負值。

  • DOUBLE PRECISION[(M,D)] [UNSIGNED] [ZEROFILL], REAL[(M,D)] [UNSIGNED] [ZEROFILL]

DOUBLE的同意詞。異常:如果服務(wù)器的SQL模式包括 REAL_AS_FLOAT 選項, REAL FLOAT 而非 DOUBLE的同義詞。

  • FLOAT(p) [UNSIGNED] [ZEROFILL]

浮點數(shù)。p 表示bit的精確位。但是 MySQL 只是使用這個值來確定是否給結(jié)果列一個FLOATDOUBLE值。如果 p 024,數(shù)值類型成為FLOAT,沒有DD值。如果p 2553,則數(shù)值類型為DOUBLE,沒有MD

FLOAT(p) 語法是用來解決ODBC兼容的。

  • DECIMAL[(M[,D])] [UNSIGNED] [ZEROFILL]

MySQL 5.0.3 及其以上版本:

A packed “exact” fixed-point number. M 是小數(shù)的總位數(shù)(the precision) , D 是小數(shù)點之后的數(shù)字位數(shù)。小數(shù)點和負號 ‘-’ 不包括在 M.中。如果 D 0, 值沒有小說點或小說部分。DECIMAL中最大的(M) 65 (64 from 5.0.3 to 5.0.5). 最大的 (D) 30.如果省略D ,默認值是 is 0. 如果省略M,默認是10。  

如果指定UNSIGNED 就不允許有負值。

DECIMAL列的所有基本的計算 (+, -, *, /) 都是65位精度的。  

 MySQL 5.0.3之前:

An unpacked fixed-point number. Behaves like a CHAR column; “unpacked” means the number is stored as a string, using one character for each digit of the value. M is the total number of digits and D is the number of digits after the decimal point. The decimal point and (for negative numbers) the ‘-’ sign are not counted in M, although space for them is reserved. If D is 0, values have no decimal point or fractional part. The maximum range of DECIMAL values is the same as for DOUBLE, but the actual range for a given DECIMAL column may be constrained by the choice of M and D. If D is omitted, the default is 0. If M is omitted, the default is 10.

If UNSIGNED is specified, negative values are disallowed.

  • DEC[(M[,D])] [UNSIGNED] [ZEROFILL], NUMERIC[(M[,D])] [UNSIGNED] [ZEROFILL], FIXED[(M[,D])] [UNSIGNED] [ZEROFILL]

都是DECIMAL的同義詞。 The FIXED synonym is available for compatibility with other servers.

11.1.2Overview of Date and Time Types

時間類型如下。詳見: Section 11.3, “Date and Time Types”. 存儲要求見: Section 11.5, “Column Type Storage Requirements”.

  • DATE

日期. 范圍是1000-01-019999-12-31‘. MySQL 用格式‘YYYY-MM-DD‘表示DATE 但是允許你使用數(shù)字或字符串給日期賦值。

  • DATETIME

日期和時間的結(jié)合. 范圍是 ‘1000-01-01 00:00:00‘ ‘9999-12-31 23:59:59‘. MySQL 用格式‘YYYY-MM-DD HH:MM:SS‘表示DATETIME, 但是允許你使用數(shù)值或字符串給DATETIME賦值。

  • TIMESTAMP[(M)]

A timestamp. 范圍是 ‘1970-01-01 00:00:00‘ partway through the year 2037.

TIMESTAMP 列對于記錄INSERTUPDATE操作的時間和日期的記錄是很有用的。如果你沒有指定值,那么表格中的第一個 TIMESTAMP 列制動設(shè)置為最近操作過的日期和時間。你也可以通過給它指定一個NULL值來為TIMESTAMP列設(shè)置一個當前日期和時間。 .

MySQL 5.0中, TIMESTAMP作為一個格式為‘YYYY-MM-DD HH:MM:SS‘的字符串返回。 其顯示寬度為19個字符。如果你想要取得其數(shù)字值,你應(yīng)該加+0timestamp列上。

  • TIME

A time. 范圍是 ‘-838:59:59‘ ‘838:59:59‘. MySQL 以格式‘HH:MM:SS‘顯示TIME ,但是允許你使用字符串或數(shù)字來給TIME指定值。

  • YEAR[(2|4)]

格式為2個或4個數(shù)字的年。默認是4個數(shù)字格式。在4個數(shù)字的格式中,其范圍是190121550000。2個數(shù)字的格式的范圍是7069,表示19702069年。MySQL 以格式YYYY表示年,但是允許使用字符串或數(shù)字來指定年值。

11.1.3. Overview of String Types

字符串列的類型如下。詳細信息見: Section 11.4, “String Types”. 存儲要求見 in Section 11.5, “Column Type Storage Requirements”.

I有時,MySQL可以把一個string列轉(zhuǎn)換為不同的類型。詳見: Section 13.1.5.1, “Silent Column Specification Changes”.

MySQL 5.0 中的string數(shù)據(jù)類型有以前的4.1版本不同的性質(zhì):

許多字符串數(shù)據(jù)類型的列定義包括指定字符集的屬性CHARACTER SET ,可選,校驗. (CHARSET CHARACTER SET的同義詞。) 這些屬性也適用于 CHAR, VARCHAR, the TEXT types, ENUM, and SET. :

·                CREATE TABLE t

·                (

·                    c1 CHAR(20) CHARACTER SET utf8,

·                    c2 CHAR(20) CHARACTER SET latin1 COLLATE latin1_bin

·                );

這個表定義了一個字符集為utf8的名為c1的列,一個字符集為latin1且二進制校驗該集合的名為c2的列。二進制校驗大小寫敏感。

  • MySQL 5.0 用字符單位來解釋字符列定義的長度。(以前的 MySQL 版本用byte定義。)
  • 對于 CHAR, VARCHAR, TEXT 類型, BINARY 屬性使得列可以指定字符集合中的二進制校驗。
  • 字符列的排序和比較是基于指定的字符集合的。對于較早的版本,排序和比較是基于服務(wù)其的字符集合校驗的。對于 CHAR VARCHAR , 你可以使用BINARY屬性來使得列的排序和比較是使用固有的字符碼的,而非詞匯順序。

更多有關(guān)MySQL 5.0字符集合的信息見: Chapter 10, Character Set Support.

  • [NATIONAL] CHAR(M) [BINARY | ASCII | UNICODE]

固定長度的字符串,存儲時通常是右填充的。M 表示列的長度。MySQL 5.0中范圍是0255。

注意: 當讀取CHAR值時,末尾的空格被移除。

Before MySQL 5.0.3, a CHAR column with a length specification greater than 255 is converted to the smallest TEXT type that can hold values of the given length. For example, CHAR(500) is converted to TEXT, and CHAR(200000) is converted to MEDIUMTEXT. This is a compatibility feature. However, this conversion causes the column to become a variable-length column, and also affects trailing-space removal.

MySQL 5.0.3 及其以后版本中,如果想指定CHAR的長度大于255,將會出錯。

mysql> CREATE TABLE c1 (col1 INT, col2 CHAR(500));

ERROR 1074 (42000): Column length too big for column ‘col‘ (max = 255); use BLOB or TEXT instead

mysql> SHOW CREATE TABLE c1;

ERROR 1146 (42S02): Table ‘test.c1‘ doesn‘t exist

CHAR CHARACTER的縮寫。 NATIONAL CHAR (或其等價形式 NCHAR) 是標準的定義CHAR 列的SQL 方式,且應(yīng)使用默認字符集。. This is the default in MySQL.

BINARY 屬性是attribute is shorthand for specifying the binary collation of the column character set. Sorting and comparison is based on numeric character values.

列類型 CHAR BYTE CHAR BINARY的別名. This is a compatibility feature.

ASCII 屬性可以指定給CHAR。它指定latin1字符集。

 MySQL 5.0UNICODE屬性可以指定給CHAR。 它指定了ucs2字符集。  

MySQL 允許創(chuàng)建一個類型為CHAR(0)的列。This is mainly useful when you have to be compliant with some old applications that depend on the existence of a column but that do not actually use the value. This is also quite nice when you need a column that can take only two values: 一個不被指定為NULL CHAR(0) 列只占有一個bit,并且只可以賦值為NULL’’。.

  • CHAR

等價于CHAR(1).

  • [NATIONAL] VARCHAR(M) [BINARY]

可變長度的字符串。M 表示列的最大長度。. MySQL 5.0.3之前,M 的范圍是 0 255 。之后版本中M 0 65,535。 (VARCHAR的實際長度是取決于你使用的行數(shù)的最大值和字符集的。MySQL 5.0.3中最大有效長度是65,532 bytes.)

Note: Before 5.0.3, trailing spaces were removed when VARCHAR values were stored, which differs from the standard SQL specification.

Previus to MySQL 5.0.3, a VARCHAR column with a length specification greater than 255 was converted to the smallest TEXT type that could hold values of the given length. For example, VARCHAR(500) was converted to TEXT, and VARCHAR(200000) was converted to MEDIUMTEXT. This was a compatibility feature. However, this conversion affected trailing-space removal.

VARCHAR CHARACTER VARYING 的縮寫。

In MySQL 5.0, the BINARY attribute is shorthand for specifying the binary collation of the column character set. Sorting and comparison is based on numeric character values.

Starting from MySQL 5.0.3, VARCHAR is stored with a one-byte or two-byte length prefix + data. The length prefix is two bytes if the VARCHAR column is declared with a length greater than 255.

  • BINARY(M)

BINARY 類似于CHAR ,單存儲的是byte字符串而不是非byte字符串。

  • VARBINARY(M)

The VARBINARY 類似于 VARCHAR ,但是存儲的是byte字符串,而不是非byte字符串。  

  • TINYBLOB

BLOB列的最大長度是255 (28 – 1) bytes.

  • TINYTEXT

TEXT 列的最大長度是255 (28 – 1) characters.

  • BLOB[(M)]

 BLOB 最大長度是 65,535 (216 – 1) bytes.

MySQL 5.0中可選長度 M 也可以這種類型給出。 如果這樣做了,那么 MySQL將創(chuàng)建最小的BLOG類型來存儲M byte值。

TEXT[(M)]

TEXT 最大長度 65,535 (216 – 1) characters.

In MySQL 5.0, an optional length M can be given. Then MySQL will create the column as the smallest TEXT type large enough to hold values M characters long.

  • MEDIUMBLOB

BLOB列最大長度 16,777,215 (224 – 1) bytes.

  • MEDIUMTEXT

TEXT 列最大長度16,777,215 (224 – 1) characters.

  • LONGBLOB

BLOB 列最大長度 4,294,967,295 or 4GB (232 – 1) bytes. LONGBLOG的最大有效長度取決于客戶/服務(wù)器協(xié)議和可用的寄存器的最大包的大小。 effective (permitted) length of LONGBLOB columns depends on the configured maximum packet size in the client/server protocol and available memory.

  • LONGTEXT

TEXT 列的最大長度是 4,294,967,295 or 4GB (232 – 1) characters. 最大有效長度取決于客戶/服務(wù)器協(xié)議和可用的寄存器的最大包的大小。effective (permitted) length of LONGTEXT columns depends on the configured maximum packet size in the client/server protocol and available memory.

  • ENUM(‘value1‘,‘value2‘,...)

枚舉類型。一個字符串對象只能右一個值,且必須是value1‘, ‘value2‘, ...其中的一個。NULL 或?qū)S玫?span> ‘‘ 錯誤值。 ENUM 列可以右最多65,535 個互斥值。 ENUM 值是用內(nèi)部的整數(shù)表示的。

  • SET(‘value1‘,‘value2‘,...)

集合。一個字符串對象有一個或多個值。每一必須從value1‘, ‘value2‘, ...中選擇。SET 列最多有64個元素。SET 值在內(nèi)部是用整數(shù)表示的。

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
MySQL 從零開始:05 數(shù)據(jù)類型
MySQL數(shù)據(jù)類型
Mysql 的ERROR 1005 (HY000): Can't create table 'xxx' (errno: 150)
字段類型與合理的選擇字段類型
MySQL數(shù)據(jù)類型和常用字段屬性總結(jié)
mysql 字段類型說明
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服