データベース中級者必見!その5〜デフォルト値の設定、テーブルの削除〜
2015/10/26
はじめに
前回はテーブルを設計する際の制約について紹介しました。
データベース中級者必見!その4〜制約をつけてテーブルを作成する〜
今回のテーマは3つ、テーブルを作成する際に列にデフォルト値を設置する方法、自動インクリメントを定義する方法、テーブルの削除の方法を紹介します。
列にデフォルト値を設置する
テーブルを定義するときには列にデフォルト値を設定することができます。テーブルにデータが追加するときに、デフォルト値が設定されている列の値に何も入力しなければ、デフォルト値が入力されることになります。
デフォルト値は次にように記述して設定します。
[sql] CREATE TABLE sample(
column1 INTEGER DEFAULT 10,
column2 VARCHAR(30),
column3 TIMESTAMP,
column4 INTEGER
)[/sql]
列を定義した後に半角スペースをあけて「DEFAULT デフォルト値」と記述することでデフォルト値を設定できます。今回はcolumn1列に10というデフォルト値を設定しました。
デフォルト値は関数を使用することもできます。
例)sampleテーブルのcolumn3にデフォルト値を関数で設定するCREATE TABLE文
[sql] CREATE TABLE sample(
column1 INTEGER,
column2 VARCHAR(30),
column3 TIMESTAMP DEFAULT CURRENT_TIMESTAMP(),
column4 INTEGER
)[/sql]
not null制約と合わせてデフォルト値を設定する場合には、
「column1 INTEGER NOT NULL DEFAULT 10」と記述します。
自動インクリメントする列を定義する
インクリメントとは数値を1増やすことです。
MySQLでは、列を定義するときにAUTO_INCREMENTを指定することによって、データの追加時に何も値が入力されていない場合、前に入力した値から1増やした値を自動的に入力することができます。
テーブルに主キーにAUTO_INCREMENTを指定すると大変便利です。
AUTO_INCREMENTを指定する列には、テーブルの主キーかユニークキーである必要があります。また、テーブル内で一つの列にのみAUTO_INCREMENTを指定することができます。
例)column1を自動インクリメント指定する
[sql] CREATE TABLE sample(
column1 INTEGER AUTO_INCREMENT,
column3 TIMESTAMP DEFAULT CURRENT_TIMESTAMP(),
PRIMARY KEY(column1)
)[/sql]
上の例によって作成されたテーブルに次のINSERT文を10回実行してみます。
[sql] INSERT INTO sample VALUES ()[/sql]
sampleテーブルに定義されている列にはすべてデフォルト値が設定されているので、INSERT文のVALUES句に値を入力する必要がありません。column1は自動インクリメントが指定されているので、1から順に1ずつ増加した値が入力されることになります。
column2はCURRENT_TIMESTAMP()関数をデフォルト値に設定しているので、追加時の日付と時刻が入力されます。
INSRET文を実行した後にsampleテーブルの中身を見てみると次のようになっています。
自動インクリメントされた値と、データ追加時の日付と時刻が、しっかりと入力されています。
MySQLではAUTO_INCREMENTは頻繁に使いますので、覚えておきましょう。
テーブルの削除
テーブルを削除するには、DROP TABLE文を使います。
DROP TABLE文の記述は簡単です。DROP TABLEの後には削除したいテーブル名を記述するだけです。
例)sampleテーブルを削除する
[sql]DROP TABLE sample[/sql]
とても簡単なSQLですが、DROP TABLE文で削除したテーブルは復元することはできないので注意して下さい。
さいごに
今回は、3つのテーマに分けてご紹介いたしました。
次回は、テーブルの定義を変更する方法について紹介していきます。