mysql是乙個關係型資料庫管理系統,由瑞典mysql ab 公司開發,屬於 oracle 旗下產品。mysql 是最流行的關係型資料庫管理系統之一,在 web 應用方面,mysql是最好的 rdbms (relational database management system,關聯式資料庫管理系統) 應用軟體之一。
同時由於mysql被oracle收購,mysql的發展便受到oracle公司的政策限制,mysql與oracle也存在競爭關係,所以mysql的使用者與開發者開始質疑開源資料庫的命運,故而存在一些其他開源db資料庫用於替代mysql,諸如:mariadb、postgresql、percana server等資料庫。
1. 整數型別
有兩種型別的數字:整數和實數,如果儲存整數,則可以使用以下幾種型別:tinyint, smallint, mediaint, int, bigint,這些資料型別占用的儲存空間分別是:8、16、24、32、64 位儲存空間,資料範圍:-2^(n-1) ~ 2^(n-1) - 1,其中n表示儲存空間的位數。
整數型別有可選的unsigned屬性,表示不允許負數,這可以使正數的儲存上限提公升一倍。
有符號和無符號型別使用相同的儲存空間,並具有相同的效能,因此需要根據實際情況選擇合適的資料型別。
mysql可以為整數型別指定寬度,如 int(11),對大多數應用是沒有意義的,只是用於規定mysql的一些互動工具(如mysql命令列客戶端)用來顯示字元的個數。
2. 實數型別
實數是帶有小數部分的數字,它們不只是為了儲存小數部分,也可以使用decimal儲存比bigint還大的整數,mysql支援儲存精確型別、不精確型別。
decimal型別用於儲存精確的小數。decimal列可以指定小數點前後所允許的最大位數,會影響到列的儲存空間。mysql5.0之後對於decimal資料儲存到二進位制字串中,即4位元組儲存9個數字,如 decimal(18,9),則小數點前後各儲存9個數字,占用8個位元組,另外小數點占用1個位元組,故而針對此種資料型別,共占用9個位元組。
浮點資料型別:float、double,分別占用32、64位,同時的mysql使用double作為內部浮點計算的型別。
由於浮點型別天然的計算儲存精度問題,對於一些對精度要求比較嚴格的場景,考慮到資料計算效能問題,建議使用諸如bigint、int型別進行資料儲存、計算。
3. 字串型別
mysql支援多種字串型別,每種資料型別還有很多的變種,常見的字串型別:char, varchar, text, blob等。
char和varchar是兩種主要的字串型別,不同的儲存引擎儲存char和varchar值的方式在記憶體和磁碟上可能不一樣的。
char
儲存型別是定長的,mysql總是根據定義的字串長度分配足夠的空間。當儲存時mysql會刪除所有的末尾空格,char值會根據需要採用空格進行填充以方便比較。
varchar
儲存型別是不定長的,相對於char型別更加節省空間,僅使用必要的空間進行資料儲存。使用1或者2額外位元組記錄字串的長度,如果字串的長度小於或者等於255位元組,則使用1個位元組記錄字串的長度,否則使用2個位元組進行記錄
針對varchar、char的使用,最好的策略是只分配真正需要的空間。
blob、text型別
blob、text型別都是為儲存很大的資料而設計的字串型別,分別採用二進位制、字串方式儲存。
4. 日期時間型別
mysql使用許多態別來儲存日期和時間值,如year、date等,mysql能儲存的最小時間單位為秒。
datetime
占用8個位元組,將日期和時間封裝到格式為:yyyymmddhhmmss的整數中,與時區無關。時間範圍:2023年 ~ 2023年。
timestamp
占用4個位元組,儲存了從1970-01-01 00:00:00 以來的秒數,timestamp顯示的值依賴於時區,時間範圍:2023年 ~ 2023年。
以上介紹了mysql常用的數種資料型別,同時也可以看到mysql支援的資料型別非常多,選擇正確的資料型別對於獲得高效能至關重要。以下幾個簡單的原則都有助於作出更好的選擇。
更小的通常更好
更小的資料型別通常更快,主要因為占用更少的磁碟、記憶體、cpu快取,且處理時需要的cpu週期更少。
簡單就好
簡單資料型別的操作通常需要更少的cpu週期,對於資料的計算、比較等更加容易進行、效能會更高。
盡量避免null
如果查詢中包含可為null的列,對mysql來說更難優化,null的列使得索引、索引統計和值比較更加複雜。
本期主要介紹mysql的資料型別以及使用場景,希望對大家理解mysql的資料儲存等有一定的幫助,在業務開發過程中,根據需要使用合適資料型別、提公升整體業務的效能。
mysql資料型別用法 mysql資料型別和用法
歡迎進入linux社群論壇,與200萬技術人員互動交流 進入 mysql支援多種列型別 數值型別 日期 時間型別和字串 字元 型別。本章首先對這些列型別進行了概述,然後更加詳細地描述了各種列的型別,以及列型別儲存需求的總結。概述很簡單。關於具體列型別 歡迎進入linux社群論壇,與200萬技術人員互...
mysql 資料型別 真假 MySQL 資料型別
mysql基礎 資料型別 整型型別 根據所儲存的整數數值取值範圍不同,可分為以下五類 1 tinyint佔1個位元組 2 smallint佔2個位元組 3 mediumint 佔3個位元組 4 int佔4個位元組 5 bigint佔8個位元組 根據每種型別所佔的位元組數可確定其無符號整數和有符號整數...
mysql 郵箱 資料型別 mysql 資料型別
1 整型mysql資料型別含義 有符號 tinyint m 1個位元組 範圍 128 127 smallint m 2個位元組 範圍 32768 32767 mediumint m 3個位元組 範圍 8388608 8388607 int m 4個位元組 範圍 2147483648 21474836...