【SQLの基礎知識⑨】 データベース・表の作成と削除

SQLの基礎知識
SQLの基礎知識
この記事は約8分で読めます。
Recommended Articles

データベースの作成と削除

どのようなRDBMS製品でも、データを扱うためには、データベースをつくらなくてはなりません。データベースを作成するには CREATE DATABASE コマンドを使います。

書式
CREATE DATABASE <データベース名> ;

また、RDBMS製品のGUIから作成する方法もあります。GUIからデータベースを作成する方法は、製品ごとに異なります。マニュアルなどで作成方法を確認してください。

データベースを削除するには、DROP DATABASE コマンドを使います。

書式
DROP DATABASE <データベース名> ;
作成と同じように、RDBMS製品のGUIから削除する方法もあります。GUIから削除する操作は製品ごとに異なるのので、マニュアルなどで確認してください。
データべースの作成や削除は、ほとんどの場合データベース管理者が行うことになっているはずです。

表を作成する

RDBの基本となるのは表です。表の作成は CREATE TABLE文を用います。表の作成には、表名や列名、データ型などを定義する必要があります。それらの情報をもとに、次のような書式で記述すると表を作成することができます。

書式
CREATE TABLE <表名> (
<列名1> <データ型>,
<列名2> <データ型>,
<列名3> <データ型>,
...
);
表名はCREATE TABLEの後ろに指定します。表名はRDBMS製品ごとに文字数の制限や、日本語が使えるかどうかなど決められているので、マニュアルを参照してください。次に表の列の指定が必要になります。列にはデータ型、NULLを許可するかどうか、一意の値かどうか、主キーかどうかといったあ指定をすることができます。ORACLEとMS-SQLの主なデータ型はこちらで紹介しているものが使えますが、RDBMS製品ごとに異なるので、これも確認するようにしてください。ORACLEで表を作成する場合には次のように入力します。
SQL文  ORACLE
CREATE TABLE 学生名簿 (学生番号 INT,名前 VARCHAR2(16),入学年度 VARCHAR2(4));
上記のSQL文では3つの列を持った表が作成されます。この表ではINT型(数値型)の「学生番号」列と、VARCHAR2型(可変長文字列型)の「名前」列と「入学年度」列の2列が作成されます。VARCHAR2型の文字列の長さは後ろの括弧の数字で指定することになります。VARCHAR2型はORACLEのデータ型なので、MS-SQLなどでは、NVARCHAR型やVARCHAR型を使います。

値が必須の列を作る

表を作成するときに、値を必須とする列を作成することができます。例えばキーになる列や業務上必ず必要になるデータを格納する列などです。値が必須の列とするには、列の定義に「NOT NULL」を指定します。

書式
CREATE TABLE <表名> (
<列名1> <データ型> [NOT NULL],
<列名2> <データ型> [NOT NULL],
<列名3> <データ型> [NOT NULL],
...
);
NOT NULLを指定すると、データの挿入、データの更新時に必ず値を入れなくてはなりません。NULLを入れようとするとエラーになります。実のようにNOT NULLを指定すると、「学生番号」列と「名前」列は値が必須となります。
SQL文  ORACLE
CREATE TABLE 学生名簿
(学生番号 INT NOT NULL, 名前 VARCHAR2(16) NOT NULL, 入学年度 VARCHAR2(4));

一意の列を作る

表を作成するときに、列内の値に重複がないように指定することもできます。この指定にはUNIQUEキーワードを指定します。UNIQUEを指定すると、データの挿入、データの更新などで、その列に重複するデータを入れようとするとエラーとなります。UNIQUEを指定する書式は次のようにになります。

書式
CREATE TABLE <表名> (
<列名1> <データ型> [NOT NULL] [UNIQUE],
<列名2> <データ型> [NOT NULL] [UNIQUE],
<列名3> <データ型> [NOT NULL] [UNIQUE],
...
);

UNIQUEの指定は列ごとに行います。次のように記述すると、「学生番号」列には重複したデータを入れられなくなります。

SQL文 ORACLE
CREATE TABLE 学生名簿
(学生番号 INT NOT NULL UNIQUE, 名前 VARCHAR2(16) NOT NULL, 入学年度 VARCHAR2(4));

デフォルト値を設定する

