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