[前][次][番号順一覧][スレッド一覧]

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]