表を作成するときに、列のデフォルト値(初期値)を設定することもできます。デフォルト値を設定すると、行の挿入のときに値が指定されていない場合には、デフォルト値に設定された値をその列に格納します。デフォルト値の設定には、DEFAULTキーワードを用います。
書式
CREATE TABLE <表名> (
<列名1> <データ型> [NOT NULL] [UNIQUE] [DEFAULT <値>],
<列名2> <データ型> [NOT NULL] [UNIQUE] [DEFAULT <値>],
<列名3> <データ型> [NOT NULL] [UNIQUE] [DEFAULT <値>],
...
);

「学生番号」列にデフォルト値として「0」を指定するときには、次のように記述します。

SQL文 ORACLE
CREATE TABLE 学生名簿 (
学生番号 INT DEFAULT 0, 名前 VARCHAR2(16) NOT NULL, 入学年度 VARCHAR2(4));

主キーを設定する

表には、その表の行を一意にするための列であるキーが存在する場合があります。キーの中でも主キーは、行を特定するための列になり、表を作成するときに設定することができます。この設定のことを「主キー制約」とも呼びます。主キーの設定には、CONSTRAINT(制約)キーワードを使います。このCONSTRAINTキーワードの記述には、1つの列を指定するときと、複数の列を指定するときで、2種類の方法がありますから、それぞれ紹介しておきます。

1つの列に主キー制約を指定する場合には次のような記述になります。

書式
CREATE TABLE <表名> (
<列名1> <データ型> [NOT NULL] [UNIQUE] CONSTRAINT <識別名> PRIMARY KEY,
<列名2> <データ型> [NOT NULL] [UNIQUE] ,
<列名3> <データ型> [NOT NULL] [UNIQUE] ,
...
);

この書式では、<列名1>が主キーとして設定されています。そして、任意の<識別名>を指定することでキーを識別できるようにしています。この識別名は、後でキーを削除するときにも使いますので、覚えておきやすいものを指定しましょう。主キーとして指定するにはNOT NULL制約も必要となります。

SQL文 ORACLE
CREATE TABLE 学生名簿
(学生番号 INT NOT NULL CONSTRAINT pkey PRIMARY KEY,
名前 VARCHAR2(16) NOT NULL, 入学年度 VARCHAR2(4));
ここでは、識別名を「pkey」としています。この制約pkeyにより「学生番号」列が主キーとして指定されます。
複数の列を合わせて主キーを構成するときの記述は次のようになります。
書式
CREATE TABLE <表名> (
<列名1> <データ型> [NOT NULL] [UNIQUE] ,
<列名2> <データ型> [NOT NULL] [UNIQUE] ,
<列名3> <データ型> [NOT NULL] [UNIQUE] ,
...
CONSTRAINT <識別子> PRIMARY KEY (<列名1>,<列名2>,...)
);

この書式のように、列ごとにCONSTRAINTキーワードの記述を行うのPではなく、最後にまとめて記述します。PRIMARY KEYキーワードの後ろで指定した複数の列で主キーを設定するのです。このように指定して、複数の列で構成されるキーを連結キーと呼びます。

実際の記述では、次のようになります。

SQL文 ORACLE
CREATE TABLE 学生名簿
(学生番号 INT NOT NULL, 名前 VARCHAR2(16) NOT NULL, 入学年度 VARCHAR2(4)
CONSTRAINT pkey PRIMARY KEY (学生番号,名前));
この記述では、制約pkeyにより、「学生番号」列と「名前」列をつなぎ合わせた連結キーが主キーとなります。

表の削除

表を削除する場合には、DROP TABLE文を使います。DROP TABLE文では、表の中にデータが入っていても、表ごとすべて削除されてしまいます。しかも、前の状態に戻るロールバック機能も有効ではないので、操作には十分注意してください。

DROP TABLE文の書式は、次のように、DROP TABALEの後ろに削除する表名を入れるだけです。

書式
DROP TABLE <表名>;

関連リンク

次の章へ進む
【SQLの基礎知識⑩】 データ問合せの基本
この章では、SQLの基本中の基本と言っていいSELECT文について解説しています。また、重複した値をまとめるDISTINCTについても説明しています。いちれべ.comは、オラクル、MS-SQL、MS-Access で使用可能か一目でわかるサイトです。
目次
【SQLの基礎知識】基本ルールや基礎の基礎をマスターしよう
こちらの記事を読み進めることで、SQLの基礎が充分に身に付きます。これからSQLを身に着けたい初心者・入門者の方に最適です。データベース製品ごとに表現方法が異なることがありますので、ある程度SQLのスキルがある方も利用できるサイトです。

Recommended Articles