如果没有提供默认值,字段的默认值是多少?

2022-01-05 00:00:00 default-value mysql phpmyadmin

我希望这不是一个愚蠢的问题.您可以在插入时为所有变量或函数设置默认值.但是如果不需要插入该字段并且您不允许空值,那么您在 phpMyAdmin 中看到的空白"值是多少?在查询中它是否以空字符串等形式返回?

I hope this isn't a dumb question. You can set a default value for all variables or a function for when it is inserted. but if the field is not required to insert and you don't allow null values, what is the "blank" value that you see in phpMyAdmin? in a query is it returned as empty string, etc?

只是想弄清楚,我想查询所有记录,以便该记录中特定列的值不是空"或空白或其他.

just trying to figure it out, I want to query for all records such that the value for a specific column in that record is not "empty" or blank or whatever.

谢谢.

推荐答案

参考手册,

对于没有显式 DEFAULT 的 NOT NULL 列的数据输入子句,如果 INSERT 或 REPLACE 语句不包含列,或 UPDATE 语句将列设置为 NULL,MySQL 处理根据当时生效的SQL模式列:

For data entry for a NOT NULL column that has no explicit DEFAULT clause, if an INSERT or REPLACE statement includes no value for the column, or an UPDATE statement sets the column to NULL, MySQL handles the column according to the SQL mode in effect at the time:

  • 如果未启用严格 SQL 模式,MySQL 会将列设置为列数据类型的隐式默认值.
  • 如果启用了严格模式,事务表会发生错误并且语句会回滚.对于非事务性表,
    发生错误,但如果第二行或后续行发生这种情况多行语句,前面的行将被插入.

所以您现在的问题可能是,各种列数据类型的隐式默认值是什么?给你:

So your question now may be, what are the implicit default values for the various column data types? Here you go:

隐式默认值定义如下:

  • 对于数字类型,默认值为 0,但对于使用 AUTO_INCREMENT 声明的整数或浮点类型除外
    属性,默认为序列中的下一个值.
  • 对于 TIMESTAMP 以外的日期和时间类型,默认值为该类型的适当零"值.对于第一个 TIMESTAMP 列在表中,默认值为当前日期和时间.请参阅第 10.3 节日期和时间类型".
  • 对于 ENUM 以外的字符串类型,默认值为空字符串.对于 ENUM,默认为第一个枚举值.

相关文章