default mysql_MySQL 中数据类型的默认值 - default 约束

MySQL 中,所有的数据类型,都可以显式或隐式的拥有默认值。

我们可以使用 DEFAULT 约束显式的为列指定一个默认值。比如

CREATE TABLE t1 (

i INT DEFAULT -1,

c VARCHAR(10) DEFAULT '',

price DOUBLE(16,2) DEFAULT 0.00

);

在上面这条语句中,我们为 int 类型的 i 列指定了默认值 -1 ,为 varchar 类型的 c 列指定了默认值 '' ,为 double 类型的 price 列指定了默认值 0.00。也就是说,当我们插入数据的时候,并不需要完整的为每一列指定值。如果没有指定值,那么 MySQL 就会使用默认值填充。

但是,DEFAULT 约束有有一个特例,就是 SERIAL DEFAULT VALUE。等于类型为整形的列,它的作用相当于 NOT NULL AUTO_INCREMENT UNIQUE。

其实这不怪 DEFAULT ,是 SERIAL 的锅。

但是,default 并不是没有 bug,显式 DEFAULT 约束处理的某些方面依赖于版本。

MySQL 8.0.13 中处理显式默认值

DEFAULT 约束中指定的默认值可以是文字常量或表达式。

如果使用表达式作为默认值,则需要表达式默认值括在括号内 () ,以将它们与文字常量默认值区分开来。

例如

CREATE TABLE t1 (

-- 常量默认值

i INT DEFAULT 0,

c VARCHAR(10) DEFAULT '',

你可能感兴趣的:(default,mysql)