mysql中常用的五種數(shù)據(jù)類型 MySQL數(shù)據(jù)包括?
MySQL數(shù)據(jù)包括?mysql數(shù)據(jù)類型有BOOL、TINY INT、INT、BIG INT、FLOAT、DOUBLE、DECIMAL、CHAR、VARCHAR、TINY TEXT、TEXT、Date、
MySQL數(shù)據(jù)包括?
mysql數(shù)據(jù)類型有BOOL、TINY INT、INT、BIG INT、FLOAT、DOUBLE、DECIMAL、CHAR、VARCHAR、TINY TEXT、TEXT、Date、DateTime、TimeStamp、Year等等。
首先,MySQL數(shù)據(jù)類型
主要包括以下五類:
整數(shù)類型:BIT,BOOL,TINY INT,SMALL INT,MEDIUM INT,INT,BIG INT。
浮點類型:浮點、雙精度、十進制。
字符串類型:CHAR,VARCHAR,TINY TEXT,TEXT,MEDIUM TEXT,LONGTEXT,TINY BLOB,BLOB,MEDIUM BLOB,LONG BLOB。
日期類型:日期、日期時間、時間戳、時間、年份。
其他數(shù)據(jù)類型:BINARY、VARBINARY、ENUM、SET、Geometry、Point、MultiPoint、LineString、MultiLineString、Polygon、GeometryCollection等。
創(chuàng)建表結(jié)構(gòu)時常用數(shù)據(jù)類型的作用?
除了標準化插入的數(shù)據(jù)之外,數(shù)據(jù)類型還具有以下功能:
提高效率
對不同的數(shù)據(jù)賦予不同的類型,可以使數(shù)據(jù)庫更好地存儲和管理數(shù)據(jù),從而減少空間占用,提高數(shù)據(jù)訪問速度。例如,如果將數(shù)字123454321存儲為文本類型,它將占用9個字節(jié)的存儲空間,而如果存儲為整數(shù)類型,它將只占用4個字節(jié)的存儲空間。
2.能夠確定處理數(shù)據(jù)的正確。
比如如果是整數(shù)類型,那么123 234解釋為兩個整數(shù)相加,所以結(jié)果是357;如果是文本類型,那么123 234將被解釋為兩個字符串的串聯(lián),所以結(jié)果是123234。
mysql數(shù)據(jù)類型的詳解?
MySQL數(shù)據(jù)庫的表是一個二維表,由一個或多個數(shù)據(jù)列組成。每個數(shù)據(jù)列都有其特定的類型,這決定了MySQL如何查看列數(shù)據(jù)。我們可以將整數(shù)值存儲在字符類型的列中,MySQL會將它們視為字符串。MySQL中有三種類型的列:數(shù)字、字符串和日期/時間。從大類來說,列類型只有三種,就像數(shù)值類型一樣。但是每個列類型都可以細分。下面詳細描述了各種列類型。
數(shù)值類的數(shù)據(jù)列類型包括整型和浮點型。鍵入兩個類別。
Tinyint: 1字節(jié)極小整數(shù),有符號:-128~127,無符號:0 ~ 255 smallint: 2字節(jié)小整數(shù),有符號:-32768~32767,無符號:0 ~ 65535 mediumint: 3字節(jié)中等大小整數(shù),有符號:-8388608。無符號:0 ~ 16777215 int: 4字節(jié)標準整數(shù),有符號:-2147483648~2147483647,無符號:0 ~ 4294967295 bigint: 8字節(jié)大整數(shù),有符號:-9223372036854775808 ~ 92338。無符號:0 ~ 18446440770951615 float: 4字節(jié)單精度浮點數(shù),最小非零值:-1.175494351E-38,最大非零值:-3.4466e 38 double: 8字節(jié)雙精度浮點數(shù),最小非零值:-2.5089.00000000675最大非零值:-1.796913486233本章首先概述了可用的類型并總結(jié)了每種類型的存儲要求,然后提供了每種類型中類型類別的更詳細的描述。概述被有意簡化。更詳細的描述應(yīng)該參考特寫列類型的附加信息,例如,您可以為它指定值的允許格式。下面列出了MySQL支持的列類型。描述中使用了以下代碼字母:m表示最大顯示尺寸。最大顯示大小長度為255。d適用于浮點類型。指示小數(shù)點后的位數(shù)。最大可能值是30,但不應(yīng)大于M-2。方括號( "[ "和 "] ")指定可選的類型修飾符。注意,如果為某列指定了ZEROFILL,MySQL將自動為該列添加無符號屬性。警告:您應(yīng)該知道,當您在兩個整數(shù)值之間使用減法時,如果其中一個是無符號的,那么結(jié)果也是無符號的。參見第6.3.5節(jié)Cast函數(shù)。
tinyint[(m)][無符號][零填充]-128到127。無符號范圍是0到255。BITBOOL它們是TINYINT的同義詞。
SMALLINT[(M)][取消簽名小整數(shù)。有符號的范圍是-32768到32767。無符號范圍是0到65535。
mediumint[(m)][unsigned][zero fill]是一個中等大小的整數(shù)。有符號范圍是-8388608到8388607。無符號范圍是0到16777215。
INT[(M)] [UNSIGNED] [ZEROFILL]正常大小的整數(shù)。有符號范圍是-2147483648到214743647。無符號范圍是0到4294967295。
integer[(m)][unsigned][zero fill]int的同義詞。
bigint[(m)][無符號] [zerofill]是一個大整數(shù)。有符號范圍是-9223372036854775808到9223685447.5807。無符號范圍是0到1844674407370951615。你應(yīng)該對BIGINT列有所了解:BIGINT或者DOUBLE值,所以不應(yīng)該使用大于9223372036854775807(63位)的無符號大整數(shù),bit函數(shù)除外!如果這樣做,結(jié)果中的一些大數(shù)字可能是錯誤的,因為在將BIGINT轉(zhuǎn)換為DOUBLE時存在舍入誤差。MySQL 4.0可以在以下情況下處理BIGINT:使用整數(shù)在BIGINT列中存儲一個大的無符號值。In MIN(big_int_column)和MAX(big_int_column)。運算符(、-、*等。)在兩個操作數(shù)都是整數(shù)時使用。通常,您可以將精確整數(shù)作為字符串存儲在BIGINT列中。在這種情況下,MySQL將執(zhí)行一個字符串到數(shù)字的轉(zhuǎn)換,包括一個雙精度表示,沒有中間值。當兩個參數(shù)都是整數(shù)值時- ", " "和 "* "會用BIGINT運算!這意味著如果兩個大整數(shù)乘積的結(jié)果(或者函數(shù)返回一個整數(shù)的結(jié)果)大于9223372036854775807,可能會得到意想不到的結(jié)果。float(precision)[unsigned][zero fill]浮點數(shù)。精度可以是lt24作為單精度浮點數(shù),以及介于25和53之間的雙精度浮點數(shù)。這些類型類似于下面描述的FLOAT和DOUBLE類型。浮動(x)與相應(yīng)的FLOAT和DOUBLE類型具有相同的范圍,但顯示大小和小數(shù)位數(shù)未定義。在MySQL 3.23中,它是一個真正的浮點值。在MySQL的早期版本中,F(xiàn)LOAT(precision)通常有2個小數(shù)位。注意,由于MySQL中的所有計算都是以雙精度進行的,所以使用FLOAT可能會帶來一些意想不到的問題。見A.5.6節(jié)解決沒有匹配線的問題。Float [(m,d)] [unsigned] [zerofill]小的(單精度)浮點數(shù)。允許的值為-3.4083466E38到-1.175494351E-38,0和1.14351E-38到3.366E38。如果指定了UNSIGNED,則不允許負值。m是顯示寬度,d是小數(shù)位數(shù)。FLOAT沒有參數(shù),或者帶有Xlt 24的FLOAT(X)表示單精度浮點數(shù)。Double [(m,d)] [unsigned] [zerofill]正常大小的浮點數(shù)(雙精度)。允許的值為-1.79769134863157e308到-2.2014e-308,0和2.2014e-308到1.77e33586。如果指定了UNSIGNED,則不允許負值。m是顯示寬度,d是小數(shù)位數(shù)。DOUBLE沒有Hu參數(shù),或者FLOAT(X)具有25 ltXlt 53表示雙精度浮點數(shù)。雙精度[(m,d)][無符號][零填充]實數(shù)[(m,d)][無符號][零填充]它們是DOUBLE的同義詞。Decimal [(m [,d])] [unsigned] [zerofill]未壓縮的浮點數(shù)。工作類似于CHAR列: "打開包裝意味著數(shù)字存儲為字符串,并且值的每一位將使用一個字符。小數(shù)點和負數(shù)- "符號不計入m(但它們的空間是保留的)。如果d為0,該值將沒有小數(shù)點或小數(shù)部分。十進制值的最大范圍與DOUBLE一致,但對于給定的十進制列,實際范圍可以受所選m和d的限制,如果指定了UNSIGNED,則不允許負值。如果省略d,則默認為0。如果省略m,則默認為10。存在在MySQL 3.23之前,m參數(shù)必須包含符號和小數(shù)點所需的空格。dec [(m [,d])][無符號][零填充] numeric [(m [,d])][無符號][零填充] decimal的同義詞。約會。支持的范圍是#391000-01-01#39到#399999-12-31#39。MySQL以#39YYYY-MM-DD#39格式顯示日期值,但是允許您以字符串或數(shù)字的形式為日期列賦值。參見第6 . 2 . 2 . 2章日期時間、日期和時間戳類型。日期時間是日期和時間的組合。支持的范圍是# 391000-01-0100 : 00 : 00 # 39到# 399999-12-3123 : 59 : 59 # 39。MySQL以# 39 yyyy-mm-DD hh : mm : ss # 39的格式顯示日期時間值,但允許您將值作為字符串或數(shù)字賦給日期時間列。參見第6 . 2 . 2 . 2章日期時間、日期和時間戳類型。時間戳[(M)]時間戳。范圍是# 391970-01-0100 : 00 : 00 # 39 2037年之間的任何時間。在MySQL 4.0和更早版本中,時間戳值以YYYYMMDDHHMMSS、YYMMDDHHMMSS、YYYYMMDD或YYMMDD格式顯示,具體取決于m是14(或省略)、12、8還是6,但您可以將時間戳列指定為字符串或數(shù)字。從MySQL 4.1開始,時間戳以字符形式返回,格式為# 39 yyyy-mm-DD HH :·梅喬12-@ .com DD # 39。如果要以數(shù)字形式返回,必須在時間戳字段后添加0。不支持不同的時間戳長度。從MySQL 4.0.12開始,可以使用- n: 59 : 59 # 39到# 39838 : 59 : 59 # 39。MySQL以# 39h h: m: ss # 39的格式顯示時間值,但允許您使用字符串或數(shù)字為時間列賦值。參見第6 . 2 . 2 . 3章時間類型。YEAR[(2 | 4)]2位數(shù)或4位數(shù)格式的年份(默認為4位數(shù))。允許的值是1901到2155,0000(4位年份格式)和1970-2069 (70-69),使用2位格式。MySQL以YYYY格式顯示年份值,但允許您使用字符串或數(shù)字為YEAR列賦值。(MySQL 3.22之前不支持年份類型。)參見第6 . 2 . 2 . 4章年份類型。[NATIONAL] CHAR(M) [BINARY]一個固定長度的字符串,在存儲時,總是用空格將右側(cè)填充到指定的長度。m的范圍是0到255(MySQL 3.23版之前是1到255)。當值被檢索時,尾隨空格將被刪除。除非指定了關(guān)鍵字BINARY,否則將根據(jù)默認字符集對CHAR值進行排序和比較,而不考慮大小寫。NATIONAL CHAR(或簡稱NCHAR)是由ANSI SQL定義的CHAR列,它將使用默認字符集。這是MySQL中的默認設(shè)置。CHAR是CHARACTER的縮寫。MySQL允許您創(chuàng)建CHAR(0)類型的列。一些老程序在運行時需要一個欄目,但他們不需要。;t使用該列的值,因此您必須構(gòu)建該列以適應(yīng)它。在這種情況下,CHAR(0)將非常有益。當一個列只需要存儲兩個值:一個是CHAR(0)(該列沒有定義為NOT NULL)時,只需要一位就可以存儲兩個值:NULL或#34#。34。參見第6 . 2 . 3 . 1章CHAR和VARCHAR類型。CHAR這是CHAR(1)的同義詞。[NATIONAL] VARCHAR(M) [BINARY]長度可變的字符串。注意:保存時尾部空格將被刪除(這與ANSI SQL約定不同)。m的范圍是0到255(MySQL 4 . 0 . 2之前的版本是1到255)。VARCHAR值以不區(qū)分大小寫的進行排序和比較,除非指定了關(guān)鍵字BINARY。參見第6.5.3.1章。;的隱式列定義更改。VARCHAR是字符變化的縮寫。參見第6 . 2 . 3 . 1章CHAR和VARCHAR類型。TINYBLOBTINYTEXT是一個BLOB或文本列,最大長度為255(2 ^ 8-1)個字符。參見第6.5.3.1章。;的隱式列定義更改。參見第6 . 2 . 3 . 2章BLOB和文本類型。最大長度為65535(2 ^ 16-1)個字符的BLOBTEXT BLOB或文本列。參見第6.5.3.1章。;的隱式列定義更改。參見第6 . 2 . 3 . 2章BLOB和文本類型。最大長度為16777215(2 ^ 24-1)個字符的BLOB或文本列。參見第6.5.3.1章。;的隱式列定義更改。參見第6 . 2 . 3 . 2章BLOB和文本類型。最大長度為4294967295(2 ^ 32-1)個字符的BLOB或文本列。參見第6.5.3.1章。;的隱式列定義更改。注意,由于服務(wù)器/客戶機協(xié)議和MyISAM表通常有每個通信包/表行16M的限制,所以您仍然可以 不要使用這種類型的所有產(chǎn)品。參見第6 . 2 . 3 . 2章BLOB和文本類型。枚舉(#39值1#39,#39值2#39,...)一個枚舉類型。只有一個值的字符串對象,該值選自值列#39value1#39、#39value2#39、...,NULL或特殊#34#34錯誤值。一個枚舉列最多可以有65535個不同的值。參見第6 . 2 . 3 . 3節(jié)枚舉類型。設(shè)置(#39值1#39,#39值2#39,...)一套。一個可以有零個或多個值的string對象,其中每個值都必須從值列#39value1#39,#39value2#3中選擇。9、...。集合列最多可以有64個成員。參見第6 . 2 . 3 . 4章器械包類型。MySQL支持所有ANSI/ISO SQL92數(shù)字類型。這些類型包括精確數(shù)字的數(shù)據(jù)類型(數(shù)字、小數(shù)、整數(shù)和小整數(shù))和近似數(shù)字的數(shù)據(jù)類型(浮點、實數(shù)和雙精度)。關(guān)鍵字INT是整數(shù)的同義詞,關(guān)鍵字DEC是小數(shù)的同義詞。MySQL將數(shù)字和十進制類型實現(xiàn)為相同的類型,這在SQL92標準中是允許的。它們用于存儲對準確性有重要要求的值,如與貨幣相關(guān)的數(shù)據(jù)。當用其中一個來聲明一個列時,可以(通常)指定精度和數(shù)值范圍;例如,本例中的salary DECIMAL(5,2),5 (precision)表示重要的小數(shù)位數(shù),2 (data scale)表示小數(shù)點后的位數(shù)。因此,在這種情況下,salary列可以存儲范圍從-99.99到99.99的值。(實際上,MySQL可以在這個列中存儲高達999.99的值,因為它不存儲正符號)。翻譯和翻譯注:M和D對DECIMAL(M,D)范圍的影響類型表示取值范圍(MySQL lt 3.23)和取值范圍(MySQL gt 3.23) DECIMAL(4,1) -9.9到99.9-9999.9到9999.9 DECIMAL(5,1) -999.9到9999.9-9999.9到9999.9 DECIMAL(6,1)-999.9到9999.9注釋結(jié)束:在ANSI/ISO SQL92中,語法DECIMAL(p)等價于DECIMAL(p,0)。類似地,在執(zhí)行允許的決策值p的地方,語法DECIMAL等價于DECIMAL(p,0)。MySQL目前不支持DECIM。AL/NUMERIC數(shù)據(jù)類型的任何變體。一般來說,這不是一個嚴重的問題,這些類型的主要功能優(yōu)勢可以通過明確控制精度和數(shù)值范圍來獲得。十進制和數(shù)字值存儲為字符串,而不是二進制浮點數(shù),以保護這些值的十進制準確性。數(shù)值的每一位、小數(shù)點(如果scalegt 0)和 "- "符號(表示負值)。如果scale為0,小數(shù)和數(shù)值不包含小數(shù)點或小數(shù)部分。DECIMAL和NUMERIC值的最大范圍與DOUBLE相同,但對于給定的DECIMAL或NUMERIC列,其實際范圍可以設(shè)置該列的精度或小數(shù)位數(shù)限制。當分配給該列小數(shù)點的位數(shù)超過scale指定的值時,該列將根據(jù)scale進行舍入。當十進制或數(shù)字列的大小超過precisionandscale的指定(或默認)限制范圍時,MySQL會將該值存儲為列范圍的端點值。