目录

1、MySQL 数据类型介绍

1.1 整数类型

1.2 浮点数类型和定点数类型

1.3 日期与时间类型

1、year类型

2、time类型

3、date类型

4、datetime类型

5、timestamp类型

1.4 字符串类型

1、char类型和varchar类型

2、text类型

3、enum类型

4、set类型

1.5 二进制类型

1、binary和varbinary类型

2、bit类型

3、blob类型

2、如何选择数据类型

3、 MySQL中什么数据类型能够储存路径?

4、MySQL中如何使用布尔类型?

5、MySQL中如何存储JPG图片和MP3音乐?


数据类型是数据的一种属性,其可以决定数据的存储格式、有效范围和相应的限制。MySQL的数据类型包括整数类型、浮点数类型、定点数类型、日期和时间类型、字符串类型和二进制数据类型。 

  • 整数类型、浮点数类型和定点数类型
  • 日期与时间类型
  • 字符串类型
  • 二进制类型

1、MySQL 数据类型介绍

1.1 整数类型

整数类型是数据库中最基本的数据类型。标准SQL中支持INTEGER和SMALLINT这两类整数类型。MySQL数据库除了支持这两种类型以外,还扩展支持了TINYINT、MEDIUMINT和BIGINT。

不同类型的整数类型的字节数不同。根据类型所占的字节数可以算出该类型的取值范围。

例如,TINYINT 的空间为1个字节,1个字节是8位。那么,TINYINT无符号数的最大值为2^8-1,即为255。TINYINT 有符号数的最大值为2^7-1,即为127。同理可以算出其他不同整数类型的取值范围。

MySQL支持类型类型的名称后面指定该类型的显示宽度,其基本形式如下:

数据类型(显示宽度)

其中,数据类型参数是整数数据类型的名称,显示宽度参数是指定宽度的数值。显示宽度是指能够显示的最大数据的长度。例如,int(4)就是指定int类型的显示宽度为4。在不指定宽度的情况下,每个整数类型都有默认的显示宽度。

一个数据类型的默认显示宽度刚好能显示该数据类型的所有值。下图的整数类型都没有设置显示宽度,都为其默认值。

在整数类型使用时,还可以搭配使用zerofill参数。zerofill参数表示数字不足的显示空间由0来填补。使用zerofill参数时,MySQL会自动加上UNSIGNED属性(表示无符号数),其显示宽度比默认宽度小1。

此表中显示的数值为:

当插入数据的显示宽度大于设置的显示宽度时,数据依然可以插入,并且可以完整的显示出来,设置的显示宽度在显示的该记录时失效。

!!!但是要注意数据的宽度不能大于默认宽度。如果大于默认宽度,那该数据已经超过了该类型的最大值。因为最大值的宽度必须是小于等于默认宽度。如果一个值大于了这个类型的最大值,那么这个值是不可能插入的。

字段选择哪个整数类型,取决于该字段的范围。如果字段的最大值不超过255。那选择TINYINT 类型就足够了。取值很大时,根据最大值的范围选择INT类型或者BIGINT类型。现在最常用的整数类型是INT类型。

1.2 浮点数类型和定点数类型

MySQL中使用浮点数类型和定点数类型来表示小数。浮点数类型包括单精度浮点数(FLOAT型)和双精度浮点数(DOUBLE型)。定点数类型就是DECIMAL型。

 

从上面表中可以看到,DECIMAL型的取值范围与DOUBLE相同。但是,DECIMAL的有效取值范围由M和D决定。而且,DECIMAL型的字节数是M+2。也就是说,定点数的存储空间是根据其精度决定的。
MySQL中可以指定浮点数和定点数的宽度,其基本形式如下:

数据类型(M,D)

其中,“数据类型”参数是浮点数或定点数的数据类型名称;M参数称为精度,是数据的总长度,小数点不占位置;D参数称为标度,是指小数点后的长度为D。例如, FLOAT(6,2)的含义数据FLOAT型,数据长度为6,小数点后保留2位。按此定义,1234.56是符合要求的。

