SQL中的參數(shù)類型深度解析
1. bit
bit [(M)] : 位字段類型。 M 表示每個值的位數(shù),范圍從 1 到 64 。如果 M 被忽略,默認為 1 。
mysql> create table tt4 ( id int, a bit(8)); Query OK, 0 rows affected (0.01 sec)
同時它是按照ASCII碼對應的值顯示。 比如下面這張圖里面,65是A所對應的ASCII。

2. float(小數(shù)類型)
float [(m, d)] [ unsigned ] : m 指定顯示長度, d 指定小數(shù)位數(shù),占用空間 4 個字節(jié)
這個m的意思是小數(shù)點前面的位數(shù)加上小數(shù)點后面的個數(shù)要等于這個m,同時如果用戶輸入的數(shù)大于這個m的話,它會先按照四舍五入的方式嘗試進化化簡,如果化簡結果符合這個m的話那它就顯示OK,不然的話就插入失敗。
我們先設置一個總長度為4,小數(shù)點后面有2位的salary。
create table tt6(id int, salary float(4,2));
在下面這張圖里面-99.991,最后的一個1被四舍五入掉了。如果我們把這個1換成5,那么這邊就會插入失敗。

3.decimal(小數(shù)類型)
decimal(m, d) [unsigned] : 定點數(shù)m指定長度,d表示小數(shù)點的位數(shù)
這個看起來和上面那個float一樣,區(qū)別在于這個decimal的精度更高。
float表示的精度大約是7位。
decimal整數(shù)最大位數(shù)m為65。支持小數(shù)最大位數(shù)d是30。如果d被省略,默認為0.如果m被省略, 默認是10
我們看下面的代碼和結果,在高精度的情況下,decimal可以保持更高的精度。
mysql> create table tt8 ( id int, salary float(10,8), salary2 decimal(10,8));

4. char(字符串類型)
char (L): 固定長度字符串, L 是可以存儲的長度,單位為字符,最大長度值可以為 255
這個沒什么好說的,就是普通的char類型,在這邊寫出來是為了和下面的varchar來進行對比
5.varchar(字符串類型)
varchar (L): 可變長度字符串, L 表示字符長度,最大長度 65535 個字節(jié)

那么我們在一些情況下該如何進行選擇呢?
- 如果數(shù)據(jù)確定長度都一樣,就使用定長(char),比如:身份證,手機號,md5
- 如果數(shù)據(jù)長度有變化,就使用變長(varchar), 比如:名字,地址,但是你要保證最長的能存的進去。
- 定長的磁盤空間比較浪費,但是效率高。
- 變長的磁盤空間比較節(jié)省,但是效率低。
- 定長的意義是,直接開辟好對應的空間
- 變長的意義是,在不超過自定義范圍的情況下,用多少,開辟多少。
6.日期和時間類型
常用的日期有如下三個:
date :日期 'yyyy-mm-dd' ,占用三字節(jié)。
datetime 時間日期格式 'yyyy-mm-dd HH:ii:ss' 表示范圍從 1000 到 9999 ,占用八字節(jié)。
timestamp :時間戳,從1970年開始的 yyyy-mm-dd HH:ii:ss 格式和 datetime 完全一致,占用
四字節(jié)。
我們來看下面這張圖片,其中date類型的t1就是顯示年月日,datetime類型的t2就是顯示年月日加上時分秒,而timestam類型的t3不用我們自己設置,它會自動給自己加上執(zhí)行這條指令時的時間。

同時如果我們更新了其中的一條數(shù)據(jù),那么timestamp 也會自動更新時間。

7.enum和set
enum :枚舉, “ 單選 ” 類型;enum(' 選項 1',' 選項 2',' 選項 3',...);set :集合, “ 多選 ” 類型;set(' 選項值 1',' 選項值 2',' 選項值 3', ...);
我們看下面這張圖片,其中set類型的hobby我們插入了兩個值,而enum我們只可以插入一個。

我們看下面這張圖,如果我們要查找hobby=B的,那么1和2就不會被選出來,因為這條查找是只有B的。

如果我們要查找出所有含有B的,那么我們應該用用find_ in_ set函數(shù)。
通過這個函數(shù)我們就可以查找出所有含有B的。

到此這篇關于SQL之參數(shù)類型講解的文章就介紹到這了,更多相關sql參數(shù)類型內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
SQL Server誤設置max server memory的處理方法
這篇文章主要給大家介紹了關于SQL Server誤設置max server memory的處理方法,文中通過示例代碼介紹的非常詳細,對大家學習或者使用SQL Server具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧下2019-12-12
SQL中varchar和nvarchar的基本介紹及其區(qū)別
varchar長度為 n 個字節(jié)的可變長度且非 Unicode 的字符數(shù)據(jù),nvarchar包含 n 個字符的可變長度 Unicode 字符數(shù)據(jù)2014-07-07

