1.整數型別
整數型別 位元組數 無符號範圍 有符號的範圍
tinyint 1 0~255 -128~127
smalllint 2 0~65535 -32768~32767
mediumint 3 0~16777215 -8388608~8388607
int 4 0~4294967295 -2147483648~2147483647
bigint 8 0~18446744073709551615 -9223372036854775808~9223372036854775808
mysql支援資料型別的後面指定該型別的顯示寬度。其基本形式如下:
格式: 資料型別(顯示寬度)
預設顯示寬度:可以理解為,乙個資料型別的預設顯示寬度正好是能顯示該資料型別的所有值的寬度。
長度tinyint 4
smallint 6
mediumint 9
int 11 無符號則10
bigint 20
tinyint(1)
在整數型別使用時,可以搭配zerofill引數,zerofill引數表示數字不足的顯示空間由0來填充。
注意:使用zerofill時,mysql會自動加上unsigned屬性。那麼,該整數型別只能表示無符號數,其顯示寬度比預設顯示寬度小1。
在設定了顯示寬度時,如果插入的資料寬度大小設定的顯示寬度時,資料依然可以插入,且能夠顯示。該設定的寬度失效。
注意:資料的寬度不能大於預設寬度。如果大於預設寬度,那該資料已經超過了該型別的最大值。因為最大值的寬度必須是小於等於預設寬度。如果乙個值大於最大值,將不可能插入。
整數型別還有乙個auto_increment屬性。自增。
2.浮點數和定點數
mysql中使用浮點數和定點數來表示小數。
浮點數:單精度浮點數(float)和雙精度浮點數(double)。
定義數:decimal
浮點型別 位元組數 負數的取值範圍 非負數的取值範圍
float 4 -3.402823466e+38~-1.175494351e-38 0和-1.175494351e-38~3.402823466e+38
double 8 -1.79769313486223157e+308~-2.2250738585072014e-308 0和-2.2250738585072014e-308~1.79769313486223157e+308
decimal m+2 同double 同double
定點數的儲存空間是根據其精度來決定的。
mysql中可以指定浮點數的精度:
格式: 資料型別(m,d) decimal(10,2)
m-精度,是資料的總長度,小數點佔乙個位置
d-標度,小數點後的長度
如果插入的值的精度高於實際定義的精度,系統會自動進行四捨五入處理。float double不會報錯,decimal會報乙個警告
在儲存小數時,建議使用decimal型別,定點數以字串形式儲存。因此,精度要比浮點數要高。而且,浮點數會出現誤差,這是浮點數一直存在的缺陷。如果對資料的精度要求比較高,還是選擇定點數(decimal)比較安全。
decimal(m,d) 常用於 money 類欄位
3.日期與時間型別
資料型別 位元組數 取值範圍 零值
year 1 1901~2155 0000
date 4 1000-01-01~9999-12-31 0000:00:00
time 3 -838:59:59~838:59:59 00:00:00
datetime 8 1000-01-01 00:00:00~9999-12-31 23:59:59 0000-00-00 00:00:00
timestamp 4 19700101080001~20380119111417 00000000000000
year:
超出範圍就會插入0000
使用2位字串表示,'00'~'69'轉換為2000~2069,'70'~'99'轉換為1970~1999
使用2位數字表示,00~69轉換為2000~2069,70~99轉換為1970~1999。
注意兩位的數字和兩位的字串是不一樣的:0-0000 '0''00'-2000
date:
4個位元組來表示日期。以yyyy-mm-dd的形式來顯示date型別的值。
1)'yyyy-mm-dd'或'yyyymmdd'格式的字串表示。
2)mysql中還支援一些不嚴格的語法格式:'yyyymmdd' '[email protected]@dd' 'yyyy.mm.dd'
3)'yy-mm-dd'或'yymmdd'格式的字串表示。
4)yy取值同year型別中的兩位字串的表示一致。
5)yyyymmdd或yymmdd格式的數字表示。yy取值同上。
雖然mysql支援date型別的一些不嚴格的語法格式。但是,實際運用中,最好還是選擇標準形式。日期中使用-做分隔符,時間用:[email protected]* 等特殊字元做分隔符。
使用current_date和now()轉換為當前系統日期。
4.字串型別
字串型別是mysql中用來儲存字串的資料型別。字串型別包括char varchar blob text enum set。
char 和 varchar 型別
字串型別(m) m-該字串的最大長度為m
char 定長字元型別 0~255
varchar 變長字元型別 5.0版本以前0~255 5.0版本以後0~65535
char(5)和varchar(5)的區別
插入值 char占用位元組數 varchar占用位元組數
'' 5 1
'1' 5 2
'123' 5 4
'1234' 5 5
'12345' 5 6
如果插入值的長度大於m,則插入失敗。
5.text型別
型別 範圍 占用空間
tinytext 0~255 長度+2個位元組
text 0~65535 長度+2個位元組
mediumtext 0~167772150 長度+3個位元組
longtext 0~4294967295 長度+4個位元組
6.enum型別
又稱列舉型別。
enum('值1','值2',...,'值n')
n-代表引數列表中的第n個值,這些值末尾的空格會被系統直接刪除。
enum型別的值只能取列表中的乙個元素。
取值列表中最多能有65535成員。
列表中的每乙個值都有乙個順序排列的編號,mysql存入的是這個編號,而不是值。
7.set型別
在建立表時,set型別的取值範圍就以列表的形式指定了。
set('值1','值2',...,'值n')
set型別的值最多隻以是有64個元素構成的組合。取值可以是其中的乙個或多個。其它特性,與enum類似。
8.二進位制型別
二進位制型別是在資料庫中儲存二進位制資料的資料型別。
型別 取值範圍
binary(m) 位元組數為m,允許長度為0~m的定長二進位制字串
varbinary(m) 允許長度為0~m的變長二進位制字串,位元組數為值的長度加1
bit(m) m位二進位制數,m最大值為64
tinyblob 可變長二進位制資料,最多255個位元組
blob 可變長二進位制資料,最多2e16-1個位元組
mediumblob 可變長二進位制資料,最多2e24-1個位元組
longblob 可變長二進位制資料,最多2e32-1個位元組
MYSQL字元型別
標籤 空格分隔 高效能mysql 第四章 schema與資料型別 字元型別 值的儲存與具體的儲存引擎有關,下面以innodb為例說明 這長字串,需要1或2個額外的位元組記錄字元長度。varchar 10 11byte,varchar 1000 1002byte。update時可能使行變得更長,消耗較...
MySQL字元型別
型別 位元組數有符號型範圍 無符號型範圍 unsigned tinyint m 1位元組 128 127 0 255 smallint m 2位元組 32768 32767 0 65535 mediumint m 3位元組 8388608 8688607 16777215 int m 4位元組 21...
mysql字串型別 MySQL
11.1.3.字串型別概述 在某些情況中,mysql可以將乙個字串列更改為不同於create table或alter table語句中所給出的型別。參見13.1.5.1節,沉寂的列規格變更 mysql 5.1字串資料型別包括部分在mysql 4.1之前的版本中沒有的特性 許多字串資料型別的列定義可以...