!!!上述指定小数精度的方法虽然都适合于浮点数和定点数,但不是浮点数的标准用法。建议在定义浮点数时,如果不是实际情况需要,最好不要使用。如果使用了,可能会影响数据库的迁移。对定点数而言,DECIMAL(M,D)是定点数的标准格式,一般情况下可以选择这种数据类型。

如果插入值的精度高于实际定义的精度,系统会自动进行四舍五入处理,使值的精度达到要求。不同的是,FLOAT型和 DOUBLE型在四舍五入时不会报错,而DECIMAL型会有警告。 

警告显示,字段c插入的信息被截断。而a和b字段却没有警告。

此表存储的数据:

如果不指定精度,浮点数和定点数有其默认的精度。FLOAT型和 DOUBLE型默认会保存实际精度,但这与操作系统和硬件的精度有关。DECIMAL型默认整数位为10,小数位为o,即默认为整数。

 此表显示的数值为:

上面结果显示,字段a和b是按照实际精度保存的。而字段c进行了四舍五入处理,而且没有小数位。同时系统出现警告。

在MySQL中,定点数以字符串形式存储。因此,其精度比浮点数要高。而且,浮点数会出现误差,这是浮点数一直存在的缺陷。如果要对数据的精度要求比较高,还是选择定点数( DECIMAL)比较安全。

1.3 日期与时间类型

日期与时间类型是为了方便在数据库中存储日期和时间而设计的。MySQL中有多种表示日期和时间的数据类型。其中,YEAR类型表示年份;DATE类型表示日期;TIME类型表示时间;DATETIME和TIMESTAMP表示日期和时间。本小节将介绍上述类型的存储的字节数、取值范围和特点。

  • YEAR类型
  • TIME类型
  • DATE类型
  • DATETIME类型
  • TIMESTAMP类型

每种日期与时间类型都有一个有效范围。如果插入的值超过了这个范围,系统会报错,并将零值插入到数据库中。不同的日期与时间类型有不同的零值。

1、year类型

YEAR类型使用1个字节来表示年份。MySQL中以YYYY的形式显示YEAR类型的值。给YEAR类型的字段赋值的表示方法如下:

1)使用4位字符串或数字表示。

其范围从1901~2155。输入格式为‘YYYY'或YYYY。例如,输入‘2008’或者2008,可直接保存为2008。如果超过了范围,就会插入0000。

 【额,不知道为什么插入超范围的数值。直接出错了。】

2)使用⒉位字符串表示。

‘00’~‘69’转换为2000~2069,‘70’~‘99’转换为1970~1999。例如,输入‘35’,YEAR值会转换为2035;输入‘90’,YEAR值会转换为1990。‘0’和‘00’的效果是一样的。

 3)使用2位数字表示。

1~69转换为2001~2069,70~99转换为1970~1999。注意,2位数字与2位字符串是不一样的。因为,如果插入0,转换后的YEAR值不是2000,而是0000。

2、time类型

TIME类型使用3个字节来表示时间。MySQL中以 HH:MM:SS 的形式显示TIME类型的值。其中,HH表示时;MM表示分,取值范围为0~59;SS表示秒,取值范围是0~59。TIME类型的范围可以从‘-838:59:59’~‘838:59:59’。虽然,小时的范围是0~23。但是为了表示某种特殊需要的时间间隔,将TIME类型的范围扩大了。而且,还支持了负值。

TIME类型的字段赋值的表示方法如下。

1) ‘D HH:MM:SS’格式的字符串表示

其中,D表示天数,取值范围是0~34。保存时,小时的值等于(D*24+HH)。例如,输入‘2 11:30:50’,TIME类型会转换为59:30:50。当然,输入时可以不严格按照这个格式,也可以是“HH:MM:SS”,“HH:MM”、“D HH:MM”、“D HH”或者“SS”等形式。例如,输入‘30’,TIME类型会转换为00:00:30。

 2) 'HHMMSS’格式的字符串或HHMMSS格式的数值表示。

