MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLでSQL ServerのIDENTITY列に相当するのは?AUTO_INCREMENTの使い方を徹底解説

MySQLにおけるIDENTITY列の代替機能

Microsoft SQL ServerのIDENTITY列に相当する機能は、MySQLではAUTO_INCREMENTです。SQL ServerのIDENTITYが自動的に連番を生成するように、MySQLのAUTO_INCREMENTも同様に、レコード挿入時に数値を自動的に増加させてくれます。

AUTO_INCREMENTの基本構文

MySQLでAUTO_INCREMENTを使用する場合、基本的な構文は以下のとおりです。

CREATE TABLE yourTableName
(
    yourColumnName1 dataType NOT NULL AUTO_INCREMENT,
    yourColumnName2 dataType,
    .
    .
    .
    N,
    PRIMARY KEY(yourColumnName1)
);

注意点:主キーの指定が必須

MySQLでは、AUTO_INCREMENTを設定した列には必ず主キー(PRIMARY KEY)を指定する必要があります。主キーを指定せずにテーブルを作成しようとすると、以下のようなエラーが発生します。

mysql> create table EquivalentOfIdentityInMySQL
    -> (
    -> ProductId int NOT NULL AUTO_INCREMENT,
    -> ProductName varchar(30)
    -> );
ERROR 1075 (42000) − Incorrect table definition; there can be only one auto column and it
must be defined as a key

このエラーメッセージは「自動生成できる列は1つだけであり、かつキーとして定義されなければならない」という意味です。エラーを解消するには、ProductIdを主キーとして設定します。以下が正しいテーブル作成の例です。

mysql> create table EquivalentOfIdentityInMySQL
    -> (
    -> ProductId int NOT NULL AUTO_INCREMENT,
    -> ProductName varchar(30)
    -> ,
    -> PRIMARY KEY(ProductId)
    -> );
Query OK, 0 rows affected (0.59 sec)

動作確認:データの挿入

ProductIdに値を指定しない場合、MySQLはデフォルトで1から連番の採番を開始し、以降は1ずつ増加していきます。実際にINSERTコマンドを使って、いくつかのレコードを挿入して確認してみましょう。

mysql> insert into EquivalentOfIdentityInMySQL(ProductName) values('Product-1');
Query OK, 1 row affected (0.14 sec)

mysql> insert into EquivalentOfIdentityInMySQL(ProductName) values('Product-2');
Query OK, 1 row affected (0.14 sec)

mysql> insert into EquivalentOfIdentityInMySQL(ProductName) values('Product-34');
Query OK, 1 row affected (0.10 sec)

結果の確認

SELECT文を使って、テーブル内のすべてのレコードを表示します。

mysql> select *from EquivalentOfIdentityInMySQL;

実行結果は以下のとおりです。

+-----------+-------------+
| ProductId | ProductName |
+-----------+-------------+
|         1 | Product-1   |
|         2 | Product-2   |
|         3 | Product-34  |
+-----------+-------------+
3 rows in set (0.00 sec)

まとめ

出力結果を見ると、INSERT時にProductIdには何も値を渡していないにもかかわらず、1から始まる連番が自動的に割り振られ、次のレコード以降も1ずつ増加していることがわかります。このように、MySQLのAUTO_INCREMENTはSQL ServerのIDENTITY列とほぼ同じ役割を果たす機能です。ただし、MySQLではAUTO_INCREMENT列を必ずキー(通常はPRIMARY KEY)として定義しなければならない点に注意しましょう。

  1. SQL ServerでMySQLの「LIMIT」相当を実現するには?TOP句の使い方を解説

    MySQLでは取得する行数を制限する際にLIMIT句を使用しますが、SQL ServerにはLIMIT句が存在しません。その代わりとなるのがTOP句です。この記事では、SQL ServerでLIMITと同じ処理を行う方法を、実際のサンプルコードと実行結果をもとに解説します。 基本構文:TOP句の使い方 SQL Serverで先頭の1行だけを取得したい場合は、TOP(1)を使用します。基本構文は以下の通りです。 SELECT TOP(1) * FROM yourTableName WHERE yourCondition; それでは、実際にテーブルを作成して動きを確認してみましょう。 サン

  2. macOSにMySQLをインストールする方法を徹底解説

    macOSへのMySQLインストールの概要この記事では、macOS環境にMySQLをインストールする手順について詳しく解説します。macOSでは、ディスクイメージ(.dmg)ファイルとして配布されているパッケージを使用することで、簡単にMySQLを導入できます。インストール前の準備インストール作業を始める前に、まず.dmgファイルをダブルクリックしてマウントし、内容を表示しておきましょう。Finderでアイコンをダブルクリックするだけで、イメージがマウントされます。また、MySQLを新しくインストールする前に、すでに稼働中のMySQLサーバーインスタンスがすべて停止していることを必ず確認してく