SQL 插入默认值,可以定义表的某些列的默认值。你想在插入一行的时候使用预设的默认值,而不是指定的值。考虑下面的表。
SQL 插入默认值 问题描述
可以定义表的某些列的默认值。你想在插入一行的时候使用预设的默认值,而不是指定的值。考虑下面的表。
你希望插入 0,并且不想显式地在 INSERT
语句的 VALUES
列表里指定 0。你只希望显式地插入默认值,而不管预设的默认值是什么。
SQL 插入默认值 解决方案
所有数据库都支持使用 DEFAULT
关键字来显式地为某一列指定默认值,部分数据库还提供了其他方法来解决这一问题。
DEFAULT
关键字的使用示例如下。
如果你没有为所有列都插入数值,则你需要直接指定列名。
Oracle 8i 数据库及更早的版本不支持 DEFAULT
关键字。因此,对于 Oracle 9i 之前的版本,没有办法为某一列显式地插入默认值。
如果所有列都预设了默认值,MySQL 允许指定一个空白的 VALUES
列表。
这样就可以为所有列创建预设的默认值。
PostgreSQL 和 SQL Server 支持 DEFAULT VALUES
子句。
DEFAULT VALUES
子句会使得所有字段均取默认值。
SQL 插入默认值 扩展知识
在创建表的过程中,DEFAULT
关键字会按照表定义中指定的默认值为特定的列插入一个值。DEFAULT
关键字适用于所有的数据库管理系统。
如果预先为表的每一列都定义了默认值(比如,本实例中的 D
表),则 MySQL、PostgreSQL 和 SQL Server 用户还有其他的选择。为了创建一行全是默认值的记录,你可以指定一个空白的 VALUES
列表(适用于 MySQL),或者使用 DEFAULT VALUES
子句(适用于 PostgreSQL 和 SQL Server)。否则,你就需要为表的每一列都指定 DEFAULT
关键字。
对于那些既有默认值列又有非默认值列的表,只要不把预设了默认值的列写入 INSERT
列表,就能方便地为它们插入默认值。也就是说,在这里你不需要使用 DEFAULT
关键字。假设 D
表还有一列,而该列没有预设的默认值。
在 INSERT
列表里只指定 FOO
列,就可以为 ID
列插入默认值。
上述语句会产生一行 ID
列为 0
而 FOO
列为 Bar
的数据。ID
列会被设为默认值,因为我们没有为它指定其他的值。