例如,输入‘345454’,TIME类型会转换为34:54:54;输入值为数值345454,TIME类型也会转换为34:54:54。如果输入0和‘0’,那么TIME类型会转换为0000:00:00。

 3) 使用CURRENT_TIME或者NOWO输入当前系统时间。

 

结果显示,CURRENT_TIME和NOW()都转换为当前系统时间。因此,如果要获取当前的系统时间,最好选择CURRENT_TIME和 NOW()。

一个合法的 TIME值,如果超出TIME的范围,将被裁为范围最接近的端点,如,‘880:00:00’被转换为838:59:59。无效TIME值,在命令行下是无法被插入到表中的。注意:如果插入的TIME值是无效的,系统会提示“ERROR 1292(22007): Incorrect time value”。即使这个无效值被插入到表中,其值也会被转换为00:00:00。例如,'877034’就是一个无效的值,因为分钟部分超出了范围。

TIME类型专门用来存储时间数据,而且只占3个字节。如果只需要记录时间,选择TIME类型是最合适的。

3、date类型

DATE类型使用4个字节来表示日期。MySQL中是以 YYYY-MM-DD 的形式显示DATE类型的值。其中,YYYY表示年;MM表示月;DD表示日。DATE 类型的范围可以从‘1000-01-01’~‘9999-12-31’。给DATE类型的字段赋值的表示方法如下:

1) ‘YYYY-MM-DD’或‘YYYYMMDD’格式的字符串表示。

这种方式可以表达的范围是‘1000-01-01’~‘9999-12-31’。例如,输入‘4008-2-8’,DATE类型将转换为4008-02-08;输入‘20220308’,DATE类型将转换为2022-03-08。

MySQL中还支持一些不严格的语法格式,任何标点都可以用来做间隔符。如'YYYY/MM/DD’,‘YYYY@MM@DD’.‘YYYY.MM.DD’等分隔形式。例如,输入‘2011.3.8’,DATE类型将转换为2011-03-08。

 2)‘YY-MM-DD’或者‘YYMMDD’格式的字符串表示。

其中‘YY'的取值,‘00’~‘69’转换为2000~2069,‘70’~‘99’转换为1970~1999。与 YEAR类型类似。例如,输入‘35-01-02’,DATE类型将转换为2035-01-O2;输入‘800102’,DATE类型将转换为1980-01-02。

而且,MySQL中也支持一些不严格的语法格式,如‘YY/MM/DD'、'YY@MM@DD’、'YY.MM.DD’等分隔形式。例如,输入‘89@3@8’,DATE类型将转换为1989-03-08。

3) 使用CURRENT_DATE或NOW()来输入当前系统日期。

CURRENT_DATE 和 NOW()转换为当前系统日期。DATE类型只占用4个字节。如果只需要记录日期,选择DATE类型是最合适的。

4、datetime类型

DATETIME类型使用8个字节来表示日期和时间。MySQL中以‘YYYY-MM-DDHH:MM:SS’的形式显示DATETIME类型的值。从其形式可以看出,DATETIME类型可以直接用DATE类型和TIME类型组合而成。给DATETIME类型的字段赋值的表示方法如下:

1)‘YYYY-MM-DD HH:MM:SS’或‘YYYYMMDDHHMMSS’格式的字符串表示。

这种方式可以表达的范围是‘1000-01-01 00:00:00’~‘9999-12-31 23:59:59’。例如,输入‘2008-08-08 08:08:08’,DATETIME类型转换为2008-08-08 08:08:08;输入‘20080808080808’,同样转换为2008-08-08 08:08:08。
MySQL中还支持一些不严格的语法格式,任何标点都可以用来做间隔符。情况与DATE类型相同。而且,时间部分也可以用任意分隔符隔开,这与TIME类型不同。TME类型只能用“:”隔开。例如,输入‘2008@08@08 08*08*08’,同样转换为2008-08-0808:08:08。


