SQLのCREATE文とは?意味をわかりやすく簡単に解説

text: XEXEQ編集部


CREATE文とは

CREATE文はデータベースにおいて新しいテーブルやデータベースを作成するためのSQL命令です。データベースを設計する際に欠かせない重要な命令の一つであり、テーブルの構造や制約条件を定義します。

CREATE文を使用することで、テーブル名やカラム名、データ型、主キー、外部キー、ユニーク制約などを指定できます。適切なCREATE文を記述することで、データの整合性や整理された状態を維持することができるでしょう。

また、CREATE文はデータベースそのものを作成する際にも使用されます。CREATE DATABASE文を使うことで、新しいデータベースを作成できます。データベースを作成する際は文字コードや照合順序なども指定する必要があります。

CREATE文を使う際はテーブル設計を十分に検討し、適切なカラム構成やデータ型を選択することが大切です。また、制約条件を適切に設定することで、データの整合性を保つことができます。

CREATE文はデータベース管理システム(DBMS)によって若干の書式の違いがあります。使用するDBMSのドキュメントを参照し、適切な構文で記述する必要があります。SQLの基本的な知識とともに、CREATE文の使い方を習得することが重要です。

CREATE文によるテーブル作成

CREATE文によるテーブル作成に関して、以下3つを簡単に解説していきます。

  • CREATE文の基本的な構文
  • カラムのデータ型と制約条件の指定
  • 主キーと外部キーの設定方法

CREATE文の基本的な構文

CREATE文の基本的な構文はCREATE TABLEキーワードに続けてテーブル名を指定し、カッコ内にカラム名とデータ型を定義します。各カラムはカンマで区切り、最後のカラムの後ろにはカンマを付けません。

以下はCREATE文の基本的な構文の例です。この例では「users」というテーブルを作成し、「id」、「name」、「email」の3つのカラムを定義しています。

CREATE TABLE users (
  id INT PRIMARY KEY,
  name VARCHAR(50),
  email VARCHAR(100)
);

カラムのデータ型と制約条件の指定

カラムのデータ型はそのカラムに格納されるデータの種類を指定するものです。主なデータ型にはINT(整数)、VARCHAR(可変長文字列)、DATE(日付)などがあります。データ型は格納するデータの性質に応じて適切に選択する必要があります。

また、カラムには制約条件を指定することができます。主な制約条件にはPRIMARY KEY(主キー)、FOREIGN KEY(外部キー)、NOT NULL(NULL値を許可しない)、UNIQUE(一意性制約)などがあります。制約条件を適切に設定することで、データの整合性を維持できます。

以下はカラムのデータ型と制約条件を指定したCREATE文の例です。この例では「id」カラムを主キーに設定し、「name」カラムにNOT NULL制約を付与しています。

CREATE TABLE users (
  id INT PRIMARY KEY,
  name VARCHAR(50) NOT NULL,
  email VARCHAR(100)
);

主キーと外部キーの設定方法

主キー(PRIMARY KEY)はテーブル内の各レコードを一意に識別するためのカラムです。主キーには一意性と非NULL性が求められます。主キーを設定することで、データの重複を防ぎ、他のテーブルとの関連付けを行うことができます。

外部キー(FOREIGN KEY)はあるテーブルのカラムが、他のテーブルの主キーを参照することを示す制約条件です。外部キーを設定することで、テーブル間の関連性を維持し、データの整合性を保つことができます。

以下は主キーと外部キーを設定したCREATE文の例です。この例では「orders」テーブルの「user_id」カラムが、「users」テーブルの「id」カラムを参照する外部キーとして設定されています。

CREATE TABLE orders (
  id INT PRIMARY KEY,
  user_id INT,
  order_date DATE,
  FOREIGN KEY (user_id) REFERENCES users(id)
);

CREATE文を使ったデータベースの作成

CREATE文を使ったデータベースの作成に関して、以下3つを簡単に解説していきます。

  • CREATE DATABASE文の基本的な構文
  • 文字コードと照合順序の指定方法
  • データベース作成時の注意点

