MariaDB介紹
MariaDB數據庫管理系統是MySQL的一個分支,主要由開源社區在維護,採用GPL受權許可MariaDB的目的是徹底兼容MySQL,包括API和命令行,使之能輕鬆成爲MySQL的代替品。在存儲引擎方面,使用XtraDB(英語:XtraDB)來代替MySQL的InnoDB。 html
MariaDB基於事務的Maria存儲引擎,替換了MySQL的MyISAM存儲引擎,它使用了Percona的 XtraDB,InnoDB的變體,分支的開發者但願提供訪問即將到來的MySQL 5.4 InnoDB性能。這個版本還包括了 PrimeBase XT (PBXT) 和 FederatedX存儲引擎 -----百度百科mysql
MariaDB基礎:sql
若是你熟悉使用Mysql,相信你能夠直接上手MariaDB,兩者的基本操做是同樣的。若是你對數據庫有必定了瞭解,經過下面的學習能夠迅速入門MariaDB。數據庫
MariaDB支持的數據類型:ide
(1) 字符型:性能
參考Mysql手冊:http://dev.mysql.com/doc/refman/5.7/en/string-types.html學習
類型有:CHAR,VARCHAR,BINARY,VARBINARY,BLOB,TEXT,ENUM,SETui
類型spa |
大小命令行 |
用途 |
CHAR |
0-255字節 |
定長字符串 |
VARCHAR |
0-255字節 |
變長字符串 |
BINARY |
容許長度0-M個字節的定長字節符串 |
|
VARBINARY |
容許長度0-M個字節的定長字節符串,值的長度+1個字節 |
|
TINYBLOB |
0-255字節 |
不超過255個字符的二進制字符串 |
TINYTEXT |
0-255字節 |
短文本字符串 |
BLOB |
0-65535字節 |
二進制形式的長文本數據 |
TEXT |
0-65535字節 |
長文本數據 |
MED IUMBLOB |
0-16777215字節 |
二進制形式的中等長度文本數據 |
MED IUMTEXT |
0-16777215字節 |
中等長度的文本數據 |
LOGNGBLOB |
0-4294967295字節 |
二進制形式的極大文本數據 |
LONGTEXT |
0-4294967295字節 |
極大文本數據 |
ENUM |
0-66635個成員 |
枚舉類型,字符對象 |
SET |
0-64個成員 |
字符串對象 |
CHAR vs VARCHAR
CHAR是定長字符串。定義的字符串長度固定爲聲明時CHAR(#)的長度#(0-255),存儲時佔用固定大小的#空間,輸入字符串不足聲明的長度,則用空格補齊;
VARCHAR是變長字符串。存儲時佔用實際聲明範圍內實際輸入長度的空間,另外加一個字節記錄長度。
Value |
CHAR(4) |
Storage Required |
VARCHAR(4) |
Storage Required |
'' |
' ' |
4 bytes |
'' |
1 byte |
'ab' |
'ab ' |
4 bytes |
'ab' |
3 bytes |
'abcd' |
'abcd' |
4 bytes |
'abcd' |
5 bytes |
'abcdefgh' |
'abcd' |
4 bytes |
'abcd' |
5 bytes |
TEXTvs BLOB
對於字段長度要求超過255 個的狀況下,MySQL提供了 TEXT 和 BLOB 兩種類型。根據存儲數據的大小,它們都有不一樣的子類型。這些大型的數據用於存儲文本塊或圖像、聲音文件等二進制數據類型。
TEXT 和 BLOB 類型在分類和比較上存在區別。BLOB類型區分大小寫,而TEXT 不區分大小寫。大小修飾符不用於各類BLOB 和TEXT 子類型。比指定類型支持的最大範圍大的值將被自動截短。
ENUM類型
ENUM 類型由於只容許在集合中取得一個值,有點相似於單選項。在處理相互排拆的數據時容易讓人理解,好比人類的性別。ENUM類型字段能夠從集合中取得一個值或使用null 值,除此以外的輸入將會使MySQL 在這個字段中插入一個空字符串。另外若是插入值的大小寫與集合中值的大小寫不匹配,MySQL會自動使用插入值的大小寫轉換成與集合中大小寫一致的值。
ENUM 類型在系統內部能夠存儲爲數字,而且從1 開始用數字作索引。一個ENUM 類型最多能夠包含65536 個元素,其中一個元素被MySQL 保留,用來存儲錯誤信息,這個錯誤值用索引0 或者一個空字符串表示。
MySQL 認爲 ENUM 類型集合中出現的值是合法輸入,除此以外其它任何輸入都將失敗。這說明經過搜索包含空字符串或對應數字索引爲0 的行就能夠很容易地找到錯誤記錄的位置。
SET類型
SET 類型與 ENUM 類型類似但不相同。SET 類型能夠從預約義的集合中取得任意數量的值。而且與ENUM 類型相同的是任何試圖在SET 類型字段中插入非預約義的值都會使MySQL 插入一個空字符串。若是插入一個即有合法的元素又有非法的元素的記錄,MySQL將會保留合法的元素,除去非法的元素。
一個 SET 類型最多能夠包含 64 項元素。在 SET 元素中值被存儲爲一個分離的「位」序列,這些「位」表示與它相對應的元素。「位」是建立有序元素集合的一種簡單而有效的方式。而且它還去除了重複的元素,因此SET 類型中不可能包含兩個相同的元素。
若是想從 SET 類型字段中找出非法的記錄只需查找包含空字符串或二進制值爲0 的行。
注意:字符型內容使用時,要使用引號!
(2) 數值型:
參考Mysql手冊:http://dev.mysql.com/doc/refman/5.7/en/numeric-types.html
精確數值:INTEGER, SMALLINT, DECIMAL, andNUMERIC
整型:TINYINT,SMALLINT, MEDIUMINT, INT, BIGINT
Type |
Storage |
Minimum Value |
Maximum Value |
(Bytes) |
(Signed/Unsigned) |
(Signed/Unsigned) |
|
TINYINT |
1 |
-128 |
127 |
0 |
255 |
||
SMALLINT |
2 |
-32768 |
32767 |
0 |
65535 |
||
MEDIUMINT |
3 |
-8388608 |
8388607 |
0 |
16777215 |
||
INT |
4 |
-2147483648 |
2147483647 |
0 |
4294967295 |
||
BIGINT |
8 |
-9223372036854775808 |
9223372036854775807 |
0 |
18446744073709551615 |
十進制:DECIMAL值的準確精度是極其重要的值,例如與金錢有關的數據;salary DECIMAL(5,2) 表示5(precision)表明將被用於存儲值的總的小數位數,而2(scale)表明將被用於存儲小數點後的位數。因此表示範圍是:-999.99到999.99
近似數值:FLOAT, REAL, and DOUBLE PRECISION
浮點數:
FLOAT 數值類型用於表示單精度浮點數值,而 DOUBLE 數值類型用於表示雙精度浮點數值。與整數同樣,這些類型也帶有附加參數:一個顯示寬度指示器和一個小數點指示器。好比語句 FLOAT(7,3) 規定顯示的值不會超過 7 位數字,小數點後面帶有 3 位數字。對於小數點後面的位數超過容許範圍的值,MySQL 會自動將它四捨五入爲最接近它的值,再插入它。
注意:數值型內容使用時,不能使用引號!
(3) 日期和時間類型:DATE,TIME, DATETIME, TIMESTAMP, and YEAR
在處理日期和時間類型的值時,MySQL 帶有 5 個不一樣的數據類型可供選擇。它們能夠被分紅簡單的日期、時間類型,和混合日期、時間類型。根據要求的精度,子類型在每一個分類型中均可以使用,而且 MySQL 帶有內置功能能夠把多樣化的輸入格式變爲一個標準格式。
類型 |
字節 |
範圍 |
格式 |
用途 |
DATE |
4 |
1000-01-01/9999-12-31 |
YYYY-MM-DD |
日期值 |
TIME |
3 |
'-838:59:59'/'838:59:59' |
HH:MM:SS |
時間值或持續時間 |
YEAR |
1 |
1901/2155 |
YYYY |
年份值 |
DATETIME |
8 |
1000-01-01 00:00:00/9999-12-31 23:59:59 |
YYYY-MM-DD HH:MM:SS |
混合日期和時間值 |
TIMESTAMP |
4 |
1970-01-01 00:00:00/2037 |
YYYYMMDD HHMMSS |
混合日期和時間值,時間戳 |
DATE、TIME 和 YEAR 類型
MySQL 用 DATE 和 YEAR 類型存儲簡單的日期值,使用 TIME 類型存儲時間值。這些類型能夠描述爲字符串或不帶分隔符的整數序列。若是描述爲字符串,DATE 類型的值應該使用連字號做爲分隔符分開,而 TIME 類型的值應該使用冒號做爲分隔符分開。
須要注意的是,沒有冒號分隔符的 TIME 類型值,將會被 MySQL 理解爲持續的時間,而不是時間戳。
MySQL 還對日期的年份中的兩個數字的值,或是 SQL 語句中爲 YEAR 類型輸入的兩個數字進行最大限度的通譯。由於全部 TEAR 類型的值必須用 4 個數字存儲。MySQL 試圖將 2 個數字的年份轉換爲 4 個數字的值。把在 00-69 範圍內的值轉換到 2000-2069 範圍內。把 70-99 範圍內的值轉換到 1970-1979 以內。若是 MySQL 自動轉換後的值並不符合咱們的須要,請輸入 4 個數字表示的年份。
DATEYIME 和 TIMESTAMP 類型
除了日期和時間數據類型,MySQL 還支持 DATEYIME 和TIMESTAMP 這兩種混合類型。它們能夠把日期和時間做爲單個的值進行存儲。這兩種類型一般用於自動存儲包含當前日期和時間的時間戳,並可在須要執行大量數據庫事務和須要創建一個調試和審查用途的審計跟蹤的應用程序中發揮良好做用。若是咱們對 TIMESTAMP 類型的字段沒有明確賦值,或是被賦與了 null 值。MySQL 會自動使用系統當前的日期和時間來填充它。
參考:http://dev.mysql.com/doc/refman/5.7/en/
http://mrxiong.blog.51cto.com/287318/1651098/
若有錯誤,敬請指正!
謝謝!