MySQL提供的資料型別包括數值型別(整數型別和小數型別)、字串型別、日期型別、復合型別(復合型別包括enum型別和set型別)以及二進制型別 ,
1,整數型別:

整數型別的數,默認情況下既可以表示正整數又可以表示負整數(此時稱為有符號數),如果只希望表示零和正整數,可以使用無符號關鍵字“unsigned”對整數型別進行修飾,
例如:score tinyint unsigned
各個類別存盤空間及取值范圍,

2,小數型別

decimal(length, precision)用于表示精度確定(小數點后數字的位數確定)的小數型別,length決定了該小數的最大位數,precision用于設定精度(小數點后數字的位數), 例如: decimal (5,2)表示小數取值范圍:999.99~999.99 decimal (5,0)表示: -99999~99999的整數,

3,字串

char()與varchar(): 例如對于簡體中文字符集gbk的字串而言,varchar(255)表示可以存盤255個漢字,而每個漢字占用兩個位元組的存盤空間,假如這個字串沒有那么多漢字,例如僅僅包含一個‘中’字,那么varchar(255)僅僅占用1個字符(兩個位元組)的儲存空間;而char(255)則必須占用255個字符長度的存盤空間,哪怕里面只存盤一個漢字,
4,日期型別,
date表示日期,默認格式為‘YYYY-MM-DD’; time表示時間,格式為‘HH:ii:ss’; year表示年份; datetime與timestamp是日期和時間的混合型別,格式為'YYYY-MM-DD HH:ii:ss'

datetime與timestamp都是日期和時間的混合型別,區別在于: 表示的取值范圍不同,datetime的取值范圍遠遠大于timestamp的取值范圍, 將NULL插入timestamp欄位后,該欄位的值實際上是MySQL服務器當前的日期和時間, 同一個timestamp型別的日期或時間,不同的時區,顯示結果不同,
5,復合型別,
MySQL 支持兩種復合資料型別:enum列舉型別和set集合型別, enum型別的欄位類似于單選按鈕的功能,一個enum型別的資料最多可以包含65535個元素, set 型別的欄位類似于復選框的功能,一個set型別的資料最多可以包含64個元素,
6,二進制型別,
二進制型別的欄位主要用于存盤由‘0’和‘1’組成的字串,因此從某種意義上將,二進制型別的資料是一種特殊格式的字串, 二進制型別與字串型別的區別在于:字串型別的資料按字符為單位進行存盤,因此存在多種字符集、多種字符序;而二進制型別的資料按位元組為單位進行存盤,僅存在二進制字符集binary,

7,選擇合適的資料型別,
選擇合適的資料型別,不僅可以節省儲存空間,還可以有效地提升資料的計算性能,
(1)在符合應用要求(取值范圍、精度)的前提下,盡量使用“短”資料型別,
(2)資料型別越簡單越好,
(3)在MySQL中,應該用內置的日期和時間資料型別,而不是用字串來存盤日期和時間,
(4)盡量采用精確小數型別(例如decimal),而不采用浮點數型別,使用精確小數型別不僅能夠保證資料計算更為精確,還可以節省儲存空間,例如百分比使用decimal(4,2)即可,
(5)盡量避免NULL欄位,建議將欄位指定為NOT NULL約束,
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/29401.html
標籤:MySQL
上一篇:索引——談談你對索引的認識和理解
下一篇:MySQL 默認排序是什么
