【初級編⑮】SQLのINSERT文でレコードを追加する

【初級編⑮】SQLのINSERT文でレコードを追加する

2018年1月3日

 
 

初級編

 
 

 
 

 
 

テーブルにレコードを追加するには、SQLの「INSERT」というコマンドを使用します。Management StudioGUIから操作した時にも、実は裏で自動的にこのINSERT文が実行されています。今回はこのINSERT文を説明したいと思います。

 
 

目次 [非表示]

  • 対象テーブルのスキーマ
  • 2 INSERT文の構文
  • 列名を指定したINSERT文の構文
  • 対象テーブルのスキーマ

    レコードを追加するテーブルは、画像で示した社員マスタを使用します。


    全部で7項目(7列)あります。データベースのデータはレコード、つまり行単位が原則になりますので、基本的にはこの7項目それぞれに対して値をセットする必要があります。それでは、このテーブルに対してレコードを追加していきましょう。

    INSERT文の構文

    INSERT文の構文は次のとおりです。

    基本的なINSERT文

    Transact-SQL

1

2

INSERT
INTO
テーブル名

VALUES(1,
2,
3,・・・)

INSERT INTO の後ろに対象のテーブル名を指定します。そして、VALUESの後ろに、実際にセットする値をカンマ区切りで指定し、これをカッコで囲みます。

この書き方の場合、対象テーブルの列の定義の順番に合わせて値を並べないといけません。実際に試してみると、確かに1レコード登録されていて、列の順番通りに値がセットされていることが分かります。


なお、この状態でもう一度実行するともう1回登録されてしまいます。ただ、このテーブルの場合社員番号で主キー違反になりますが。


この書き方だと、当然列の順番を間違えると(場合によっては)エラーになります。


これだと非常に間違いやすいので、通常は値をセットする対象の列名も合わせて指定します。

列名を指定したINSERT文の構文

INSERT文に、値の指定と同様に列名もカンマ区切りで記述することで、どの列に対して値をセットするのかを指定することができます。

列名を指定したINSERT文

Transact-SQL

1

2

INSERT
INTO
テーブル名(列名1,
列名2,
列名3,
・・・)

VALUES(1,
2,
3,・・・)

このようにINSERT INTO テーブル名の後ろに、列名をカンマ区切りで指定しカッコで囲みます。すると、列名1には値1がセットされ、列名2には値2がセット、という風に左から順番に対応付けられます。この書き方だと、対象テーブルの列定義の順番は無視することができます。また、最初の書き方だといつのまにか列が追加されていたりしてもSQLを見ただけでは対応しているのかどうかも分からないので、特に理由が無ければ列名の指定は必ずするようにした方がいいです。


列の指定を省略した場合

列名を指定する書き方の場合は、値をセットしたい項目のみ記述することができますので、列の指定を省略することもできます。省略された列には初期値がセットされることになります。

初期値とは2つあり、①スキーマ定義で当該列に対してDEFAULT制約で指定した値、又はDEFAULT制約が無い場合はNULL、となります。今回のテーブルの場合は、生年月日がgetdate()・・・現在日時、給料が0、部署コードが”・・・空文字となっています。


それではこの3列を省略してINSERTしてみます。


省略した項目に初期値がセットされていることが分かります。

 
 

貼り付け元 <https://kaya-soft.com/sqlserver2008-toranomaki/beginner/sql_insert/>

  • Pocket
  • LINEで送る
  • このエントリーをはてなブックマークに追加

powered by Free WordPress Theme Principle

Copyright © ディズニー好きなコンビニ経営者ブログ All Rights Reserved.

Menu

HOME

TOP

テキストのコピーはできません。