MariaDB介绍
MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。在存储引擎方面,使用XtraDB(英语:XtraDB)来代替MySQL的InnoDB。
MariaDB基于事务的Maria存储引擎,替换了MySQL的MyISAM存储引擎,它使用了Percona的 XtraDB,InnoDB的变体,分支的开发者希望提供访问即将到来的MySQL 5.4 InnoDB性能。这个版本还包括了 PrimeBase XT (PBXT) 和 FederatedX存储引擎 -----百度百科
MariaDB基础:
如果你熟悉使用Mysql,相信你可以直接上手MariaDB,二者的基本操作是一样的。如果你对数据库有一定了了解,通过下面的学习可以迅速入门MariaDB。
MariaDB支持的数据类型:
(1) 字符型:
参考Mysql手册:http://dev.mysql.com/doc/refman/5.7/en/string-types.html
类型有:CHAR,VARCHAR,BINARY,VARBINARY,BLOB,TEXT,ENUM,SET
类型 |
大小 |
用途 |
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/
如有错误,敬请指正!
谢谢!