數(shù)據(jù)類型???????? 字節(jié)數(shù)??????????? 范圍????????????????????? 無符號范圍
成都創(chuàng)新互聯(lián)專注于望都企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站,電子商務(wù)商城網(wǎng)站建設(shè)。望都網(wǎng)站建設(shè)公司,為望都等地區(qū)提供建站服務(wù)。全流程定制制作,專業(yè)設(shè)計,全程項目跟蹤,成都創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務(wù)
TINYINT ? ? ????? 1字節(jié)? ? ? ?? -128~127??????????????????? 0~255
FLOAT?????????????? 4字節(jié)
DOUBLE?????????? 8字節(jié)
DECIMAL???????? 8字節(jié)
CHAR????????????????? M個字節(jié) 0=M=255
VARCHAR???????? l+1個字節(jié)? l=M 0=M=255
如果超出數(shù)據(jù)的范圍 會產(chǎn)生截斷? 超出最小值則按照最小值?? 超出最大值則按照最大值
顯示長度與數(shù)據(jù)的寬度是沒有關(guān)系的
測試浮點型
float,double的數(shù)據(jù)類型會自動根據(jù)需要顯示的數(shù)據(jù)長度進行四舍五入
測試字符串類型
CHAR的效率高于VARCHAR?? CHAR是拿空間換取時間? VARCHAR是拿時間換取空間
CHAR默認存儲數(shù)據(jù)的時候,后面會用空格填充到指定長度,而在檢索的時候去掉后面的空格VARCHAR存儲的時候不進行填充,尾部的空格會留下
TEXT相關(guān)的列不能有默認值,檢索的時候不存在大小寫轉(zhuǎn)換
測試ENUM/SET類型
測試集合
測試日期時間類型
TIME?? ? [D]?? HH:MM:SS?????? D表示天數(shù)0~34
例子:2?? 3:34:30????? =》2*24+3:34:30
測試DATE類型
DATE??? YYYY-MM-DD?? /YYYYMMDD
測試DATETIME
測試TIMESTAMP
測試YEAR
對于浮點列類型,在MySQL中單精度值使用4個字節(jié),雙精度值使用8個字節(jié)。
FLOAT類型用于表示近似數(shù)值數(shù)據(jù)類型。SQL標(biāo)準(zhǔn)允許在關(guān)鍵字FLOAT后面的括號內(nèi)選擇用位指定精度(但不能為指數(shù)范圍)。MySQL還支持可選的只用于確定存儲大小的精度規(guī)定。0到23的精度對應(yīng)FLOAT列的4字節(jié)單精度。24到53的精度對應(yīng)DOUBLE列的8字節(jié)雙精度。
MySQL允許使用非標(biāo)準(zhǔn)語法:FLOAT(M,D)或REAL(M,D)或DOUBLE PRECISION(M,D)。這里,“(M,D)”表示該值一共顯示M位整數(shù),其中D位位于小數(shù)點后面。例如,定義為FLOAT(7,4)的一個列可以顯示為-999.9999。MySQL保存值時進行四舍五入,因此如果在FLOAT(7,4)列內(nèi)插入999.00009,近似結(jié)果是999.0001。
MySQL將DOUBLE視為DOUBLE PRECISION(非標(biāo)準(zhǔn)擴展)的同義詞。MySQL還將REAL視為DOUBLE PRECISION(非標(biāo)準(zhǔn)擴展)的同義詞,除非SQL服務(wù)器模式包括REAL_AS_FLOAT選項。
為了保證最大可能的可移植性,需要使用近似數(shù)值數(shù)據(jù)值存儲的代碼應(yīng)使用FLOAT或DOUBLE PRECISION,不規(guī)定精度或位數(shù)。
DECIMAL和NUMERIC類型在MySQL中視為相同的類型。它們用于保存必須為確切精度的值,例如貨幣數(shù)據(jù)。當(dāng)聲明該類型的列時,可以(并且通常要)指定精度和標(biāo)度;例如:
salary DECIMAL(5,2)
在該例子中,5是精度,2是標(biāo)度。精度表示保存值的主要位數(shù),標(biāo)度表示小數(shù)點后面可以保存的位數(shù)。
在MySQL 5.1中以二進制格式保存DECIMAL和NUMERIC值。
標(biāo)準(zhǔn)SQL要求salary列能夠用5位整數(shù)位和兩位小數(shù)保存任何值。因此,在這種情況下可以保存在salary列的值的范圍是從-999.99到999.99。
在標(biāo)準(zhǔn)SQL中,語法DECIMAL(M)等價于DECIMAL(M,0)。同樣,語法DECIMAL等價于DECIMAL(M,0),可以通過計算確定M的值。在MySQL 5.1中支持DECIMAL和NUMERIC數(shù)據(jù)類型的變量形式。M默認值是10。
DECIMAL或NUMERIC的最大位數(shù)是65,但具體的DECIMAL或NUMERIC列的實際范圍受具體列的精度或標(biāo)度約束。如果此類列分配的值小數(shù)點后面的位數(shù)超過指定的標(biāo)度允許的范圍,值被轉(zhuǎn)換為該標(biāo)度。(具體操作與操作系統(tǒng)有關(guān),但一般結(jié)果均被截取到允許的位數(shù))。
浮點型
float(255,30) 共255位 小數(shù)部分30位
double(255,30) 共255位 小數(shù)部分30位
dacimal(65,30) 共65位 小數(shù)部分30位
精準(zhǔn)度驗證
create table t15(id float(255,30))
create table t15(id double(255,30))
create table t15(id decimal(60,30))
float double decimal
float數(shù)值類型用于表示單精度浮點數(shù)值,
而double數(shù)值類型用于表示雙精度浮點數(shù)值
,float和double都是浮點型,而decimal是定點型;
MySQL 浮點型和定點型可以用類型名稱后加(M,D)來表示,
M表示該值的總共長度,D表示小數(shù)點后面的
長度,M和D又稱為精度和標(biāo)度,如float(7,4)
的 可顯示為-999.9999,MySQL保存值時進
行四舍五入,如果插入999.00009,則結(jié)果為999.0001