10.【MySQL】挿入できる値に制限をつける

MySQLのフィールドに挿入できる値に制限を付ける方法について解説します。数値の値に制限を付けたい場合は CHECK、値の重複を避けたい場合には UNIQUE を使います。

目次

数値の値に制限を付ける CHECK

挿入できる数値の値を一定以上、一定以下、あるいはその両方の条件で制限したい場合は、次のようにカラムを定義する際に CHECK を付けます。

-- titlesという名前のテーブルがあれば削除
DROP TABLE IF EXISTS titles;

 -- titlesという名前のテーブルを作成
CREATE TABLE titles (
  author_id INT CHECK (author_id > 0 AND author_id <=5),
  post_title VARCHAR(50)
);

-- レコードを挿入
INSERT INTO titles (author_id, post_title) VALUES
  (1, 'MySQLとは'),
  (8, 'SQLとはなにか');

SELECT * FROM titles;

ここでは author_id に「0より大きく、5以下」という制限を付けました。

その後、author_id に 8 を挿入しようとしています。

数値の値に制限を付ける CHECK

チェックの制約に反するとしてエラーで弾いてくれます。

重複した値を弾く UNIQUE

次は値の重複を制限してみましょう。カラムを定義する際に UNIQUE を付けます。

-- titlesという名前のテーブルがあれば削除
DROP TABLE IF EXISTS titles;

 -- titlesという名前のテーブルを作成
CREATE TABLE titles (
  author_id INT,
  post_title VARCHAR(50) UNIQUE
);

-- レコードを挿入
INSERT INTO titles (author_id, post_title) VALUES
  (1, 'MySQLとは'),
  (2, 'SQLとはなにか'),
  (3, 'MySQLとは');

SELECT * FROM titles;

post_title カラムのフィールドに挿入される値の重複を制限してみました。

その後、post_title に MySQLとは という重複する値を挿入しようとしています。

重複した値を弾く UNIQUE

ユニークの制約に反するとしてエラーで弾いてくれます。

このエントリーをはてなブックマークに追加

コメントを残す

頂いたコメントは一読した後表示させて頂いております。
反映まで数日かかる場合もございますがご了承下さい。