在寫sql語句的時候,數據類型是避不可少的一個環節,以下是我在學習的過程中總結的數據類型,僅供參考: 數值類型 類型 有符號(signed)範圍 無符號(unsigned)範圍 描述 tinyint (-128,127) (0,255) 小整數值 smallint (-32768,32767) (0 ...
在寫sql語句的時候,數據類型是避不可少的一個環節,以下是我在學習的過程中總結的數據類型,僅供參考:
- 數值類型
類型 | 有符號(signed)範圍 | 無符號(unsigned)範圍 | 描述 |
tinyint | (-128,127) | (0,255) | 小整數值 |
smallint | (-32768,32767) | (0,65535) | 大整數值 |
mediumint | (-8388608,8388607) | (0,16777215) | 大整數值 |
int 或 integer | (-2147483648,2147483647) | (0,4294967295) | 大整數值 |
bigint | (-2^63,2^63-1) | (0,2^64-1) | 極大整數值 |
float | (-3.402823466 E+38,3.402823466351 E+38) | 0 和 (1.175494351 E-38,3.402823466 E+38) | 單精度浮點數值 |
double | (-1.7976931348623157 E+308,1.7976931348623157 E+308) | 0 和 (2.2250738585072014 E-308,1.7976931348623157 E+308) | 雙精度浮點數值 |
decimal | 依賴於M(精度)和D(標度)的值 | 依賴於M(精度)和D(標度)的值 | 小數值(精確定點值) |
在上表可以看到每一個類型都是有自己相對應的範圍,大於某個數值之後不能再使用原類型了,需註意類型的範圍。
- 字元串類型
類型 | 描述 |
char | 定長字元串 |
varchar | 變長字元串 |
tinyblob | 不超過255個字元的二進位數據 |
tinytext | 段文本字元串 |
blob | 二進位數據的長文本數據 |
text | 長文本數據 |
mediumblob | 二進位形式的中等長度文本數據 |
mediumtext | 中等長度文本數據 |
longblob | 二進位形式的極大文本數據 |
longtext | 極大文本數據 |
字元串類型中char與varchar使用頻率最高,它們的區別在於是否為定長字元串,在描述某一確定值時,比如身份證號碼,在我國身份證號為18為,即使用char,比如姓名,字元長度不一,使用varchar。二進位文本現在使用頻率已經大大降低,可以不做硬性要求。
- 日期時間類型
類型 | 範圍 | 格式 | 描述 |
date | 1000-01-01至9999-12-31 | yyyy-mm-dd | 日期值 |
time | -838:59:59至838:59:59 | hh:mm:ss | 時間值或持續時間 |
year | 1901至2155 | yyyy | 年份值 |
datetime | 1000-01-01 00:00:00至9999-12-31 23:59:59 | yyyy-mm-dd hh:mm:ss | 混合日期和時間值 |
timestamp | 1970-01-01 00:00:01至2038-01-19 03:14:07 | yyyy-mm-dd hh:mm:ss | 混合日期和時間值,時間戳 |
在日期時間類型中特別註意year的範圍是1901-2155,超出範圍就需使用date。
數據類型至關重要,不容忽視。