目次
この記事が解決できること
- プライマリーキーの役割がわかる
- ユニークキーやインデックスとの違いがわかる
- プライマリーキーの設定方法がわかる
はじめに
データベース言語のひとつである「SQL(Structured Query Language)」の知識は、独自のデータベースを開発・運用しようとしている企業や個人に欠かせません。
「プライマリーキー」は、SQLを学習している方に必ず覚えてほしい用語のひとつです。
本記事では、プライマリーキーについてサンプルクエリを用いながら解説します。最後まで読んでいただくと、プライマリーキーの理解が深まります。
プライマリーキーとは
プライマリーキー(主キー:PRIMARY KEY)とは、リレーショナルデータベース(RDB)において、行(レコード)を一意に識別するために利用する列(カラム)です。
一例として、以下のようなテーブルで、idがプライマリーキーとして設定されている場合、idを指定するとユーザーが特定できます。
id | GA4 | created_at | |
---|---|---|---|
1 | yamada | yamada@example.com | 2024-06-27 10:00:00 |
2 | taro | taro@example.com | 2024-06-27 11:00:00 |
3 | hanako | hanako@example.com | 2024-06-27 12:00:00 |
リレーショナルデータベースについて知りたい方は、こちらの記事をご覧ください。
プライマリーキーは、重複することなく、NULL値も持たないため、各レコードの識別に適しています。
基本的にプライマリーキーは、1テーブルにつき1つとされています。しかし、複数のフィールドを組み合わせることで、複合プライマリーキーを作成することも可能です。複合プライマリーキーは、各フィールドの組み合わせが一意であれば、個々のフィールドが一意でなくても構いません。
ユニークキーとの違い
ユニークキー(一意キー:UNIQUE KEY)とは、テーブル内で各行が一意の値を持つ列です。特定の列が他のレコードと重複しないことが保証されているため、レコードを識別できます。
プライマリキーとの違いは、ユニークキーがNULL値を許可する点や、テーブル内に複数のユニークキーを設定できる点です。
ユニークキーは、「一意制約(UNIQUE制約)」を課すことで設定されます。一意制約により、データの追加や変更時に重複する値が登録されるとエラーが出力されます。
通常、重複する値が登録されると出力されるエラーである空の値(Null)は、ユニークキーとして許可されます。しかし、「NOT NULL制約」を追加することで、ユニークキーを主キー(プライマリキー)として使用することも可能です。
また、ユニークキーは、テーブル内の複数の列を組み合わせて設定することもできます。複数の列を組み合わせる場合、各行における列の組み合わせが一意であれば、その組み合わせがユニークキーとして機能します。このような複合ユニークキーは、複合一意制約を設定することで実現されます。
インデックスとの違い
インデックス(index)とは、リレーショナルデータベースやファイルシステムにおいて、特定のデータをすばやく検索・抽出するために作成される索引データのことです。データ本体にアクセスする手順を短縮し、検索速度を大幅に向上させます。
インデックスを利用すると、データに識別符号と所在情報を対応付けて、木構造やハッシュテーブルなどの検索に適したデータ構造に格納することが可能です。
インデックスは、プライマリーキーが設定されると、自動的に作成されます。作成されたインデックスは、プライマリーキーの一意性制約を効率的に維持しつつ、レコードの高速検索を実現します。また、プライマリーキーは各レコードを一意に識別し、重複やNULL値に許可しません。
一方で、インデックスは必ずしも一意である必要はなく、検索のパフォーマンスを向上させる役割を果たします。
プライマリーキーの設定方法
プライマリーキーは、指定された文法に従ってクエリを実行すると設定できます。
ここからは、プライマリーキーの設定方法を3つの場面にわけて紹介します。
プライマリーキーの設定方法
- テーブルの作成と同時に設定する場合
- 既存のテーブルに設定する場合
- 複数の列に設定する場合
今回紹介するもの以外の構文についても知りたい方は、こちらの記事をご覧ください。
テーブルの作成と同時に設定する場合
プライマリーキーは、テーブルを作成する際に設定できます。
テーブルの作成と同時に作成する場合のサンプルクエリは、以下のとおりです。
CREATE TABLE users (
id INT NOT NULL,
username VARCHAR(50),
email VARCHAR(100),
created_at TIMESTAMP,
PRIMARY KEY (id)
);
上記のサンプルクエリを実行すると、idをプライマリーキーとしたusersというテーブルが作成されます。
テーブル作成後に以下のようなクエリを実行すると、テーブルにデータが挿入されます。
INSERT INTO users (id, username, email, created_at) VALUES
(1, 'yamada', 'yamada@example.com', '2024-06-27 10:00:00'),
(2, 'taro', 'taro@example.com', '2024-06-27 11:00:00'),
(3, 'hanako', 'hanako@example.com', '2024-06-27 12:00:00');
id | GA4 | created_at | |
---|---|---|---|
1 | yamada | yamada@example.com | 2024-06-27 10:00:00 |
2 | taro | taro@example.com | 2024-06-27 11:00:00 |
3 | hanako | hanako@example.com | 2024-06-27 12:00:00 |
既存のテーブルに設定する場合
プライマリーキーは、テーブルを作成した後にも設定できます。
一例として、プライマリーキーを設定していないusersに以下のクエリを実行すると、idをプライマリーキーとして設定できます。
ALTER TABLE users
ADD PRIMARY KEY (id);
複数の列に設定する場合
プライマリーキーは、複数の列に設定できます。
一例として、プライマリーキーを設定していないusersに以下のクエリを実行すると、idとusernameをプライマリーキーとして設定できます。
ALTER TABLE users
ADD PRIMARY KEY (id,username);
なお、重複した値やNULLが存在していると、エラーが出力されるので注意しましょう。
プライマリーキーの設定を解除する方法
プライマリーキーは、設定だけでなく解除も可能です。
一例として、以下のクエリを実行すると、usersに設定されているプライマリーキーを解除できます。
ALTER TABLE users
DROP PRIMARY KEY;
データの利活用についてアナリティクスエンジニアへ相談すべき理由
アナリティクスエンジニアは、データの収集、処理、分析を効率的に行うためのシステムを設計・構築する専門家です。データエンジニアリングとデータアナリティクスの両方のスキルを持ち、データのインフラを整備し、データ分析の基盤を提供します。また、ビジネスインサイトを引き出すために、ETLプロセスの管理やデータパイプラインの構築などを担当します。
アナリティクスエンジニアについて知りたい方は、こちらのコラムをご覧ください。
SQLをはじめとしたデータの利活用でお悩みの方には、アナリティクスエンジニアへの相談がおすすめです。ここからは、その理由を3つ紹介します。
データの利活用についてアナリティクスエンジニアへ相談すべき理由
- データを効率的かつ効果的に利活用できる環境を整えられる
- データの利活用における最新情報を取得できる
- 主要業務に専念できる
1.データを効率的かつ効果的に利活用できる環境を整えられる
アナリティクスエンジニアは、データの収集、処理、分析を専門とし、企業のデータ戦略をサポートしています。ヒアリングを通じて各クライアントに合わせた支援を提供しているため、高度な専門知識を持たない企業でも、アナリティクスエンジニアがいれば自社のデータを有効活用するための環境を整えることができます。
2.データの利活用における最新情報を取得できる
アナリティクスエンジニアは、データ分析の最新技術やトレンドに精通しており、最適なツールや手法を提供します。また、最新のデータセキュリティ対策も把握しているため、安心してデータを活用できます。アナリティクスエンジニアへ相談することで、最先端のデータ活用戦略が実現可能です。
3.主要業務に専念できる
アナリティクスエンジニアは、データの分析・管理・活用を専門としているため、データに関する複雑な作業を任せられます。そのため、企業の他の部門やチームは自分たちの主要業務に集中し、生産性を向上させられます。
SQLでお悩みの方はDX-Acceleratorへご相談ください
今回は、プライマリーキーとは何かについて解説しました。
近年、効率的にデータを利活用するために独自のデータベースを開発・運用している企業が増えています。SQLについて正しく理解すると、ビジネスの意思決定に必要なデータを効率的に操作・取得できるため、データドリブンにおける競争力が高まるでしょう。
SQLへの理解をさらに深めたい方は、こちらの記事をご覧ください。
SQLの実践的なスキルを身につけ、データを有効に利活用しましょう。
SQLに特化した人材が不足しているという方には、データ人材常駐支援サービス「DX-Accelerator」がおすすめです。
DX-Acceleratorでは、10年以上データ利活用を支援した経験から得た知識やノウハウを利用して、お客様のDXを推進させています。また、DX-Acceleratorでは、SQLでのデータマート作成やTableauでのダッシュボード構築なども承っているため、SQLについてお悩みに対し、的確に支援できます。
DX-Acceleratorについて詳しく知りたい方は、こちらの記事をご覧ください。
DX-Acceleratorで効率的かつ効果的にデータを利活用できるようになりましょう。