• 検索結果がありません。

STEP 4. テーブル関連の便利な操作

4.3 列に既定値を設定する: DEFAULT 値

DEFAULT 値(既定値)

DEFAULT 値(既定値)は、その名のとおり、INSERT 時に値を指定しなかった場合、または、省

略された場合に自動的に補われる値のことです。これは、次のように利用します。

CREATE TABLE テーブル名 ( 列名 データ型 DEFAULT 値 , … )

Let's Try

それでは、これを試してみましょう。

1. 次のように、「defTest」という名前のテーブルを作成して、「col2」列へ DEFAULT 値とし て「AAA」を設定します。

CREATE TABLE defTest

( autoNum int IDENTITY (1,1) ,col1 char(10)

,col2 char(10) DEFAULT 'AAA' )

2. 次に、「defTest」テーブルに対して、データを追加します。DEFAULT 値を設定した「col2」

列へは、値を指定せずにデータを追加します。

-- データの INSERT

INSERT INTO defTest (col1) VALUES ('xxx') INSERT INTO defTest (col1) VALUES ('yyy') INSERT INTO defTest (col1) VALUES ('zzz') -- データの確認

SELECT * FROM defTest

80

「col2」列には、自動的に「AAA」が追加されていることを確認できます。

Note: テーブル デザイナーで DEFAULT 値を設定

GUI操作で DEFAULT 値を設定したい場合は、次のように、Management Studio のテーブル デザイナーを操作 します。

DEFAULT 値を設定したい列を選択し、[列のプロパティ]タブで「既定値またはバインド」へ設定したい値を入力

します。

既存のテーブルへ DEFAULT 値を設定する

既存のテーブルに対して DEFAULT 値を設定したい場合は、ALTER TABLE ステートメントを利 用します。それでは、これを試してみましょう。

1. 「defTest」テーブルへ、DEFAULT 値を設定した「col3」列を追加してみます。次のように 記述します。

ALTER TABLE defTest

ADD col3 datetime DEFAULT GETDATE()

DEFAULT 値を 設定したい列を選択 1

「既定値またはバインド」に DEFAULT値を設定 2

「col3」列を datetime 型で追加し、DEFAULT 値へ GETDATE 関数(現在の日時を取得 できる関数)を指定しています。

2. 次に、「defTest」テーブルに対して、データを追加します。DEFAULT 値を設定した「col3」

列には、データを追加しないようにしてみます。

INSERT INTO defTest (col1) VALUES ('www') SELECT * FROM defTest

col3 列へ自動的に、現在の日時が格納されていることを確認できます。このように、DEFAULT

値には関数を指定することもできます。

Note: 後から DEFAULT 値を追加した場合のデータは NULL 値

後から DEFAULT 値を追加した場合は、既存のデータの NULL 値に対しては DEFAULT 値は適用されず NULL 値のままです。既存のデータの NULL 値に対しても DEFAULT 値を適用したい場合には、"DEFAULT GETDATE() WITH VALUES" という形で "WITH VALUES" を利用するようにします。

3. 次に、列の追加時ではなく、既にある「col1」列に対して DEFAULT 値を「BBB」へ設定し てみましょう。次のように入力します。

ALTER TABLE defTest

ADD CONSTRAINT def_col1 DEFAULT 'BBB' FOR col1

「col3」列の追加時にDEFAULT値を設定。

DEFAULT値には、GETDATE関数のように、

関数を指定することができる。

既存のデータはNULL値。既存データ に対してもDEFAULT値を適用したい 場合は、WITH VALUESを使用する。

GETDATE関数によって、データを追 加したときの時刻が格納される。

82

4. 次に、「defTest」テーブルに対して、データを追加します。テーブル内のすべての列が値を 省略できる場合(DEFAULT 値や IDENTITY、NULL の許可が設定されている場合)は、次 のように DEFAULT VALUES を指定して、INSERT ステートメントを記述することができ ます。

INSERT INTO defTest DEFAULT VALUES

5. 最後に、追加したデータを確認しておきましょう。

SELECT * FROM defTest

「col1」列へ「BBB」が追加されたことを確認できます。

Goal !

以上ですべての操作が完了です。最後までこの自習書の内容を試された皆さま、いかがでしたでし ょうか? 今回は「データのコピーと現場で役立つ操作集」ということで、筆者自身がよく利用す る役立つ機能を紹介しました。中でも、Integration Services は大変便利なので、ぜひ活用して み ていた だ ければ と 思 い ます。Integration Services につ いては 、本自 習書シリ ーズの

「Integration Services 入門」および「Integration Services 応用」編でさらに詳しく説明 していますので、チャレンジしてみてください。

Transact-SQL には、まだまだ役立つ機能がありますので、それらについては、本自習書シリーズ の「Transact-SQL 入門」と「開発者のための Transact-SQL 応用」編を参考にしていただけ ればと思います。