CREATE TABLE 中属性后的 NULL 约束?

NULL constraint after attribute in CREATE TABLE?

我是 SQL 的新手,我想弄清楚这个 NULL 在做什么。这里有一个简单的例子:

CREATE TABLE test (
       bla VARCHAR NULL
);

所以我试图弄清楚这是否设置为默认值,但无论我是否将它放在那里,它都是默认值 null,对吗?

我还想知道它是否必须保持为空(无论出于何种原因),但是当我尝试插入一个值时,它仍然是可能的。那么它有什么作用吗?

来自CREATE TABLE

NULL

The column is allowed to contain null values. This is the default.

你可以这样写:

INSERT INTO test(bla)
VALUES (NULL);
-- it holds NULL

INSERT INTO test(bla)
VALUES (default);
-- it holds NULL

INSERT INTO test(bla)
VALUES ('a');
-- it holds 'a'

您也可以省略列:

CREATE TABLE test2(bla VARCHAR NULL, col2 INT NOT NULL);

INSERT INTO test2(col2) VALUES (1);
-- it contains NULL, 1

如果您将列指定为:

CREATE TABLE test(bla VARCHAR NOT NULL);

INSERT INTO test(bla) VALUES (NULL);
-- error

编辑:

您不必明确指定 NULL

CREATE TABLE test(bla VARCHAR);

等同于:

CREATE TABLE test (bla VARCHAR NULL);

您正在参数化的列可以是 NULL