2011-02-15 20 views
1

このスクリプトではnullは何を意味しますか?列にNULL値を持たせることができますか、列の既定値がNULLであることを意味しますか?ここでヌルとは何ですか?

CREATE TABLE product (product_nbr int NOT NULL, 
    product_name varchar(40) NOT NULL, 
    product_status_code char(10) NOT NULL, 
    start_date date NULL, 
    end_date date NULL, 
    raw_material_cost decimal(12,2) NULL, 
    primary key (product_nbr) 
    ) 

答えて

8

これは、列がNULL値を受け入れることを意味します。これは、他の列に表示されるNOT NULL宣言の正反対であり、実際はデフォルト宣言です。

列のデフォルト値がNULLの場合、宣言はDEFAULT NULLです。もちろん、それは列がヌル値を受け入れることを意味します。

+0

CREATE TABLE product(product_nbr int NOT NULL、product_name varchar(40)NOT NULL、product_status_code char(10)NOT NULL、開始日date、終了日date、raw_material_cost小数点(12,2)、主キー(product_nbr))..これは質問の質問と同じです。 – rgksugan

+0

@rgksugan:はい。 – BoltClock

+1

@rgksugan:それらは全く同じではありません。コメント内のSQLは有効なSQL-92構文ですが、質問のSQLは有効ではありません。 SQL DDLで 'NULL'キーワードを使用すると、カラムをNULLにすることができるというフラグを付けることが標準へのベンダー拡張であり、問​​題のベンダーがMicrosoftであると推測しています。 – onedaywhen

2

基本的には、a列はNULLを許可し、列にはデフォルト値が設定されていないため、両方を意味します。テーブルに挿入して値を指定せず、カラムのデフォルト値がない場合、値はnull(未定義)になります。列がNOT NULLに設定されていて、デフォルト値がない場合、列がNULLであることが許可されていないため、エラーが発生します。

関連する問題