mysql:13077
From: 忠犬 KEN <忠犬 KEN <ken_ken_1962@xxxxxxxxxx>>
Date: Tue, 06 Jun 2006 03:14:20 +0900
Subject: [mysql 13077] Re: null値に関して
忠犬です。 insertの構文、MySQLのauto_incrementの仕様を、十分に理解できていない ように感じられます。 >これまで、上記テーブルにデータを登録する際、 >$sql = "insert into saller values(0, '$hiduke', '$id', '$shamei'…… >としており、これは購入した本を参考にしたものです。(全てNullはYESとなってい >た。) > >しかし、先日こちらにて質問させて頂いた際、id は、PrimaryKeyおよび >auto_increment としてあるから、insert文の最初の 0 >は必要ないとご指導いただき >ましたが、これは、私の購入した本が全てNull がYES >と設定してあったため、0 を >代入しているだけであり、属性をnot null として設定した場合は、0 >を代入する必 >要ない。といった解釈で宜しいのでしょうか? MySQLのauto_incrementの仕様は、0またはnullを挿入すれば、 (現在の最大値+1)の値が格納されます。 これは、列がnullでもnot nullでも関係なく有効な仕様です。 つまり、auto_incrementの列には、nullは格納されません。 insert into 表名 values(値1,値2,...,値n) とした場合、列名を省略しているため、値は表の構成列数分を指定する必要がありま す。 auto_incrementの列に対しては、0かnullを指定することで、(最大値+1した値)と いう意味に なり、他の値を指定すると、その指定値が格納されます。 この構文では、特定の列の値の指定を省略することはできません。 insert into 表名(列名2,列名3,列名4) values(値2,値3,値4) のように列名を明示指定した場合は、値も指定する必要はないので、列名1が auto_incrementの 列だとすれば、nullを挿入値で指定した場合と同じ意味になります。 >また、先に申し上げたように、id 以外は全てnull をYES >としており、ブラウザ上の >データを(PHPにて)登録させるのですが、例えば、上記テーブル内の「shamei」を >他のフォームからデータを登録させたいため、入力(登録)フォームには 「shamei」 >というnameの存在しません。 >このような場合、下記スクリプトを例にすると、$shameiをどのように処理したら宜 >しいのでしょうか? >DBの属性をnot null にすべきなのでしょうか? > >$sql = "insert into saller values(0, '$hiduke', '$id', '$shamei'…… (1)insert into 表名 values(値1,値2,...,値n)と、列名を省略したい insert into saller values(0, '$hiduke', '$id', null,…… 値のところにnullと指定する。 (2)insert into 表名(列1,列2,...,列n) values(値1,値2,...,値n)と、列名を指定 列名を指定しなければ、その列にはdefaultがあればその値を、なければnullが 格納されます。 (3)MySQLの独自構文(?) insert into 表名 set 列1=値1,値2=値2,値n=列nのように、update文の ように列名をそれに対する値を指定できます。 列名を指定しなければ、その列にはdefaultがあればその値を、なければnullが 格納されます。
13072 2006-06-06 00:56 ["chappuru21 chappuru] null値に関して 13073 2006-06-06 01:14 ┣[Takanori Jokura <jo@] 13074 2006-06-06 01:34 ┃┗["chappuru21 chappuru] 13076 2006-06-06 02:31 ┃ ┗[<milk_coffee_2004jp@] -> 13077 2006-06-06 03:14 ┣[忠犬 KEN <ken_ken_19] 13078 2006-06-06 03:24 ┣[忠犬 KEN <ken_ken_19] 13079 2006-06-06 05:29 ┗[Mitsutoshi Nakamura ] 13083 2006-06-06 21:46 ┗["chappuru21 chappuru]