標籤:double mysql 空間
mysql 資料類型的概念
定義資料類型的本質上是定義列 類似於描述列
資料分類的意義
分配合適的儲存空間
採用不同的操作方法
對應不同的需求
整數類型
正負0 造成 負數多一個
tinyint 1byte 0-255 -128 ~ 127
smallint2b0~65535
mediumt3b
int4b
bigint8b
帶小數的類型
float4b0,(3.4)
double8b
decimalM>D M+2
M<D D+2
decimal 最大支援 (65,30) 預設為(10,0)
M 整數位
D 小數位
日期和時間類型
類型格式儲存需求範圍
YEAR(M)YYYY/YY1b1901/19792155/2069
TIMEHH:MM:SS3b-838:59:59838:59:59
DATEYYYY-MM-DD3b1000-01-019999-12-31
DATETIMEYYYY-MM-DD HH:MM:SS 8b1000-01-01 00:00:00 9999-12-31 23:59:59
TIMESTMPYYYY-MM-DD HH:MM:SS 4b1970-01-01 00:00:00 2038-01-19 03:14:07 UTC
use db2
create table t_year(
col1 year(4),
col2 year(2)
);
inster into t_year values (2014),(14)
select * from t_year
當用單引號 把0括上 預設從 2000年開始
inster into t_time values (‘10:10:10‘);
(‘2 10:10‘) TIME 就變成了 (58:10:00);
字串類型
文本字串類型和二進位字串類型
不僅可以儲存字串,還可以儲存其它資料
字串可以區分或不區分大小比較
支援進行模式比對尋找
類型大小範圍用途儲存要求
char(M)定長字串0-255b定長字串Mbytes 1<=M<=255
varchar(M)0-65535b變長字串L+1 bytes L<=M 且 1<=M<=255
tinybolb0-255
tinytext0-255
blob0-65535
text0-65535
mediumblob0-16777215
mediumtext0-16777215
logngblob0-4294067295
longtext0-4294067295
enum1-2
set1-8
show variables like ‘sql_mode‘;
text 類型
長的非二進位字串
例如:文章、評論
可以把text類型理解為varchar 加長增強版
text 類型不區分大小寫 匹配查詢的時候無法匹配大小寫
enum類型
枚舉型 不區分大小寫
create table t1 (sex enum (‘F‘,‘M‘,‘UN‘));
set類型
可以多選
create table t2(s1 set(‘a‘,‘b‘,‘c‘));
desc t1 查看錶結構
二進位類型
no character set
以bytes為單位儲存,文本是用 字元 儲存的
字串類型的選擇
不同的資料引擎,選擇傾向不一樣
myisam 中 char 效率高於 varchar
innodb 中 char 效率基本等於 varchar 但是varchar 可變長度的優勢顯示出來了
memory 中 car varchar 效率類似,
不同的使用者選擇傾向不同
char 適合短的字元,並且經常變更的內容
varchar 與上條相反。
浮點數和定點數的選擇
精度要求不同,選擇大不同
相比較而言,定點數的計算代價要昂貴的多
decimal 跟錢有關的事情, 對資料精度要求高的採用
大資料類型的選擇
能不用盡量不用
text 和 blob有很多替代選擇
如果存在經常的刪除和更新
建議定期使用 optimize table 進行磁碟重組
建議 調用 檔案地址存進去
日期類型的選擇
timestamp紮用空間少,但是注意他的特性,有時區限制,根據市區的選擇會編號
總結
定義資料類型就是定義列
資料 字串 整數、浮點 定點 日期 二進位 enum set boleen
不同引擎 不同表現選擇不同
需求選擇
mysql資料類型整理