問題:
定義表時可以為某些列定義預設值,現要以預設值插入一行,而無需指定各列的值。看一下下面列出的表:
create table D (id interger default 0)
要插入零值,而不像在insert語句的值清單中明确得為該行指定0值,這裡明确的要求插入預設值,而不管預設值是什麼。
解決方案;
所有資料庫系統都支援使用default關鍵字顯示的指定某列插入預設值,有些資料庫系統還有其他的方法來解決這個問題。
下面的例子說明了使用default關鍵字來解決這個問題的方法:
insert into D values (default)
當不需要将表中所有列都插入值時,也可以明确的指定要使用預設值的列名稱
insert into D(id) values(default)
讨論:
在值清單中的default關鍵字為相應列插入預設值,預設值在建立表時定義,所有的dbms中都可以使用此關鍵字。
如果表的每列都定義了預設值(表D就是這種情況),MySQL 也可以使用其他的方法。例如,可以使用空Values清單來用預設值建立行;否則,就需要對表中的每一行指定default
如果一個表部分列有預設值,部分列沒有預設值,要向某列中插入預設值隻要将該列排除在插入清單之外,都不需要使用default關鍵字,假設表D有另外一列沒有定義預設值:
create table D (id integer default 0, foo varchar(10))
在插入清單中隻獵虎foo字段,id中就可以插入預設值:
insert into D (name) values ('Bar')
使用上述語句的結果是FOO字段值為“Bar”而id字段的值為“0”。ID字段的值為0是因為沒有對其指定其他值。