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
我是 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