數據類型(列類型):
講了這麼久終於到了數據類型,到目前爲止我只用了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
:日期,就是datetime
的date
部分;time
:時間,或者說是時間段,爲指定的某個時間區間之間,包含正負時間;timestamp
:時間戳,但並不是真正意義上的時間戳,其是從1970
年開始計算的,格式和datetime
一致;year
:年份,共有兩種格式,分別爲year(2)
和year(4)
其中比較有用的一個類型就是timestamp類型,因爲它只要記錄被更新它就會變爲當前時間,即可以用來記錄數據更新的時間。
如圖,我並沒有插入timestamp的數據,但它會在當前這一行數據被更新時自動更新爲當前時間
字符串類型
在 SQL 中,將字符串類型分成了 6 類,分別爲:char
、varchar
、text
、blob
、enum
和set
.
- char:定長字符串,最大長度255個字符,對空間比較浪費,但效率高,如果數據長度確定如身份證等就用這個類型;
- varchar:不定長字符串,最大長度65536個字符,比較省空間,但效率低,如果數據長度一開始不確定就用這個類型;
- text:存儲文字;
- blob:存儲二進制數據,通常不用;
- enum:枚舉類型:一個數據只能保存一個元素
- 創建enum類型:
- 插入數據:
- set:集合字符串,一個數據可以保存多個元素:
- 創建set類型:
- 插入數據:
- 而且不管插入順序如何都會自動排序的,即插入'large,small'後查看時發現會變成'small,large'