MySQL學習總結(4):數據類型(列類型)

數據類型(列類型):

講了這麼久終於到了數據類型,到目前爲止我只用了int和varchar類型,其他類型都沒了解過,現在進行學習。

好吧下面這幅圖也是從那個大佬的博客找來的

不得不說真的是應有盡有,而且每種類型還分這麼細

這裏有個新指令:

desc  表名       等價於      show columns from 表名

用於查看數據表的結構;

數值型

1.整數型

  • tinyint:迷你整型,使用 1 個字節存儲數據(常用);
  • smallint:小整型,使用 2 個字節存儲數據;
  • mediumint:中整型,使用 3 個字節存儲數據;
  • int:標準整型,使用 4 個字節存儲數據(常用);
  • bigint:大整型,使用 8 個字節存儲數據。

各種數據類型以及unsigned的應用:

數值類型都是默認有符號的,想要無符號就要在末尾追加unsigned,若數據超出範圍是會報錯的:

顯示寬度問題:

即desc 表名時出現的在類型中的括號的數字,表示顯示寬度,並不影響數據類型的大小。

通常用法:前導0的使用:

2.小數型

  • 浮點型:小數點浮動,精度有限,容易丟失精度;
  • 定點型:小數點固定,精度固定,不會丟失精度。

浮點型:

以float爲例,直接聲明float就沒有小數部分,使用float(M,D),其中M表示總長度,D表示小數部分長度,可以以科學計數法表示。

定點型:

這是一個神奇的例子,那個float類型並沒有超過位數但還是被四捨五入了,而定點型就不會,至少整數部分不會被四捨五入,對精度要求精確的如貨幣的存儲就用定點型型,而想要表示更大範圍又不是很在乎精度問題的就可以用浮點型。

日期時間型

  • datetime:日期時間,其格式爲yyyy-MM-dd HH:mm:ss,表示的範圍是從 1000 年到 9999 年,有零值,即0000-00-00 0000:00
  • date:日期,就是datetimedate部分;
  • time:時間,或者說是時間段,爲指定的某個時間區間之間,包含正負時間;
  • timestamp:時間戳,但並不是真正意義上的時間戳,其是從1970年開始計算的,格式和datetime一致;
  • year:年份,共有兩種格式,分別爲year(2)year(4)

其中比較有用的一個類型就是timestamp類型,因爲它只要記錄被更新它就會變爲當前時間,即可以用來記錄數據更新的時間。

 

如圖,我並沒有插入timestamp的數據,但它會在當前這一行數據被更新時自動更新爲當前時間

字符串類型

在 SQL 中,將字符串類型分成了 6 類,分別爲:charvarchartextblobenumset.

  • char:定長字符串,最大長度255個字符,對空間比較浪費,但效率高,如果數據長度確定如身份證等就用這個類型;
  • varchar:不定長字符串,最大長度65536個字符,比較省空間,但效率低,如果數據長度一開始不確定就用這個類型;
  • text:存儲文字;
  • blob:存儲二進制數據,通常不用;
  • enum:枚舉類型:一個數據只能保存一個元素
    • 創建enum類型:
    • 插入數據:
  • set:集合字符串,一個數據可以保存多個元素:
    • 創建set類型:
    • 插入數據:
    • 而且不管插入順序如何都會自動排序的,即插入'large,small'後查看時發現會變成'small,large'
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章