MySQL數據類型--常用數據類型總結

OK,到現在爲止,MySQL常用的數據類型我都已經整理完了。現在我們來總結一下。

在MySQL中創建表時,需要考慮爲字段選擇哪種數據類型是最合適的。只有選擇了合適的數據類型,才能提高數據庫的效率


  • 1,整數類型和浮點數類型
整數類型和浮點數類型最大的區別在於能否表達小數。整數類型不能表示小數,而浮點數類型可以表示小數。不同的數據類型的取值範圍不同。

tinyint類型的取值範圍是0~~255。如果字段的最大值不超過255,那麼選擇tinyint類型就足夠了呢。

bigint類型的取值範圍最大,最常用的整數類型是int類型,int類型最大能保存10位數字,最大值爲2後面跟9個0

浮點數類型包括float類型和double類型,double類型的精度比float類型高。如果需要精確到小數點後10位以上,就應該選擇double類型,而不應該選擇float類型



  • 2,浮點數類型和定點數類型
對於浮點數和定點數,當插入的精度高於實際定義的精度時,系統會自動進行四捨五入處理。其目的是爲了使該值的精度達到要求。浮點數進行四捨五入系統不會報警,定點數會出現警告。

在未指定精度的情況下,浮點數和定點數有其默認的精度,float類型和double類型默認會保存實際精度,這個精度和操作系統和硬件的精度有關。

decimal類型默認整數位是10,小數位爲0,即默認爲整數。所以一般在定義decimal的時候用decimal(M,D)格式,M參數稱爲精度,是數據的總長度,小數點不佔位置。D參數成爲標度,是指小數點後面的長度是D。

在mysql中,定點數精度比浮點數要高,而且,浮點數會出現誤差。如果要對數據的精度要求比較高,應該選擇定點數



  • 3,char類型和varchar類型

char類型的長度是固定的,而varchar類型的長度是在範圍內可變的。因此,varchar類型佔用的空間比char類型小。而且,varchar類型比char類型靈活。對於長度變化比較大的字符串類型,最好是選擇varchar類型

雖然char類型佔用的空間比較大,但是char類型的處理速度比varchar快。因此,對於長度變化不大和查詢速度要求較高的字符串類型,最好選擇char類型



  • 4,時間和日期類型

year類型只表示年份。如果只需要記錄年份,選擇year類型可以節約空間。

Time類型只表示時間,如果只需要記錄時間,選擇Time類型是最合適的。

date類型只表示日期,如果只需要記錄日期,選擇date類型是最合適的。

如果需要記錄日期和時間,可以選擇dateTime類型和timestamp類型。

dateTime類型表示的時間範圍比timestamp類型大,因此,如果需要的時間範圍比較大,選擇dateTime類型比較合適

timestamp類型的時間是根據時區來顯示的,如果需要顯示的時間與時區對應,那就應該選擇timestamp類型



  • 5,enum類型和set類型
enum類型最多可以有65535個成員,而set類型最多隻能包含64個成員,兩者的取值只能在成員列表中選取。enum類型只能從成員中選擇一個,而set類型可以選擇多個。

因此,對於多個值中選取一個的,可以選擇enum類型。比如,‘性別’字段就可以定義成enum類型,因爲只能在‘男’和‘女’中選取一個。

對於可以選取多個值的字段,可以選擇set類型比如,‘愛好’字段就可以選擇set類型,因爲可能有多個愛好呢。



  • 6,text類型和blob類型

text類型與blob類型很類似。text類型存儲只能存儲字符數據,而blob類型可以用於存儲二進制數據,如果要存儲文章等純文本的數據,應該選擇text類型,如果需要存儲圖片等二進制的數據,應該選擇blob類型

text類型包括tinytext,text,mediumtext和longtext。這4者最大的不同是內容的長度不同。tinytext類型允許的長度最小,longtext類型允許的長度最大。blob類型也是如此。



  • 幾點注意的問題:

1,mysql中,char,varchar,text等字符串類型都可以存儲路徑。但是,‘\’在數據庫是轉義字符,如果路徑中使用‘\’符號時,這個符號會被過濾。解決的辦法是,路徑中用‘/’或‘\\’來代替‘\’。

這樣,MySQL就不會自動過濾掉路徑中的分割字符,可以完整的表示路徑。OK,現在我們來實際操作下數據庫看下這種情況。

建表語句如下:
CREATE TABLE `linkinframe`.`test` (
  `id` INT NOT NULL,
  `a` VARCHAR(45) NULL,
  PRIMARY KEY (`id`));
現在我們往數據庫插入幾條數據:
INSERT INTO `linkinframe`.`test` (`id`, `a`) VALUES (1,'uu/kk/oo');
INSERT INTO `linkinframe`.`test` (`id`, `a`) VALUES (2,'aa\\jj\\ww');
INSERT INTO `linkinframe`.`test` (`id`, `a`) VALUES (3,'\hh\ll\oo');
數據庫顯示如下:


2,在sql標準中,存在bool和boolean類型。MySQL爲了支持sql標準,也是可以定義bool和boolean類型的。但是,bool和Boolean類型最後轉換成的是tinyint(1)。也就是說,在MySQL中,boolean類型等於加tinyint(1)。因此,創建表的時候將一

個字段定義成bool和boolean類型,數據庫中真實定義的是tinyint(1)。因此,創建表的時候將一個字段定義成bool和boolean類型,數據庫中真實的定義是tinyint(1)

3,一般情況下,數據庫中不直接存儲圖片和音頻文件,而是存儲圖片和音頻文件的路徑,比如說JPG圖片和MP3音樂。如果實在需要在MySQL數據庫中存儲圖片和音頻文件,就選擇blob類型。因爲,blob類型可以用來存儲二進制類型的文件的。

4,整數類型,浮點數類型,日期和時間類型和字符串類型是數據庫中使用最頻繁的數據類型。我們在實際建表過程中,要考慮各種數據類型的特點,根據不同的需要選擇相應的數據類型。


OK,到此爲止,到此爲止,關於mysql數據類型相關都已經整理完了。接下來我會認真的整理MySQL創建,刪除,查看,修改數據庫的基本方法,也就是DDL語句。先這樣。

發佈了284 篇原創文章 · 獲贊 66 · 訪問量 71萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章