SQL DEFAULT约束 默认约束

时间:2018-11-15 17:49:58  来源:igfitidea点击:

在本教程中,我们将学习如何使用SQL DEFAULT约束向列中插入默认值。

当在表中插入新行而不指定列的值时,DEFAULT默认约束会将默认值插入到表的列中。

创建SQL默认约束

有两种方法为列创建默认约束:

  • 如果是新表,则使用CREATE TABLE语句
  • 对现有表使用ALTER TABLE语句。

您可以在CREATE TABLE语句中为列指定一个默认约束,如下面的语句所示:

CREATE TABLE books (
  book_id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
  title varchar(255) NOT NULL,
  pubdate date NOT NULL,
  isbn varchar(13) DEFAULT '8-381737-083',
  author_id INT NOT NULL
)

books表中的isbn列以“8-381737-083”作为默认值。
如果在books表中插入新行而不指定ISBN列的值,数据库引擎将把值8-381737-083插入ISBN列。

在books表中添加一本新书的INSERT语句如下:

INSERT INTO books(title,pubdate,author_id)
VALUES( 'SQL 教程','2010-01-01',1);

我们可以使用SELECT语句查询books表,查看isbn列中插入了什么值:

SELECT * FROM books;

ISBN列存储的是表定义时指定的默认值“8-381737-083”。

默认约束不仅接受字面量值,还接受函数返回的值。
例如,我们使用以下语句将今天的日期指定为pubdate列的默认值:

ALTER TABLE books 
ADD CONSTRAINT df_pubdate
DEFAULT GETDATE() FOR pubdate

删除SQL默认约束

要删除现有的默认约束,你可以使用如下的ALTER TABLE语句:

ALTER TABLE table
ALTER COLUMN column DROP DEFAULT;

例如,要删除books表中title列的默认约束,可以使用以下语句:

ALTER TABLE books
ALTER COLUMN title DROP DEFAULT;