2) ‘YY-MM-DD HH:MM:SS’或‘YYMMDDHHMMSS’格式的字符串表示。

其中‘YY’的取值,‘00’~‘69’转换为2000~2069,‘70’~‘99’转换为1970~1999。与 YEAR型和DATE型相同。

3) YYYYMMDDHHMMSS或 YYMMDDHHMMSS格式的数字表示。

例如,输入20080808080808 ,DATETIME类型转换为2008-08-08 08:08:08 ;输入080808080808,同样转换为2008-08-08 08:08:08。如果输入的值为0,那么DATETIME类型转换为0000-00-00 00-00-00。

 4) 使用NOW()来输入当前系统日期和时间。

DATETIME类型用于记录日期和时间,其作用等价于DATE类型和TIME类型的组合。

一个DATETIME类型的字段可以用一个DATE类型的字段和一个TIME类型的字段代替。但是,如果需要同时记录日期和时间,选择DATETIME类型是个不错的选择。

5、timestamp类型

TIMESTAMP类型使用4个字节来表示日期和时间。TIMESTAMP类型的范围是从1970-01-01 08:00:01~2038-01-19 11:14:07.MySQL中也是以‘YYYY-MM-DD HH:MM:SS'的形式显示TIMESTAMP类型的值。从其形式可以看出,TIMESTAMP类型与DATETIME类型显示的格式是一样的。给TIMESTAMP类型的字段赋值的表示方法基本与DATETIME类型相同。值得注意的是,TIMESTAMP类型范围比较小,没有DATETIME类型的范围大。因此,输入值时要保证在 TIMESTAMP类型的有效范围内。

下面介绍 TIMESTAMP类型的几种与DATETIME类型不同的形式。内容如下:

(1)使用CURRENT_TIMESTAMP来输入系统当前日期与时间。
(2)输入NULL时,系统会输入系统当前日期与时间。
(3)无任何输入时,系统会输入系统当前日期与时间。

【注意:这里不能同时插入,会报错】

TIMESTAMP类型还有一个很大的特殊点,就是时间是根据时区来显示的。例如,在东八区插入的TIMESTAMP类型为2009-09-30 14:21:25。在东七区显示时,时间部分就变成了13:21:25。在东九区显示时,时间部分就变成了15:21:25。

需要显示日期与时间,TIMESTAMP类型能够根据不同地区的时区来转换时间。但是,timestamp类型的范围太小。其最大时间为2038-01-19 11:14:07。如果插入的时间比这个大,将会出错。例如,输入2038-01-19 11:14:08,系统会出现“ERROR 1292(22007):Incorrect datetime value: '2038-01-1911:15:08' for column 'a' at row 1”这样的错误提示。因此,若需要的时间范围比较大,还是选择DATETIME类型比较安全。

1.4 字符串类型

字符串类型是在数据库中存储字符串的数据类型。字符串类型包括CHAR、VARCHAR、BLOB、TEXT、ENUM和SET。

1、char类型和varchar类型

 CHAR类型和VARCHAR类型都是在创建表时指定了最大长度,其基本形式如下:

字符串类型(M)

其中,“字符串类型”参数指定了数据类型为CHAR类型还是 VARCHAR类型;M参数指定了该字符串的最大长度为M。例如,CHAR(4)就是指数据类型为CHAR类型,其最大长度为4。

CHAR类型的长度是固定的,在创建表时就指定了。其长度可以是0~~255的任意值。例如,CHAR(100)就是指定CHAR类型的长度为100。

VARCHAR类型的长度是可变的,在创建表时指定了最大长度。定义时,其最大值可以取0~65535之间的任意值。指定VARCHAR类型的最大值以后,其长度可以在0到最大长度之间。例如,VARCHAR(100)的最大长度是100。但是,不是每条记录都要占用100个字节。而是在这个最大值范围内,使用多少分配多少。VARCHAR类型实际占用的空间为字符串的实际长度加1。这样,即可有效节约系统的空间。

