mysql 字段类型text和blob

字段类型和最大字符长度:

TINYBLOB

TINYTEXT
一个BLOB或TEXT列,最大长度为255(2^8-1)个字符。
BLOB

TEXT
一个BLOB或TEXT列,最大长度为65535(2^16-1)个字符。

MEDIUMBLOB

MEDIUMTEXT
一个BLOB或TEXT列,最大长度为16777215(2^24-1)个字符。
LONGBLOB

LONGTEXT
一个BLOB或TEXT列,最大长度为4294967295(2^32-1)个字符。

以text字段为例:

mysql text类型没有默认值,如果该字段没有值,则该字段是空,即is null 。
使用select语句时应注意:(test是表名,description是字段名,类型是text) 。
select * from test where description = null; 等价为 select * from test where description = 'null'。
即此时description 值是null才可以取出。
如果description字段没有填入值,是系统设置的,则执行 select * from test where description is null,即可。

常见问题:

为text字段设置了字段not null 导致插入时候报错 : '字段名' doesn't have a default value

对于mysql当没有设置默认值时候,插入时候默认相当于插入 null,而如果设置了not null,就会导致报错,字段无法设置默认值

mysql的严格模式:

MySQL的严格模式,简单来说就是MySQL自身对数据进行严格的校验(格式、长度、类型等),比如一个整型字段我们写入一个字符串类型的数据,在非严格模式下MySQL不会报错,同样如果定义了char或varchar类型的字段,当写入或更新的数据超过了定义的长度也不会报错。
对于编程来说没有任何好处,少了一层数据正确性的保障。

总结:

对于mysql的text字段设置时需注意:
1.不设置 not null
2.不设置默认值
例如:
ALTER TABLE testTable MODIFY COLUMN course_ids text COMMENT "课程id字符串"

你可能感兴趣的:(mysql 字段类型text和blob)