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

SQL Serverの一意制約(UNIQUE制約)とは?作成・追加・削除の方法を解説

このチュートリアルでは、SQL Serverにおける一意制約(UNIQUE制約)の作成・追加・削除の方法を、サンプルコードとともにわかりやすく解説します。

SQL Serverの一意制約(UNIQUE制約)とは?

一意制約(UNIQUE制約)とは、1つの列、または複数の列の組み合わせによってレコードを一意に識別するための制約です。値の組み合わせ全体が一意であれば、一部の列にNULL値が含まれていても問題ありません。

一意制約と主キー(PRIMARY KEY)の違い

一意制約は主キーとよく似ていますが、NULL値の扱いや設定できる数に違いがあります。

項目主キー(PRIMARY KEY)一意制約(UNIQUE)
NULL値主キーを構成する列にはNULL値を含めることができません。値の組み合わせが一意であれば、一部の列にNULL値を含めることができます。
設定できる数1つのテーブルに1つだけ設定できます。1つのテーブルに複数設定できます。

なお、SQL Serverでは一意制約を作成すると、その背後に一意インデックスが自動的に作成されます。

CREATE TABLE文で一意制約を作成する

テーブルを新規作成するときに同時に一意制約を定義する場合は、CREATE TABLE文の中でCONSTRAINT句を使用します。

CREATE TABLE table_name
(
  column1 datatype [ NULL | NOT NULL ],
  column2 datatype [ NULL | NOT NULL ],
  …
  CONSTRAINT constraint_name UNIQUE (column1, column2, … column_n)
);
  • table_name:作成したいテーブルの名前
  • column1, column2…:テーブルに作成する列の名前
  • constraint_name:一意制約の名前
  • column1, column2… column_n:一意制約を構成する列の名前

例:1つの列に一意制約を設定する

CREATE TABLE shain
(
  id_shain INT PRIMARY KEY,
  shain_no INT NOT NULL,
  sei VARCHAR(50) NOT NULL,
  mei VARCHAR(50),
  kyuyo MONEY,
  CONSTRAINT uq_shain_no UNIQUE (shain_no)
);

この例では、社員情報を管理する「shain」テーブルを作成すると同時に、「shain_no」(社員番号)という1つの列からなる一意制約「uq_shain_no」を定義しています。これにより、同じ社員番号を持つレコードが登録されるのを防ぐことができます。

例:複数の列に一意制約を設定する

一意制約は、複数の列の組み合わせに対して設定することもできます。

CREATE TABLE shain
(
  id_shain INT PRIMARY KEY,
  shain_no INT NOT NULL,
  sei VARCHAR(50) NOT NULL,
  mei VARCHAR(50),
  kyuyo MONEY,
  CONSTRAINT uq_sei_mei UNIQUE (sei, mei)
);

この場合、「sei」(姓)と「mei」(名)の組み合わせが重複しないよう制限されます。姓と名がそれぞれ他のレコードと同じでも、組み合わせとして一意であれば登録可能です。

ALTER TABLE文で一意制約を追加する

すでに存在するテーブルに一意制約を後から追加する場合は、ALTER TABLE文を使用します。

ALTER TABLE table_name
ADD CONSTRAINT constraint_name UNIQUE (column1, column2, … column_n);
  • table_name:一意制約を追加したいテーブルの名前
  • constraint_name:作成する一意制約の名前
  • column1, column2… column_n:一意制約を構成する列の名前

ALTER TABLE shain
ADD CONSTRAINT uq_shain_no UNIQUE (shain_no);

この例では、既存の「shain」テーブルに対して、「shain_no」列に一意制約「uq_shain_no」を追加しています。複数の列に一意制約を設定する場合は、以下のように記述します。

ALTER TABLE shain
ADD CONSTRAINT uq_sei_mei UNIQUE (sei, mei);

一意制約を削除する

不要になった一意制約を削除する場合も、ALTER TABLE文を使用します。

構文

ALTER TABLE table_name
DROP CONSTRAINT constraint_name;
  • table_name:一意制約を削除したいテーブルの名前
  • constraint_name:削除したい一意制約の名前

ALTER TABLE shain
DROP CONSTRAINT uq_shain_no;

この例では、「shain」テーブルから一意制約「uq_shain_no」を削除しています。

まとめ

一意制約(UNIQUE制約)を使うことで、特定の列または列の組み合わせに重複したデータが登録されるのを防ぐことができます。主キーとは異なりNULL値を許容し、1つのテーブルに複数設定できる点が特徴です。テーブル作成時にはCREATE TABLE文を、既存テーブルへの追加や削除にはALTER TABLE文を使用します。

  1. 【SQL Server入門】ストアドプロシージャの作成と削除方法を徹底解説

    プロシージャ(Procedure)とは、データベース内に保存しておき、後から再利用できる複数のステートメントで構成されたプログラムのことです。SQL Serverでは、プロシージャにパラメータを渡すことが可能です。関数のように特定の値を返すわけではありませんが、実行の成功・失敗を示す役割を持ちます。 本記事では、SQL Serverにおけるプロシージャの作成方法と削除方法について、基本構文と具体例を交えながらわかりやすく解説します。 CREATE PROCEDURE(プロシージャの作成) 構文 SQL Serverでプロシージャを作成するには、以下の構文を使用します。 CREATE {

  2. MS SQL Serverとは?特徴・主な用途・バージョン履歴・インスタンスの基インスタンスの基礎を徹底解説

    SQL Server(MS SQL Server)とは? SQL Serverは、Microsoftが開発したリレーショナルデータベース管理システム(RDBMS)です。従来のRDBMSの枠組みにとどまらず、オブジェクト指向の概念も取り入れたORDBMS(オブジェクトリレーショナルデータベース管理システム)としての側面も併せ持っています。主な特徴は以下の通りです。 Microsoftが開発したRDBMSベースのデータベースソフトウェアである ORDBMS(オブジェクトリレーショナルデータベース管理システム)としても機能する 特定のプラットフォームに依存しない独立した環境で動作する コマンドライ