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