- PR -

insertのsqlについて

1
投稿者投稿内容
トムソン
常連さん
会議室デビュー日: 2005/07/01
投稿数: 22
投稿日時: 2006-10-02 09:12
いつも拝見させていただいております。

oracle10gを使っていますが、基本的なことだと思うのですが、insert文の書き方が
わかりません。
insert into 表名(aa,bb,cc) values(1,'abc','def');
と書けば問題ないのですが、
bbに何も入れたくない(nullでもない)
場合の書き方がわかりません。
必要桁数分のスペースを入れて問題ないのでしょうか?
その他書き方がありましたらお願いいたします。
また、not null制約はかけていません。
かけた場合は、nullと入れればnullが入るのはわかるのですが・・・
一郎
ぬし
会議室デビュー日: 2002/10/11
投稿数: 1081
投稿日時: 2006-10-02 09:29
insert into 表名(aa,cc) values(1,'def');

でいいんじゃないですか。
こうするとbbには規定値が入ります。
引用:

トムソンさんの書き込み (2006-10-02 09:12) より:
また、not null制約はかけていません。
かけた場合は、nullと入れればnullが入るのはわかるのですが・・・


また、not null制約はかけていま
かけていない場合は、nullと入れればnullが入るのはわかるのですが・・・

の間違いでしょうか。


[ メッセージ編集済み 編集者: 一郎 編集日時 2006-10-02 09:29 ]
トムソン
常連さん
会議室デビュー日: 2005/07/01
投稿数: 22
投稿日時: 2006-10-02 12:27
一郎さんありがとうございます。
nullは間違えていました。
また、not null制約をかけている場合も、
教えていただいた書き方で、規定値が入りますか?
defaultと入れた場合、defaultを設定していなければ
使えないのでしょうか?
shimix
ぬし
会議室デビュー日: 2004/08/05
投稿数: 512
お住まい・勤務地: 大分市
投稿日時: 2006-10-02 12:49
#oracleは詳しくないのですが(汗
引用:

トムソンさんの書き込み (2006-10-02 12:27) より:
また、not null制約をかけている場合も、
教えていただいた書き方で、規定値が入りますか?
defaultと入れた場合、defaultを設定していなければ
使えないのでしょうか?


「default」を書くのはinsertのsqlではない・・というのは理解されてますよね?defaultだけ書いて値を書かないとcreate tableがエラーになると思いますけど・・。

not null制約を書いていればdefaultはnullではないハズなので、一郎さんの記述で問題ありません。そもそも「規定値が入る」というのは規定値を定義しているという前提ですので。

[ メッセージ編集済み 編集者: shimix 編集日時 2006-10-02 13:01 ]
Desmo
大ベテラン
会議室デビュー日: 2004/03/24
投稿数: 149
投稿日時: 2006-10-02 13:15
引用:

bbに何も入れたくない(nullでもない)
場合の書き方がわかりません。


「何も入れたくない」というのが「SQL文に明示したくない」いう意味であれば、一郎さんの返答の通り省略可能です。
一方で「(値を)何も入れたくない」いう意味だとすると、それは出来ません。
値を省略し かつdefault指定も無い場合は、そこにはNULLが入ります。(not null制約を書いていない場合のこと。書いてあればエラーになります)
もしも「意図的にNULLを入れたくない」のであれば、何か代わりの値を(例えばスペースなど)を指定する必要があります。
ぷさいくろう
ぬし
会議室デビュー日: 2006/08/30
投稿数: 1034
投稿日時: 2006-10-02 22:05
insert into 表名(aa,bb,cc) values(1,default,'def');
でどうよ
1

スキルアップ/キャリアアップ(JOB@IT)