CREATE DATABASE文の基本的な構文

CREATE DATABASE文は新しいデータベースを作成するためのSQL命令です。基本的な構文はCREATE DATABASEキーワードに続けてデータベース名を指定するだけです。データベース名はDBMSの規則に従って指定する必要があります。

以下はCREATE DATABASE文の基本的な構文の例です。この例では「mydb」という名前のデータベースを作成しています。

CREATE DATABASE mydb;

文字コードと照合順序の指定方法

データベースを作成する際には文字コードと照合順序を指定することができます。文字コードはデータベースで使用する文字のエンコーディング方式を指定するものです。一般的にはUTF-8などのUnicodeエンコーディングが使用されます。

照合順序は文字列の比較やソートの際に使用される規則です。照合順序を指定することで、大文字と小文字の区別や、アクセント記号の扱いなどを制御できます。

以下は文字コードと照合順序を指定したCREATE DATABASE文の例です。この例では「mydb」というデータベースを作成し、文字コードにUTF-8、照合順序にutf8_general_ciを指定しています。

CREATE DATABASE mydb
  CHARACTER SET utf8
  COLLATE utf8_general_ci;

データベース作成時の注意点

データベースを作成する際はいくつかの注意点があります。まず、データベース名は一意である必要があります。既に存在するデータベース名と重複していてはいけません。

また、データベースを作成するユーザーには適切な権限が必要です。通常、データベースの作成にはCREATE権限が必要となります。権限のないユーザーがCREATE DATABASE文を実行すると、エラーが発生します。

データベースを作成した後はそのデータベースを使用するために、USE文でデータベースを選択する必要があります。USE文を実行することで、以降のSQL文がそのデータベースに対して実行されるようになります。

CREATE文のオプションと応用

CREATE文のオプションと応用に関して、以下3つを簡単に解説していきます。

  • 一時テーブルの作成方法
  • CREATE TABLE AS SELECTによるテーブルの作成
  • CREATE文を使ったビューの作成

一時テーブルの作成方法

一時テーブルはセッション内でのみ存在するテーブルです。一時テーブルはセッションが終了すると自動的に削除されます。一時テーブルは複雑なクエリの中間結果を保持するために使用されることがあります。

一時テーブルを作成するにはCREATE TABLE文のテーブル名の前にTEMPORARYキーワードを追加します。以下は一時テーブルを作成する例です。

CREATE TEMPORARY TABLE temp_users (
  id INT PRIMARY KEY,
  name VARCHAR(50)
);

CREATE TABLE AS SELECTによるテーブルの作成

CREATE TABLE AS SELECT(CTAS)はSELECT文の結果を基にして新しいテーブルを作成する方法です。SELECT文で取得したデータを、新しいテーブルに格納することができます。

CTASを使用するにはCREATE TABLE文の後にテーブル名を指定し、AS SELECTキーワードに続けてSELECT文を記述します。以下はCTASの例です。

CREATE TABLE new_users AS
SELECT * FROM users WHERE age >= 18;

CREATE文を使ったビューの作成

ビュー(VIEW)は一つ以上のテーブルから選択された行と列を含む仮想的なテーブルです。ビューは複雑なクエリを簡略化したり、セキュリティ上の理由からテーブルの一部を隠蔽したりするために使用されます。

ビューを作成するにはCREATE VIEW文を使用します。CREATE VIEW文の後にビュー名を指定し、ASキーワードに続けてSELECT文を記述します。以下はビューを作成する例です。

CREATE VIEW adult_users AS
SELECT id, name, email FROM users WHERE age >= 18;

※上記コンテンツはAIで確認しておりますが、間違い等ある場合はコメントよりご連絡いただけますと幸いです。

「プログラミング」に関するコラム一覧「プログラミング」に関するニュース一覧
ブログに戻る

コメントを残す

コメントは公開前に承認される必要があることにご注意ください。