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)として定義しなければならない点に注意しましょう。
-
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; それでは、実際にテーブルを作成して動きを確認してみましょう。 サン
-
macOSにMySQLをインストールする方法を徹底解説
macOSへのMySQLインストールの概要この記事では、macOS環境にMySQLをインストールする手順について詳しく解説します。macOSでは、ディスクイメージ(.dmg)ファイルとして配布されているパッケージを使用することで、簡単にMySQLを導入できます。インストール前の準備インストール作業を始める前に、まず.dmgファイルをダブルクリックしてマウントし、内容を表示しておきましょう。Finderでアイコンをダブルクリックするだけで、イメージがマウントされます。また、MySQLを新しくインストールする前に、すでに稼働中のMySQLサーバーインスタンスがすべて停止していることを必ず確認してく