CREATE TABLE中属性后的NULL约束?

时间:2016-07-12 16:37:24

标签: sql postgresql ddl

我是SQL的新手,我正在试图找出这个NULL正在做什么。这是一个简单的例子:

CREATE TABLE test (
       bla VARCHAR NULL
);

所以我试图弄清楚它是否设置为默认值,但它默认为null,我把它放在那里,对吧?

我也想知道它是否必须保持为null(无论出于何种原因)但是当我试图插入一个值时,无论如何都是可能的。它有什么用呢?

2 个答案:

答案 0 :(得分:1)

来自Cartesian product

  

<强> NULL

     

允许包含空值。这是默认值。

你可以写:

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);

答案 1 :(得分:1)

您正在参数化列可以为NULL