CHAR(5)所占用的空间都是5个字节。这表示 CHAR(5)的固定长度就是5个字节。而VARCHAR(5)所占的字节数是实际长度的基础上加1。因为varchar类型的字符串的结束标志符占用了1个字节。从表的第三行可以看到,VARCHAR将字符串‘123’最后面的空格依然保留着,而CHAR类型中将‘123’后面的空格自动删除了。

如果CHAR和VARCHAR的长度为5,而插入的值为‘123456’。那么系统会阻止这个值的插入,并且会报错。错误信息是“ERROR 1406(22001): Data too longfor column”。这说明插入的字符串的长度已经大于了可以插入的最大值。

2、text类型

TEXT类型是一种特殊的字符串类型。TEXT只能保存字符数据,如新闻的内容等。TEXT类型包括TINYTEXT、TEXT、MEDIUMTEXT 和LONGTEXT。


各种TEXT类型的区别在于允许的长度和存储空间不同。因此在这几种 TEXT类型中,根据需求选取既能满足需要又最节约空间的类型即可。

3、enum类型

ENUM类型又称为枚举类型。在创建表时,ENUM类型的取值范围就以列表的形式指定了。其基本形式如下:

属性名 enum(‘值1’,‘值2’,...,‘值 n’)

其中,属性名参数指字段的名称;“值 n”参数表示列表中的第n 个值,这些值末尾的空格将会被系统直接删除。ENUM类型的值只能取列表中的一个元素。其取值列表中最多能有65535个值。列表中的每个值都有一个顺序排列的编号,MySQL中存入的是这个编号,而不是列表中的值。

如果 ENUM类型加上了NOT NULL属性,其默认值为取值列表的第一个元素。如果不加NOT NULL属性,ENUM类型将允许插入NULL,而且NULL为默认值。

不指定插入值时,插入的是NULL;插入NULL时,可以成功的将NULL插入到表中。如果插入的值为‘boy’,系统会出现“ERROR 1265 (01000): Data truncated forcolumn”这样的错误提示。只能插入列表中已有的元素或空值。

不指定插入值时,插入的是“woman”,也就是列表的第一个元素。如果插入的值为NULL,则会出现“ERROR 1048 (23000): Column 'a' cannot be null”这样的错误提示。

如果只能选取列表中的一个值,就选择ENUM类型;如果需要选取列表中多个值的组合,则需要选择SET类型。

4、set类型

在创建表时,SET类型的取值范围就以列表的形式指定了。其基本形式如下:

属性名 set(‘值1’,‘值2’,...,‘值n’)

“属性名”参数指字段的名称;“值n”参数表示列表中的第n个值,这些值末尾的空格将会被系统直接删除。其基本形式与ENUM类型一样。SET类型的值可以取列表中的一个元素或者多个元素的组合。取多个元素时,不同元素之间用逗号隔开。SET类型的值最多只能是有64个元素构成的组合。
同ENUM类型一样,列表中的每个值都有一个顺序排列的编号。MySQL中存入的是这个编号,而不是列表中的值。

插入记录时,SET字段中的元素顺序无关紧要。存入 MySQL 数据库后,数据库系统会自动按照定义时的顺序显示。

结果显示,'C,B,D'插入后依然按照'B,C,D'的顺序存储。如果插入的值为'B,E,F,系统会出现“ERROR 1265(01000): Data truncated for column”这样的错误提示。这说明,插入的值必须是在定义的集合中的元素。否则,系统会报错。

1.5 二进制类型

 二进制类型是在数据库中存储二进制数据的数据类型。二进制类型包括 BINARY、VARBINARY、BIT、TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB。 

1、binary和varbinary类型

