Loading... <p><span style="font-size: 14px"> 数据类型是数据的一种属性,它决定了数据的存储格式、有效范围及其它相应的限制。MariaDB的数据类型包括:字符型、整型、浮点值、日期时间型、布尔型及内建类型。</span></p> <h3><span style="font-size: 16px">一、字符型</span></h3> <p><span style="font-size: 14px"> 1、CHAR和VARCHAR类型</span></p> <p><span style="font-size: 14px"> CHAR类型的长度是固定的,其取值范围为0-255。</span></p> <p><span style="font-size: 14px"> VARCHAR类型的长度是可变,其取值范围为0-65535。</span></p> <p><span style="font-size: 14px"> CHAR类型的长度定义了多少就会分配多少,适用于内容固定的内容;而VARCHAR类型的长度定义的是最大值,用多少分配多少,适用于内容不确定的内容。</span></p> <p><span style="font-size: 14px"> 比如:</span></p> <p><span style="font-size: 14px"> CHAR(10)表示指定长度为10字节,插入值‘1’或‘1234’都会占用10个字节;</span></p> <p><span style="font-size: 14px"> VARCHAR(10)表示指定最大长度为10字节,而其占用的实际长度为字符串的长度加1,插入值‘1’时占用2个字节,插入值为‘1234’时占用5个字节。</span></p> <p><span style="font-size: 14px"> 2、TEXT类型</span></p> <p><span style="font-size: 14px"> TEXT类型是一种特殊的字符串类型。只能用于保存诸如新闻之类的字符数据。</span></p> <p><span style="font-size: 14px"> TEXT类型包括TINYTEXT、TEXT、MEDIUMTEXT、LOGNTEXT。其区别如下表所示:</span></p> <table> <tbody> <tr class="firstRow"> <td width="250" valign="top"><span style="font-size: 14px"> 类 型</span></td> <td width="250" valign="top"><span style="font-size: 14px"> 长 度 范 围</span></td> <td width="250" valign="top"><span style="font-size: 14px"> 占 用 空 间</span></td> </tr> <tr> <td width="250" valign="top"><span style="font-size: 14px"> TINYTEXT</span></td> <td width="250" valign="top"><span style="font-size: 14px"> 0-255字节</span></td> <td width="250" valign="top"><span style="font-size: 14px"> 值的长度+2个字节</span></td> </tr> <tr> <td width="250" valign="top"><span style="font-size: 14px"> TEXT</span></td> <td width="250" valign="top"><span style="font-size: 14px"> 0-65535字节</span></td> <td width="250" valign="top"><span style="font-size: 14px"> 值的长度+2个字节</span></td> </tr> <tr> <td width="250" valign="top"><span style="font-size: 14px"> MEDIUMTEXT</span></td> <td width="250" valign="top"><span style="font-size: 14px"> 0-2^24字节</span></td> <td width="250" valign="top"><span style="font-size: 14px"> 值的长度+3个字节</span></td> </tr> <tr> <td width="250" valign="top"><span style="font-size: 14px"> LONGTEXT</span></td> <td width="250" valign="top"><span style="font-size: 14px"> 0-2^32字节</span></td> <td width="250" valign="top"><span style="font-size: 14px"> 值的长度+4个字节</span></td> </tr> </tbody> </table> <p><span style="font-size: 14px"> 3、BINARY和VARBINARY类型</span></p> <p><span style="font-size: 14px"> 这两种数据类型都用于存放二进制数据的,二者的区别与CHAR和VARCHAR的区别相同,BINARY是定长的,取值范围为0-255,VARBINARY是变长取值范围为0-65535。</span></p> <p><span style="font-size: 14px"> 4、BLOB类型</span></p> <p><span style="font-size: 14px"> BLOB类型是一种特殊二进制类型。用于保存数据量大的二进制数据,比如图片等。BLOB类型包括TINYBLOB、BLOB、MEDIUMBLOB、LONGBLOB。这几种数据类型的区别与TEXT类型相似,主要是能够保存的数据大小不同。</span></p> <p><span style="font-size: 14px"> 对于字符类型可以使用以下修饰符进行限定:</span></p> <p><span style="font-size: 14px"> NULL:表示该字段可以为空值;</span></p> <p><span style="font-size: 14px"> NOT NULL:表示该字段不能为空值; </span></p> <p><span style="font-size: 14px"> 可以在插入的字符中使用通配符:</span></p> <p><span style="font-size: 14px"> %:匹配任意长度的任意字符;</span></p> <p><span style="font-size: 14px"> _:匹配任意单个字符。</span></p> <h3><span style="font-size: 16px">二、数值型</span></h3> <p><span style="font-size: 14px"> 1、整型</span></p> <p><span style="font-size: 14px"> 此种数据类型用于存储整数值。其包含的类型及取值范围如下表所示:</span></p> <table> <tbody> <tr class="firstRow"> <td width="182" valign="top"><span style="font-size: 14px"> 类 型</span></td> <td width="84" valign="top"><span style="font-size: 14px">占用字节数</span></td> <td width="211" valign="top"><span style="font-size: 14px">无符号数的取值范围</span></td> <td width="251" valign="top"><span style="font-size: 14px">有符号数的取值范围</span></td> </tr> <tr> <td width="182" valign="top"><span style="font-size: 14px">TINYINT</span></td> <td width="84" valign="top"><span style="font-size: 14px">1</span></td> <td width="211" valign="top"><span style="font-size: 14px">0-255</span></td> <td width="251" valign="top"><span style="font-size: 14px">-128-127</span></td> </tr> <tr> <td width="182" valign="top"><span style="font-size: 14px">SMALLINT</span></td> <td width="84" valign="top"><span style="font-size: 14px">2</span></td> <td width="211" valign="top"><span style="font-size: 14px">0-65535</span></td> <td width="251" valign="top"><span style="font-size: 14px">-32768-32767</span></td> </tr> <tr> <td width="182" valign="top"><span style="font-size: 14px">MEDIUMINT</span></td> <td width="84" valign="top"><span style="font-size: 14px">3</span></td> <td width="211" valign="top"><span style="font-size: 14px">0-(2^24-1)</span></td> <td width="251" valign="top"><span style="font-size: 14px">-(2^24/2)-(2^24/2-1)</span></td> </tr> <tr> <td width="182" valign="top"><span style="font-size: 14px">INT</span></td> <td width="84" valign="top"><span style="font-size: 14px">4</span></td> <td width="211" valign="top"><span style="font-size: 14px">0-(2^32-1)</span></td> <td width="251" valign="top"><span style="font-size: 14px">-(2^32/2)-(2^32/2-1)</span></td> </tr> <tr> <td width="182" valign="top"><span style="font-size: 14px">BIGINT</span></td> <td width="84" valign="top"><span style="font-size: 14px">8</span></td> <td width="211" valign="top"><span style="font-size: 14px">0-(2^64-1)</span></td> <td width="251" valign="top"><span style="font-size: 14px">-(2^64/2)-(2^64/2-1)</span></td> </tr> </tbody> </table> <p><span style="font-size: 14px"> 2、浮点型和定点型</span></p> <p><span style="font-size: 14px"> MariaDB中使用浮点数和定点数来表示小数。浮点弄包括单精度浮点数(FLOAT)和双精度浮点数(DOUBLE)。定点型使用DECIMAL(m,d)表示。</span></p> <p><span style="font-size: 14px"> 其中:FLOAT占用4字节,DOUBLE占用8字节,DECIMAL占用(m+2)个字节。</span></p> <p><span style="font-size: 14px"> DECIMAL(m,d)中,m表示数字的总长度,小数点不占位;d表示小数点后面的数字长度。</span></p> <p><span style="font-size: 14px"> 例如:DECIMAL(10,5)表示数据为DECIMAL型,数据长度为10,小数点后保留5位。</span></p> <p><span style="font-size: 14px"> 注意浮点数也可以使用(m,d)的方法来指定精度,但这不是浮点数的标准用法,不建议使用,可能会对数据库的迁移造成影响。</span></p> <p><span style="font-size: 14px"> 对于数值类型可以使用以下修饰符进行限定:</span></p> <p><span style="font-size: 14px"> UNSIGNED:表示只能插入无符号数值;</span></p> <p><span style="font-size: 14px"> NULL:表示该字段可以为空值;</span></p> <p><span style="font-size: 14px"> NOT NULL:表示该字段不能为空值;</span></p> <p><span style="font-size: 14px"> DEFAULT #:为该字段设置默认值;</span></p> <p><span style="font-size: 14px"> AUTO_INCREMENT:使该字段的数值自动增长。</span></p> <h3><span style="font-size: 16px">三、布尔型</span></h3> <p><span style="font-size: 14px"> MariaDB中没有专用布尔型,可以使用BOOLENG来进行数据类型的定义,但在查询会显示为TINYINT(1)。</span></p> <p><span style="font-size: 14px"> 在TINYINT(1)中‘1’表示显示出来的位数。</span></p> <h3><span style="font-size: 16px">四、日期时间型</span></h3> <p><span style="font-size: 14px"> MariaDB中有多种用于表示日期和时间的数据类型。其包含的数据类型及取值范围见下表:</span></p> <table> <tbody> <tr class="firstRow"> <td width="152" valign="top"><span style="font-size: 14px"> 类 型</span></td> <td width="124" valign="top"><span style="font-size: 14px"> 字节数</span></td> <td width="474" valign="top"><span style="font-size: 14px"> 取 值 范 围</span></td> </tr> <tr> <td width="152" valign="top"><span style="font-size: 14px"> DATE</span></td> <td width="124" valign="top"><span style="font-size: 14px"> 4</span></td> <td width="474" valign="top"><span style="font-size: 14px">1000/01/01-9999/12/31 </span></td> </tr> <tr> <td width="152" valign="top"><span style="font-size: 14px"> TIME</span></td> <td width="124" valign="top"><span style="font-size: 14px"> 3</span></td> <td width="474" valign="top"><span style="font-size: 14px">-838:59:59-838:59:59</span></td> </tr> <tr> <td width="152" valign="top"><span style="font-size: 14px"> YEAR</span></td> <td width="124" valign="top"><span style="font-size: 14px"> 1</span></td> <td width="474" valign="top"><span style="font-size: 14px">1901-2155</span></td> </tr> <tr> <td width="152" valign="top"><span style="font-size: 14px"> DATETIME</span></td> <td width="124" valign="top"><span style="font-size: 14px"> 8</span></td> <td width="474" valign="top"><span style="font-size: 14px">1000/01/01 00:00:00-9999/12/31 23:59:59</span></td> </tr> <tr> <td width="152" valign="top"><span style="font-size: 14px"> TIMESTAMP</span></td> <td width="124" valign="top"><span style="font-size: 14px"> 4</span></td> <td width="474" valign="top"><span style="font-size: 14px">19700101080001-20380119111407</span></td> </tr> </tbody> </table> <p><span style="font-size: 14px"> 对于日期时间类型可以使用以下修饰符进行限定:</span></p> <p><span style="font-size: 14px"> NULL</span></p> <p><span style="font-size: 14px"> NOT NULL</span></p> <p><span style="font-size: 14px"> DEFAULT 'value'</span></p> <h3><span style="font-size: 16px">五、内建类型</span></h3> <p><span style="font-size: 14px"> 1、ENUM类型</span></p> <p><span style="font-size: 14px"> ENUM类型称为枚举类型,表示仅能从给出的选项中选择其中一个。</span></p> <p><span style="font-size: 14px"> 例如:ENUM (‘a’, ‘b’,‘c’)表示插入的值只能在a,b,c中进行选择,其它的值都是无效的。 </span></p> <p><span style="font-size: 14px"> 2、SET类型</span></p> <p><span style="font-size: 14px"> SET类型称为集合类型,表示能使用给出的元素组合成字符串。</span></p> <p><span style="font-size: 14px"> 例如:SET (‘a’,’b’,’c’)表示插入的值可以是a,b,c三个字符的任意组合,即插入‘a',‘ac',‘abc'都是合法的。</span></p> <p><span style="font-size: 14px"> 对于内建类型可以使用以下修饰符进行限定:</span></p> <p><span style="font-size: 14px"> NULL</span></p> <p><span style="font-size: 14px"> NOT NULL</span></p> <p><span style="font-size: 14px"> DEFAULT 'value'</span></p> <p></p> 最后修改:2021 年 12 月 10 日 10 : 53 AM © 允许规范转载 赞赏 如果觉得我的文章对你有用,请随意赞赏 赞赏作者 支付宝微信