- 締切済み
mySQLでのテーブル作成についての質問
テーブル内の列で Field || Type || Null || Key || Default || Extra ID | int(6) | YES | UNI | NULL | auto_increment と言うテーブルを作成するにはどう記述したら良いのでしょうか? auto_incrementを指定した場合はフィールドにNULLを許可する事は出来ないのでしょうか?
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- chukenkenkou
- ベストアンサー率43% (833/1926)
MySQLのバージョンは、何でしょうか? 「create table」及び「create index」の内容を、提示できませんか? 「show create table 表名」で、「create table」の内容を表示できます。 矛盾する定義をしていて、MySQL側に定義とは異なる解釈をされているように感じられます。 auto_incrementを指定した列に、nullを格納すると、自動的に+1する仕様になっています。 auto_incrementは、primary key指定が必須だと思っていましたが、unique指定でもOKのようです。ただし、この場合、not nullが自動的に仮定されます。 >実際に表から検索する場合はPRIの方で検索したいのです。下の図だとnameになります #1さんへの回答では、nameという列は存在していませんが? select ~ from ~ where name like 'abc%' のように、インデクスを利用できる条件指定をすればいいだけです。
- chukenkenkou
- ベストアンサー率43% (833/1926)
#2回答者です。 「こういうようにしたい」という目的は、何なのでしょうか? まったく意味のないことだと思いますが?
- chukenkenkou
- ベストアンサー率43% (833/1926)
auto_incrementを指定する列は、primary keyでなければならない ↓ primary keyの列は、自動的にnot nullとして扱われる
補足
と言う事は物理的に無理って事ですよね?
- calltella
- ベストアンサー率49% (317/635)
CREATE TABLE `hogehoge` ( `id` INT( 6 ) DEFAULT NULL AUTO_INCREMENT , UNIQUE ( `id` ) ); これで行けませんでしょうか?
補足
エラーが出てしまって無理でした。 現在作成したいテーブルはshow columnsで見た場合下記なのですが、NULLに何も表示しないと言う事は出来るのでしょうか? どうやっても出来ないので困ってます。 +-------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+----------------+ | f1 | int(5) | | UNI | NULL | auto_increment | | f2 | varchar(15) | | PRI | | | | f3 | varchar(10) | | MUL | | | | f4 | varchar(10) | | MUL | | | | f5 | varchar(10) | | MUL | | | | f6 | varchar(10) | | MUL | | | | f7 | varchar(10) | | MUL | | | | f8 | char(1) | | | 0 | | | f9 | varchar(40) | | MUL | | | | f0 | text | | | | | +-------+-------------+------+-----+---------+----------------+
補足
このIDのフィールドは自動的に1→2→3となっていって、実際に表から検索する場合はPRIの方で検索したいのです。下の図だとnameになります。