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

MySQLのSERIALにはNOT NULLがすでに含まれている?SERIALの正しい使い方と注意点

MySQLにおいて、SERIALは「BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE」のエイリアス(別名)として定義されています。つまり、SERIALを指定した時点で、自動的にNOT NULL制約が含まれるため、SERIALの後にNOT NULLを重ねて指定する必要はありません

SERIALの定義内容

SERIALを1つのカラムに指定すると、以下の属性がすべて適用されます。

  • BIGINT UNSIGNED:符号なし8バイト整数(0〜18,446,744,073,709,551,615)
  • NOT NULL:NULL値を許可しない
  • AUTO_INCREMENT:値を自動的に採番
  • UNIQUE:重複する値を許可しない

実際にテーブルを作成してみる

それでは、例を見ながら確認していきましょう。ここでは、「Id」というSERIAL型のカラムを持つテーブルを作成します。

mysql> create table DemoTable
(
    Id serial
);
Query OK, 0 rows affected (0.42 sec)

レコードを挿入する

次に、INSERT文を使ってレコードを追加します。ポイントは、値を明示的に指定していない点です。AUTO_INCREMENTの働きにより、Idカラムには自動的に連番が採番されます。

mysql> insert into DemoTable values();
Query OK, 1 row affected (0.24 sec)
mysql> insert into DemoTable values();
Query OK, 1 row affected (0.09 sec)
mysql> insert into DemoTable values();
Query OK, 1 row affected (0.06 sec)
mysql> insert into DemoTable values();
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable values();
Query OK, 1 row affected (0.09 sec)
mysql> insert into DemoTable values();
Query OK, 1 row affected (0.07 sec)

登録されたデータを確認する

SELECT文ですべてのレコードを表示してみましょう。

mysql> select *from DemoTable;

実行すると、以下のような出力が得られます。

+----+
| Id |
+----+
|  1 |
|  2 |
|  3 |
|  4 |
|  5 |
|  6 |
+----+
6 rows in set (0.00 sec)

まとめ

SERIALを使用すれば、BIGINT UNSIGNED・NOT NULL・AUTO_INCREMENT・UNIQUEのすべてが一度に適用されるため、主キー向けの連番カラムを簡潔に定義できます。ただし、NOT NULLがすでに含まれているため、Id serial NOT NULLのように重複して指定するのは避けましょう。なお、SERIALを主キーとして使いたい場合は、PRIMARY KEY(Id)を別途指定する必要がある点にも注意してください。

  1. MySQLのNOT NULL制約とは?空にできない列の定義方法とエラーの挙動を解説

    MySQLでは、列にNULL(空の値)を許可したくない場合、テーブル定義時にNOT NULL制約を指定します。NOT NULLが設定された列にNULLを挿入しようとすると、MySQLはエラーを返し、データの登録を拒否します。NOT NULL制約を持つテーブルの作成まず、Id列とLastName列をNOT NULLとして指定したテーブルを作成してみましょう。mysql> create table DemoTable1895 ( Id int NOT NULL, FirstName varchar(20), LastName varchar(20) NOT N

  2. MySQLの既存のカラムにNOT NULL制約を設定する方法

    MySQLですでに存在するカラムにNOT NULL制約を追加するには、ALTER TABLE文を使用します。この記事では、実際のSQL例を使いながら、NOT NULL制約の設定方法とその動作確認の手順をわかりやすく解説します。 1. テーブルの作成 まず、検証用のサンプルテーブルを作成します。 mysql> create table DemoTable1949 ( UserId int, UserName varchar(20) ); Query OK, 0 rows affected (0.00 sec) この時点では、UserNameカラムにはNUL