2013年4月1日月曜日

◆データの追加 / 更新 / 削除

テーブルの作成: CREATE TABLE ステートメント
テーブルの作成

SQL では、CREATE TABLE というステートメントを利用して、テーブルを作成することができ
ます。構文は、次のとおりです。

CREATE TABLE テーブル名
( 列名1 データ型[NOT]NULL,
列名2 データ型[NOT]NULL, … )

データ型

テーブルに作成する列は、それぞれ格納するデータの種類(データ型)を指定する必要があります。データ型には、いろいろな種類がありますが、最も基本となるのは、次の 3 種類です。

image

このほかのデータ型については、本自習書シリーズの「Transact-SQL 入門」で詳しく説明して
います。

NULL 値を許可するかどうか

テーブルの作成時には、列ごとに NULL(ヌルやナルと読みます)を許可するかどうかを設定す
る必要があります。NULL は「不確定な値」という意味で、データを追加するときには、入力する
値がない場合など、データの追加時ではなく、後から(データの更新時に)値を入力したい場合に
は、NULL 値を許可しておくようにします。NULL 値を許可しない場合は、データを追加するとき
に、必ず値を入力しなければなりません。データ型のあとに、"NULL" と記述すると "NULL 値
を許可する" ことになり、"NOT NULL" と記述すると、"NULL 値を許可しない" ことになりま
す。

Let's Try
  1. 次のように入力して、「sampleDB」データベースの中へ「社員2」という名前のテーブルを
    作成してみましょう。

    USE sampleDB
    CREATE TABLE 社員2
    ( 社員番号 int NOT NULL,
    氏名 char(50) NOT NULL,
    給与 int NULL,
    入社日 date NULL )


    image
    Note: char(50) とは?
    char データ型の場合は、格納する文字データの最大バイト数を「char(50)」のように指定する必要があります。
    50 と指定した場合は、50 バイト(全角文字だと 25 文字分)までの文字データを格納することができます。
データの追加: INSERT ステートメント
データの追加

SQL では、INSERT というステートメントを利用して、テーブルへデータを追加することができ
ます。構文は、次のとおりです。

image

INSERT INTO に続けてテーブル名を記述して、カッコ内へ列名を列挙し、VALUES に続くカッ
コ内へ、追加したい値をカンマで区切って記述します。列名を省略する場合は、テーブル作成時の
列を定義した順番に値を記述する必要があります。なお、INTO は省略することも可能です。

Let's Try
  1. 「社員2」テーブルは、「社員番号、氏名、給与、入社日」の順に定義しているので、この順
    番に沿って、値をカンマで区切って指定してみましょう。
    image
    実行後、結果ウィンドウへ「1 行処理されました」と表示されれば、データの追加が成功し
    ています。

    Note: データの追加は行単位
    リレーショナル データベースの世界では、データの追加は「行単位」で行い、Excel のように「セル単位」ではありません。したがって、新しい行を追加するには、すべての列の値を指定する必要があります。
  2. 続いて、さらに「社員2」テーブルへデータを追加してみましょう。今度は、INSERT ステー
    トメント内へ列名を記述して、その順番に沿って値を記述してみます。
    image
  3. NULL 値を追加したい場合には、次のように NULL というキーワードを引用符で囲まずに記
    述します。
    image
データの更新: UPDATE ステートメント
データの更新

SQL では、UPDATE というステートメントを利用して、テーブル内のデータを更新することがで
きます。構文は、次のとおりです。

image

UPDATE に続けてテーブル名、SET 句へ更新したい列の名前と更新後の値、WHERE 句へ更新したい行を指定する条件を記述します。WHERE 句では、Step 3 で説明したすべての演算子(比較演算子や BETWEEN、IN、LIKE など)を利用することができます。
WHERE 句を省略した場合は、すべての行が更新対象になってしまうことに注意する必要があります。

Let's Try
  1. 次のように入力して、「社員2」テーブルの「社員番号」が「2」番の給与を 40 万円へ更新
    してみましょう。
    image
    結果ウィンドウへ「1 行処理されました」と表示されれば、更新が成功しています。
  2. SELECT ステートメントを実行して、データが正しく更新されたことを確認しておきましょ
    う。
    image
    社員番号が「2」の「小田 良夫」さんの給与が 40 万円へ更新されていることを確認できま
    す。
  3. 次に、WHERE 句を省略してデータを更新してみましょう。
    image
    今度は、「3 行処理されました」と表示され、全データ(3 行)が更新対象となってしまった
    ことが分かります。
  4. SELECT ステートメントを実行して、結果を確認してみましょう。
    image
    このように、UPDATE ステートメントでは、WHERE 句を省略すると、すべてのデータが更
    新対象になってしまうことに注意する必要があります。
データの削除: DELETE ステートメント
データの削除

SQL では、DELETE というステートメントを利用して、テーブル内のデータを削除することがで
きます。構文は、次のとおりです。

image

DELETE FROM に続けてテーブル名、WHERE 句へ削除したい行の条件を記述します。WHERE句では、UPDATE ステートメントのときと同様、Step 3 で説明したすべての演算子を利用することができます。
また、WHERE 句を省略した場合には、すべての行が削除対象になってしまうことにも注意する必
要があります。

Let's Try
  1. 次のように入力して、「社員2」テーブルから「社員番号」が「2」番のデータを削除してみま
    しょう。
    image
    結果ウィンドウへ「1 行処理されました」と表示されれば、削除が成功しています。
  2. SELECT ステートメントを実行して、データが削除されていることを確認しておきましょう。
    image
  3. 次に、WHERE 句を省略して、データを削除してみましょう。
    image
    今度は、「2 行処理されました」と表示され、全データ(2 行)が削除されてしまったことが
    分かります。
    このように、DELETE ステートメントで WHERE 句を省略した場合には、すべてのデータが
    削除対象となってしまうので、注意する必要があります。

    Note: 高速な全データの削除が行える「TRUNCATE TABLE」
    テーブル内のすべてのデータを削除したい場合には、DELETE ステートメントで WHERE 句を省略するよりも、
    TRUNCATE TABLE というステートメントを利用したほうが高速に実行することができます。これは、次のよう
    に利用します。
    image
    「コマンドは正常に完了しました」と表示されれば、全データの削除が完了しています。高速な理由は、トランザ
    クション ログへ記録する変更履歴を少なくしているからになりますが、トランザクション ログについては、本自
    習書シリーズの「バックアップと復元」で詳しく説明しています。

0 件のコメント:

コメントを投稿