BINARY 类型和 VARBINARY类型都是在创建表时指定了最大长度,其基本形式如下:

字符串类型(M)

其中,“字符串类型”参数指定了数据类型为BINARY类型还是VARBINARY类型;M参数指定了该二进制数的最大字节长度为M。这与CHAR类型和VARCHAR类型相似。例如,BINARY (10)就是指数据类型为BINARY类型,其最大长度为10。

BINARY类型的长度是固定的,在创建表时就指定了。不足最大长度的空间由“O”补全。例如,BINARY (50)就是指定BINARY类型的长度为50。

VARBINARY 类型的长度是可变的,在创建表时指定了最大长度。指定好了VARBINARY类型的最大值以后,其长度可以在0到最大长度之间。例如,VARBINARY(50)的最大字节长度是50。但是,不是每条记录的字节长度都是50。在这个最大值范围内,使用多少分配多少。VARBINARY类型实际占用的空间为实际长度加1。这样,可以有效的节约系统的空间。

上述结果说明,BINARY 类型使用了最大的长度。而 VARBINARY类型只使用了这个字符占用的长度。

 

由上面结果可以看出,b='d\0\0\0'的值为1,表示两个是相等的。同理,vb='d'的值为1,表示这两者也是相等的。这就说明,BINARY类型需要用“\0”来补足空余的空间,而VARBINARY不需要。这也解释了“d”在b字段和''vb'字段中长度不同的原因。

2、bit类型

 BIT类型也是在创建表时指定了最大长度,其基本形式如下:

bit (M)

其中,“M”指定了该二进制数的最大字节长度为M,M的最大值为64。例如,BIT(4)就是数据类型为BIT类型,长度为4。若字段的类型BIT(4),存储的数据是从0~15。因为,变成二进制以后,15的值为1111,其长度为4。如果插入的值为 16,其二进制数为10000,长度为5,超过了最大长度,因此,大于等于16的数是不能插入到BIT(4)类型的字段中的。
在查询BIT类型的数据时,要用BIN(字段名+0)来将值转换为二进制显示

 ​​​​​​​

 

3、blob类型

BLOB类型是一种特殊的二进制类型。BLOB可以用来保存数据量很大的二进制数据,如图片等。BLOB类型包括TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB。这几种 BLOB类型最大的区别就是能够保存的最大长度不同。LONGBLOB的长度最大,TINYBLOB的长度最小。

BLOB类型与TEXT类型很类似。不同点在于BLOB类型用于存储二进制数据, BLOB类型数据是根据其二进制编码进行比较和排序。而 TEXT类型是文本模式进行比较和排序的。

BLOB类型主要用来存储图片、PDF文档等二进制文件。通常情况下,可以将图片、PDF文档都可以存储在文件系统中,然后在数据库中存储这些文件的路径。这种方式存储比直接存储在数据库中简单,但是访问速度比存储在数据库中慢。

2、如何选择数据类型

1)整数类型和浮点数类型

整数类型和浮点数类型最大的区别在于能否表达小数。整数类型不能表示小数,而浮点数类型可以表示小数。不同的整数类型的取值范围不同。TINYINT类型的取值范围为0~255。如果字段的最大值不超过255,那选择TINYINT类型就足够了。BIGINT类型的取值范围最大。最常用的整数类型是INT类型。

浮点数类型包括FLOAT类型和 DOUBLE类型。DOUBLE类型的精度比FLOAT类型高。如果需要精确到小数点后10位以上,就应该选择DOUBLE类型,而不应该选择FLOAT类型。

2)浮点数类型和定点数类型

对于浮点数和定点数,当插入值的精度高于实际定义的精度时,系统会自动进行四舍五入处理。其目的是为了使该值的精度达到要求。浮点数进行四舍五入时系统不会报警,定点数会出现警告。

在未指定精度的情况下,浮点数和定点数有其默认的精度。FLOAT型和 DOUBLE型默认会保存实际精度。这个精度与操作系统和硬件的精度有关。DECIMAL型默认整数位为10,小数位为0,即默认为整数。

