• ベストアンサー

NOT NULL と NOT NULL WITH DEFAULT

CREATE TABLE でテーブルを作成するときに指定する、 「NOT NULL」 と 「NOT NULL WITH DEFAULT」 の違いを教えてください。 また、どういう時に使い分けるのかも教えてもらえるとうれしいです。 よろしくお願いします。

  • taaar
  • お礼率67% (33/49)

質問者が選んだベストアンサー

  • ベストアンサー
  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.1

前者は、nullをinsert、もしくはnullでupdateは不可。 後者は、insert時に値の指定がなかったときにdefault以降に記述した値、もしくはデータ型によって決められた値を入れる。 です。 ぜんぜん違うと思いますが。 #で、DB2でいいんですか? http://www.db2.jp/db2manual/ja_JP/index.htm?openup=admin/r0000927.htm

参考URL:
http://www.db2.jp/db2manual/ja_JP/index.htm?openup=admin/r0000927.htm
taaar
質問者

お礼

ありがとうございました。

関連するQ&A

  • DEFAULT が設定できないのです

    下記の文でテーブルを作ろうとしたところ、 テーブルは作れるのですが、値は何も設定できません。 デフォルト値の設定をしたいのですが、 この文は何が間違っているのでしょうか。 ご教授願います。 CREATE TABLE tbl_id ( id int NOT NULL DEFAULT 1 );

    • ベストアンサー
    • MySQL
  • 日付型項目のNULLについて(PostgreSQL)

    よろしくお願いします。 下記内容のtest_tableを作成して ---- CREATE TABLE "test_table" ( "id" varchar(10) NOT NULL, "fdate" date ); ---- 下記内容のデータを登録しました。 ---- insert into test_table(id,fdate) values ('abc',NULL); ---- 下記のsqlでデータを取得できませんでした。 どうしてでしょうか? select * from test_table where fdate = NULL;

  • NOT NULL 制約の削除

    MSSQL(SQLServer2000)にて、NOT NULLの列制約をはずすにはどうしたらよいのでしょうか。 ALTER TABLE <テーブル名> ALTER COLUMN <列名> DROP NOT NULL をやってみたのですが、構文エラーになってしまいます。 よろしくお願いします。

  • AccessのSQL文

    SQLで”Create Table”を用いてAccessのテーブルを作成しようとしたのですが テキスト型のフィールドのデフォルトがNotNullになってしまっているようで 「NULL許可」にできません。 どうやったらSQL文内でNULL許可が指定できるのでしょうか?

  • PostgreSQLの「not null」制約の追加

    こんにちは。いつもお世話になります。 PostgreSQLのversion7.2.8で、「not null」制約の追加、削除の方法をおたずねします。よろしくお願いします。 ALTER TABLE テーブル名 ALTER COLUMN カラム名 SET NOT NULL; で試したところ、syntaxエラー(構文エラー)で失敗。 ALTER TABLE テーブル名 ALTER COLUMN カラム名 DROP NOT NULL; で試してみても、同じくsyntaxエラーです。 version7.2.8が原因でしょうか? また、version7.2.8でも「not null」制約の追加、削除が できる他の方法はありますでしょうか? テーブルを作り直さずに、 既存のテーブルのカラムへの制約の追加、削除をしようとしています。 よろしくお願いします。

  • NOT NULL制約カラムにNULLが格納される

    SQLite3でテーブル作成する際、カラムをテキスト型にして、NOT NULL制約をつけているのですが、NULLも普通にINSERTされてしまいます なんででしょうか?

  • Mysql DATE型のDEFAULT値

    初心者ですが、よろしくお願いします。 Mysqlでテーブルを作成して、カラムにDATE型を指定するとDEFAULT値が設定できません、、、。 これはMysqlの仕様なのでしょうか? ちなみに、TIMESTAMP型だと、'DEFAULT CURRENT_TIMESTAMP'でDEFAULT設定できます、、。 -- クエリ CREATE TABLE test ( column_name DATE NOT NULL DEFAULT CURRENT_DATE ); >> エラー ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'CURRENT_DATE)' at line 1 Mysql::ABも調べたのですが、よく分かりませんでした。 よろしくお願いします。 MySQLバージョン 5.0.41

  • create table時のdefaultにLAST_INSERT_ID()を使う

    いつもお世話になってます。 現在、postgreSQL→MySQLへの移行作業をしようとしています。 型が微妙に違う等の修正を手作業で行っているのですが、 postgreSQLの下記の型(default値)をMySQLでどう設定してよいかわからずに困っています。 ■postgreSQLのcreate文 CREATE TABLE test_tab ( id_i serial NOT NULL, parent_id integer DEFAULT currval('inquiry_tab_id_i_seq'::text) ) 下記のような感じでMySQLで出来るかなと思ったらうまく出来ませんでした。 ■試してみたMySQLのcreate文 CREATE TABLE test_tab ( id_i int primary key not null auto_increment, parent_id integer DEFAULT LAST_INSERT_ID() ) どう設定すれば、同じ設定のテーブルが作れるのか、どなたかご教授願えませんでしょうか。 よろしくお願いします。

  • ForeignKeyの作成方法について

    MySQLでForeign Keyを作成しようと、以下のSQLを実行したところ、 テーブルは作成されず、エラーが発生しました。 エラーメッセージは  Can't create table 'test.user' (errno: 150) です。 また、 INDEX (CompanyID), FOREIGN KEY (CompanyID) REFERENCES m_Company(CompanyID), の2行を外すと通常通りテーブルは作成できます。 どうやったら、Foreign Keyを設定できるでしょうか。 テーブル作成後に、後付でForeign Keyを設定しようと心みましたが、 それも失敗しました。 -------------------------------------------------------- CREATE TABLE user ( `Seqno` int(11) NOT NULL AUTO_INCREMENT, `UserID` varchar(8) NOT NULL DEFAULT '', `Password` varchar(8) DEFAULT NULL, `Mail` varchar(100) DEFAULT NULL, `Valid` tinyint(4) DEFAULT NULL, `CompanyID` int(11) DEFAULT NULL, INDEX (CompanyID), FOREIGN KEY (CompanyID) REFERENCES m_Company(CompanyID), PRIMARY KEY (`Seqno`,`UserID`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; --------------------------------------------------------

    • ベストアンサー
    • MySQL
  • varchar型を主キーに…

    現在サーブレット/JSPを利用してDBにユーザアカウントを登録、削除、更新、一覧をできるようするシステムを作成しています。 テーブルを create table loginuser ( userId char(16) not null default '', passwd char(16) not null default '', name varchar(50) not null default '', accessFlg int(1) not null default '0', primary key(userId)); で作成しました。 IDが数字の時はDBに登録ができるのですがIDに文字を入力するとDBに登録されません。 主キーをvarchar型で使用するのは不可能なのでしょうか? ご返答をよろしくお願いします。