テーブルの作成と削除


新しい表を作る

現在のスキーマに新しい表を作成することができます
何らかのデータをデータベースに保存するには、とにもかくにも表が必要です

データベースで表を作る場合、他の表との整合性を調べなければなりません
データベースの設計は、素人にはできないプロフェッショナルの仕事です
そのため、表を作成するのはデータベース設計者となります

新しい表は CREATE TABLE 文を用います
こうした文も、実装によって差異がありますが、一般には次のように使います

CREATE TABLE 表名 (列定義)

表名には、新しく生成する表の名前を示す識別子を指定します
列定義は、この表の各属性の型を指定するものです
列は複数指定することが可能で、次のように列名と型で構成されます

(列名 データ型[(長さ)] [NULL | NOT NULL] , ... n)

列名は、この属性の名前を表す識別子を指定します
データ型には、この列に保存するエンティティのデータ型をキーワードから指定します
長さは、入力可能文字数など、特定の型においてその限界値を指定するのに利用します
数値型など、長さを指定しない場合は省略可能です

その後、列に NULL を指定することができるかどうかを指定することができます
NULL とは、データが未定義状態であることを表すデータです
これは、空白や 0 とは異なる独立した型で、あらゆるデータに指定することができます
ただし、NOT NULL を指定した場合、その列に NULL を指定することはできません

データ型には、数値や文字列など、格納する情報に応じて正しいものを選択します
SQL99 では、以下のデータ型が定義されています

カテゴリデータ型解説
booleanboolean真偽値
binarybinary large object, BLOB16進数のバイナリ文字列値
bit stringbit固定長のバイナリデータ
bit varying可変長のバイナリデータ
characterchar固定長の文字
character varying, VARCHAR可変長の文字
national character, NCHAR固定長の国際化文字
national character varying, NVARCHAR可変長の国際化文字
character large object, CLOB大容量の文字列
national character large object, NCLOB大容量の国際化文字列
numericinteger, INT整数値
smallint
numeric位取りを持つ値
decimal, DEC
float(p,s)位取りを持つ概数値
p に精度を s に位取りを指定できる
real概数値
double precision
temporaldate日付
time時刻
time with time zoneタイムゾーンのオフセットを含む時刻
timestamp日付と時刻
timestamp with time zoneタイムゾーンのオフセットを含む
日付と時刻
interval時間間隔を表す

これらの具体的なサイズや扱いについては実装に依存します
national が指定される国際化文字列とは、Unicode を用いたテキストを指します
BLOB や VARCHAR などは、データ型の省略形です
巨大な文字列やバイナリデータは BLOB や CLOB を使いましょう

これらのデータ型が必ずしも実装に存在するとは限りません
もちろん、SQL を名乗るのであれば、これらの標準はサポートされるべきですが
現状では、実装依存の型が多く用いられ、正しく対応していないのです
CREATE TABLE Politician(
	Name CHAR(255) NOT NULL,
	Sex CHAR(6),
	Party CHAR(255)
);
+------------+------+------------+
| Name       | Sex  | Party      |
+------------+------+------------+
これが、今回 CREATE TABLE 文を用いて作成した票の列です
左から順番に、名前、性別、所属政党を表し、すべてが文字列型として作られています


表を削除する

作成した表を削除するには DROP TABLE 文を用います
この文は、表及びそれに含まれるデータを削除します

DROP TABLE 表名 RESTRICT | CASCADE

表名に、削除する表の識別子を指定します
RESTRICT を指定した場合は、指定した表だけを削除することを表します
CASCADE を指定すると、この表を参照するオブジェクトもすべて削除します

RESTRICT または CASCADE の指定は必須です
必ず、どちらかを指定しなければなりませんが、多くの実装では無視できます
CASCADE がサポートされている実装はごく一部でしょう
DROP TABLE Politician RESTRICT
この文は、先ほど作成した表を削除します



前のページへ戻る次のページへ