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

SQL CREATE TABLE文の使い方:基本構文と実例で学ぶテーブル作成ガイド

SQLのCREATE TABLE文は、データベースに新しいテーブルを追加するためのステートメントです。この文を使うことで、新しく作成するテーブルのカラム(列)名や、各カラムに格納できるデータ型を指定できます。さらに、テーブル内でのデータの扱いに関する制約(コンストレイント)も定義することが可能です。

データベースに対してクエリを実行したりデータを保存したりする前に、まずはデータを格納するためのテーブルを作成する必要があります。テーブルは、データベース内のすべてのデータが保存される場所であり、各レコード(行)ごとの情報がここに蓄積されていきます。

データベースに新しいテーブルを作成するには、「CREATE TABLE」文を使用します(データベース自体を作成するCREATE DATABASE文とよく似ています)。本記事では、SQLにおけるテーブルの基礎知識を解説し、実際にテーブルを作成する方法を詳しく見ていきます。

SQL CREATE TABLE文とは

SQLのCREATE TABLE文は、あらかじめ定義した構造に基づいて、データベースに新しいテーブルを追加します。テーブル作成時には、各カラムの名前、適用する制約、そして各カラムのデータ型を指定する必要があります。なお、テーブルは作成後でも構造を変更できるため、後から修正することも可能です。

それでは、CREATE TABLE文の基本的な構文を見てみましょう。

CREATE TABLE table_name (
	column_name data_type constraints,
	column_name1 data_type1 constraints1
);

テーブルには、必要な数だけカラムを追加できます。複数のカラムを指定する場合は、カラムを定義する各行の末尾をカンマ(,)で区切ります。上記の構文では、2つのカラムを持つテーブルを定義しています。

最低限、各カラムの名前と、そのカラムに格納できるデータ型を指定しなければなりません。テーブル名も必須です。一方、制約(constraints)は省略可能です。SQLの制約とは、データをテーブルに追加する前に満たしておくべき条件のことで、たとえばNULL値を許可しない「NOT NULL」、重複を防ぐ「UNIQUE」、行を一意に識別する「PRIMARY KEY」などが代表的です。

CREATE TABLE文の実例

ここで、人事部から「従業員の情報を管理するデータベーステーブルを作成してほしい」という依頼を受けたとしましょう。このテーブルには、従業員ごとに以下の情報を保存します。

  • 氏名
  • メールアドレス
  • 支店名
  • 住所
  • 役職名
  • 従業員月間賞の受賞回数

このテーブルを作成するには、次のようなCREATE TABLE文を使用します。

CREATE TABLE employees (
	name varchar(20),
	email varchar(50),
	branch varchar(30),
	address varchar(75),
	title varchar(75),
	employee_month_awards integer
);

これで、6つのカラムを持つテーブルが作成されました。最初の5つのカラムはすべて「varchar」型です。varcharは可変長文字列を表すデータ型で、指定した最大文字数までの範囲で、任意の長さの文字列を格納できます。

つまり、この例では氏名は20文字以内、住所は75文字以内という制限になります。最後のemployee_month_awardsカラムはinteger型(整数型)で、各従業員が受賞した賞の回数を保存します。テーブルには、PRIMARY KEY(主キー)、FOREIGN KEY(外部キー)、varchar、BOOLEANなど、SQLで利用できる任意のデータ型や制約を自由に組み合わせて指定できます。

テーブルを作成したら、クエリの実行やデータの挿入ができるようになります。ただし、作成直後のテーブルは空の状態である点に注意してください。データを追加するには、SQLのINSERT文を使用する必要があります。

既存のテーブルをもとに新しいテーブルを作成する方法

別のテーブルの構造を利用して新しいテーブルを作りたい場合はどうすればよいのでしょうか。SQLでは、CREATE TABLE文を使ってこれを実現できます。新しいテーブルには、元のテーブルと同じカラム定義が引き継がれます。また、別のテーブルから一部またはすべてのカラムをコピーするかどうかを指定することも可能です。

例として、会社の役員全員の情報を格納するテーブルを作成したいとします。役員のレコードは、すでにemployeesテーブルに登録されているものとします。

employeesテーブルから役員に関するデータだけを抜き出した新しいテーブルを作成するには、次のコマンドを使用します。

CREATE TABLE executives AS
SELECT name, email, address
FROM employees
WHERE title = 'Executive';

このコマンドを実行すると、既存のemployeesテーブルをコピーした「executives」という名前のテーブルがデータベースに作成されます。新しいテーブルには、元のテーブルの「name」「email」「address」の3つのカラムが含まれ、かつ役職が役員(Executive)である従業員のデータのみが格納されます。

もし元のemployeesテーブルが空だった場合は、name・email・addressという構造のみがコピーされます。逆にデータが含まれていれば、そのうち役員に該当するレコードだけが新しいテーブルへコピーされる仕組みです。

このようにして作成された新しいテーブルには、役職が「Executive」であるすべての人の氏名・メールアドレス・住所の一覧が格納されています。

まとめ

SQLのCREATE TABLE文は、既存のデータベース内に新しいテーブルを作成するためのステートメントです。この文を使用する際は、新しいテーブルに含める各カラムについて、名前・データ型・制約といった構造をあらかじめ定義しておく必要があります。

さらにSQLのスキルを磨きたい方は、INSERT文によるデータ挿入やALTER TABLE文によるテーブル構造の変更など、関連するステートメントも併せて学習すると理解がより深まります。まずは実際に手を動かして、自分の環境でテーブル作成を試してみてください。

  1. SQLデータベースで「select」という名前のテーブルを作成する方法

    MySQLでは「select」は予約語として登録されているため、そのままの名前でテーブルを作成することはできません。しかし、どうしても「select」という名前のテーブルが必要な場合は、単語をバッククォート(`)で囲むことで作成できます。バッククォートによるエスケープはMySQL特有の記法であり、これにより予約語も識別子(テーブル名やカラム名)として扱えるようになります。テーブルの作成まず、以下のようにテーブルを作成します。mysql> create table `select`-> (-> Number int-> );Query OK, 0 rows affecte

  2. SQL ServerのCREATE TABLE文の使い方を徹底解説

    SQL Server(Transact-SQL)では、CREATE TABLE 文を使用して、新しいテーブルを作成し、その構造を定義します。 CREATE TABLE文の基本構文 CREATE TABLE ten_bang ( cot1 kieu_du_lieu [ NULL | NOT NULL ], cot2 kieu_du_lieu [ NULL | NOT NULL ], … ); 構文内のパラメータの意味 ten_bang 作成したいテーブルの名前を指定します。 cot1、cot2… テーブル内に作成する列(カラム)です。各列には必ず1つのデータ型を指定します。