MySQLで初期値と自動インクリメントを設定する方法は?


288

MySQLテーブルの1001から始まる「id」列の初期値を設定するにはどうすればよいですか?

挿入したい "INSERT INTO users (name, email) VALUES ('{$name}', '{$email}')";

id列の初期値を指定しない。

回答:


517

これを使って:

ALTER TABLE users AUTO_INCREMENT=1001;

または、まだid列を追加していない場合は、それも追加します

ALTER TABLE users ADD id INT UNSIGNED NOT NULL AUTO_INCREMENT,
    ADD INDEX (id);

2
これは7年前のことだと思いますが、...この回答の部分の説明はありますか?ADD INDEXここで何をしますか?id列と同じステートメントで追加する必要がありますか、それともブロックにid列を定義してCREATE TABLEからADD INDEX(id)
Michael Hoffmann

2
ええと、時間が経ちます...もちろん、それが可能であれば、CREATE TABLEで定義してください。回答の2番目の「ALTER TABLE」の部分は、すでにテーブルを作成しており、おそらく適切なインデックスなしですでにどこかにデプロイされていることを意味します。これは、最初の「ALTER TABLE」が意図したとおりに機能するために必要です。この説明がお役に立てば幸いです。
Anatoliy 2016年

はい、それは役立ちます。私はこれらのステートメントを同じように使用するいくつかのサンプルを見ていましたが、それらは今ではもっと理にかなっています。ありがとうございました。
Michael Hoffmann

1
ADD INDEXを使用しないのは、これがないと、既存のテーブルに主キーがすでにある場合はが得られるためthere can be only one auto column and it must be defined as a keyです。MULキーになるようにインデックスが必要です。
djsumdog 2016年

行を追加せずに作成したばかりのテーブルでこれを試しました。最初に少なくとも1行がテーブルに追加されていない限り、これは機能しないようです。
ソロモンクロッソン

54

MySQL-1001から始まる自動インクリメントの主キーを設定します。

ステップ1、テーブルを作成します。

create table penguins(
  my_id       int(16) auto_increment, 
  skipper     varchar(4000),
  PRIMARY KEY (my_id)
)

ステップ2、自動インクリメントの主キーの開始番号を設定します。

ALTER TABLE penguins AUTO_INCREMENT=1001;

ステップ3、いくつかの行を挿入します。

insert into penguins (skipper) values("We need more power!");
insert into penguins (skipper) values("Time to fire up");
insert into penguins (skipper) values("kowalski's nuclear reactor.");

ステップ4、出力を解釈します。

select * from penguins

プリント:

'1001', 'We need more power!'
'1002', 'Time to fire up'
'1003', 'kowalski\'s nuclear reactor'

1
特別なペンギンのIDを1000未満に設定したい場合はどうすればよいですか?
ウィリアムHu

1
任意の空きIDを挿入できます。列リストに追加するだけですinsert into penguins (my_id, skipper) values(999, "explicit id");(自動インクリメントの0代わりに使用すると999、値が挿入されます)
hellcode

32

MySQLワークベンチ

sqlの作成を避けたい場合は、MySQL Workbenchでテーブルを右クリックして、メニューの[Alter Table ...]を選択することもできます。

テーブル構造ビューが開いたら、[ビュー]の下部にある[オプション]タブに移動し、[自動インクリメント]フィールドに次の自動インクリメント番号の値を設定します。

すべての変更が完了したら、「適用」をクリックすることを忘れないでください。

PhpMyAdmin:

phpMyAdminを使用している場合は、左側のナビゲーションでテーブルをクリックして、[操作]タブに移動し、[テーブルオプション]でAUTO_INCREMENT値を変更して[OK]をクリックします。


1
phpMyAdminについて話していますか?
Pacerier 2015

1
いいえ、彼はMySQL Workbenchについて話していると思います。
土星

@Saturnian、そうですね、私はワークベンチを意味しました。それを明確にするために投稿を編集します。
Bojan Hrnkas

phpMyAdminは自動インクリメントの問題を1つのステップで解決しました。コードルートに進んでみましたが、機能しませんでした。
テカガミ

11

最初に、自動インクリメントの列を追加する必要があります

alter table users add column id int(5) NOT NULL AUTO_INCREMENT FIRST

最初に列を追加するためのこのクエリ。次に、自動インクリメントの初期値をリセットする必要があります。したがって、このクエリを使用します

alter table users AUTO_INCREMENT=1001

今、あなたのテーブルは1001で始まりました


6

create tableステートメントで設定することもできます。

`CREATE TABLE(...) AUTO_INCREMENT=1000`

5

また、PHPMyAdminでは、左側(テーブルのリスト)からテーブルを選択し、そこに移動してこれを行うことができます。
[操作]タブ-> [テーブルオプション]-> [AUTO_INCREMENT]。

次に、値を設定し、[Table Options Bo x] で[Go]を押します。


4

このためには、AUTO_INCREMENT値を設定する必要があります

ALTER TABLE tablename AUTO_INCREMENT = <INITIAL_VALUE>

ALTER TABLE tablename AUTO_INCREMENT = 101

3

または、SQLクエリを作成するのが面倒な場合。次に、このソリューションはあなたのためです。 ここに画像の説明を入力してください

  1. phpMyAdminを開きます
  2. 希望のテーブルを選択
  3. [ 操作 ]タブをクリックします
  4. AUTO_INCREMENTに必要な初期値を設定します
  5. 完了しました。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.