在 MySQL中,定点数精度比浮点数要高。而且,浮点数会出现误差。如果要对数据的精度要求比较高,应该选择定点数。

3)CHAR类型和VARCHAR类型

CHAR类型的长度是固定的,而VARCHAR类型的长度是在范围内可变的。因此,VARCHAR类型占用的空间比CHAR类型小。而且,VARCHAR类型比 CHAR类型灵活。对于长度变化比较大的字符串类型,最好是选择VARCHAR类型。

虽然CHAR类型占用的空间比较大,但是CHAR类型的处理速度比VARCHAR快。因此,对于长度变化不大和查询速度要求较高的字符串类型,最好选择CHAR类型。

4)时间和日期类型

YEAR类型只表示年份。如果只需要记录年份,选择YEAR类型可以节约空间。TIME类型只表示时间。如果只需要记录时间,选择TIME类型是最合适的。DATE类型只表示日期。如果只需要记录日期,选择DATE类型是最合适的。

如果需要记录日期和时间,可以选择 DATETIME类型和 TIMESTAMP类型。DATETIME类型表示的时间范围比 TIMESTAMP类型大。因此,若需要的时间范围比较大,选择DATETIME类型比较合适。TIMESTAMP类型的时间是根据时区来显示的。如果需要显示的时间与时区对应,那就应该选择TIMESTAMP类型。

5)ENUM类型和SET类型

ENUM类型最多可以有65535个成员,而SET类型最多只能包含64个成员。两者的取值只能在成员列表中选取。ENUM类型只能从成员中选择一个,而SET类型可以选择多个。

因此,对于多个值中选取一个的,可以选择ENUM类型。例如,“性别”字段就可以定义成ENUM类型,因为只能在“男”和“女”中选其中一个。对于可以选取多个值的字段,可以选择SET类型。例如,“爱好”字段就可以选择SET类型,因为可能有多种爱好。

6)TEXT类型和BLOB类型

TEXT类型与BLOB类型很类似。TEXT类型存储只能存储字符数据。而BLOB类型可以用于存储二进制数据。如果要存储文章等纯文本的数据,应该选择TEXT类型。如果需要存储图片等二进制的数据,应该选择BLOB类型。

TEXT类型包括TINYTEXT、TEXT、MEDIUMTEXT 和 LONGTEXT。这4者最大的不同是内容的长度不同。TINYTEXT类型允许的长度最小,LONGTEXT类型允许的长度最大。BLOB类型也是如此。

3、 MySQL中什么数据类型能够储存路径?

MySQL中,CHAR、VARCHAR和TEXT等字符串类型都可以存储路径。但是,如果路径中使用“\”符合时,这个符号会被过滤。解决的办法是,路径中用“”或“I”来代替“\”。这样,MySQL就不会自动过滤路径的分隔字符,可以完整的表示路径。

4、MySQL中如何使用布尔类型?

在SQL标准中,存在 BOOL和 BOOLEAN类型。MySQL为了支持SQL标准,也是可以定义BOOL 和 BOOLEAN类型的。但是,BOOL和 BOOLEAN类型最后转换成的是TINYINT(1)。也就是说,在MySQL中,布尔类型等价于TINYINT(1)。因此,创建表的时候将一个字段定义成BOOL和BOOLEAN类型,数据库中真实定义的是TINYINT(1)。

5、MySQL中如何存储JPG图片和MP3音乐?

一般情况下,数据库中不直接存储图片和音频文件。而是存储图片和音频文件的路径。如果实在需要在 MySQL数据库中存储图片和音频文件,就选择BLOB类型。因为,BLOB类型可以用来存储二进制类型的文件。
 

Logo

本社区面向用户介绍CSDN开发云部门内部产品使用和产品迭代功能,产品功能迭代和产品建议更透明和便捷

更多推荐