.NETエンジニア・プログラマ向けの技術情報・業界ニュースをお届けします。

  1. FEnet.NETナビ
  2. .NETコラム
  3. データベース
  4. SQL
  5. SQLにおけるINSERT文の使い方7選|応用的な使い方など多数解説

SQLにおけるINSERT文の使い方7選|応用的な使い方など多数解説

  • SQL
  • データベース
公開日時:   更新日時:
SQLにおけるINSERT文の使い方7選|応用的な使い方など多数解説
この記事でわかること
    基本情報技術者試験の試験対策はこちら>>
    システム
    エンジニア
    SQL Serverを使い始めたんですけど、データを登録するにはどうすればいいんですか?
    プロジェクト
    リーダー
    データを登録するにはinsert文という構文を使用します。方法を一緒に確認しましょう。

    SQLとは?


    SQLとは、データベースに対してテーブルを作成したり、テーブル内に格納されたデータを取得するために人間が理解しやすい言葉でかかれたデータベースへ問い合わせができる言語です。

    SQLにはオラクル(oracle) SQLやMySQLなど、様々なSQLの種類があります。

    なお、SQLは略語だと勘違いされる方もいますが、略語ではありません。

    INSERT文を使う場面

    SQLのINSERT文は、テーブルにデータ(レコード)を追加したい場合に使用します。

    参加者名簿を例に考えるとわかりやすいでしょう。あるイベントの参加者名簿があったとします。これがデータベースではテーブルに当たります。

    参加者名簿内に参加者を記載していくという行為が、INSERT文に当たります。

    【入門編】SQL Serverにおけるデータの操作方法4つ

    SQL Serverでデータを操作する方法は以下の4種類です。

    ・登録
    ・検索
    ・更新
    ・削除

    1:登録

    データベース上にデータを登録します。
    データの登録には、insert文という構文を使用して、テーブルにデータを登録します。

    2:検索

    登録したデータを検索できます。
    データの検索には、select文という構文を使用して、テーブルからデータを検索します。
    検索する際には条件を指定して、合致するデータのみ検索するといったことも可能です。

    3:更新

    登録したデータを更新できます。
    データの更新には、update文という構文を使用して、テーブルに登録されているデータを更新します。
    更新する際には条件を指定して、合致するデータのみ更新するといったことも可能です

    4:削除

    登録されているデータを削除できます。
    データの削除には、delete文という構文を使用して、テーブルに登録されているデータを削除できます。
    削除する際には条件を指定して、合致するデータのみ削除するといったことも可能です。

    SQLにおけるINSERT文の使い方7選

    SQLにおけるINSERT文の使い方について、よく使用する7つのINSERT文を説明していきます。

    SQLを使う上で非常に役に立つものばかりですので、しっかり理解しましょう。

    1:SQL Serverにデータを登録する

    それでは実際にデータを登録してみましょう。データベースとテーブルは前回作成したものを使用します。

    データは何も登録されていない状態です。

    insert into の後にテーブル名が入ります。(今回使うテーブルはsampleテーブルです)

    テーブル名の後はデータを登録するカラムを以下のように指定します。
    (id, name, created)

    valuesの後に記述されている部分は、登録するデータの内容です。
    先ほど、valuesの前で指定したカラムと順番が対応しており、記述する順番でどのカラムにどのデータを登録するのかが決まります。
    createdカラムに登録されるデータとして指定している、SYSDATETIME()は現在の日時を取得する関数です。
    このようにすることで、現在の日時を登録することができます。

    よって、上記のコードでは以下のようにデータが登録されます。

    上記のinsert文では対象のテーブルのカラムをすべて指定しましたが、指定を省略することも可能です。

    先ほどのinsert文との違いは、createdカラムの指定がないことです。
    values以下の登録するデータ内容の記述にもcreatedカラムに登録するデータの記述はありません。

    実行すると、以下のように登録されます。

    createdカラムには、nullが登録されました。
    このように、insert文でカラムを省略するとnullが登録されるので、値を登録する必要がないカラムは記述を省略することができます。

    2:テーブル名の後にテーブル列名を書く方法

    SQLのINSERT文でテーブル名の後にテーブル列名を書く方法を説明していきます。

    先ほど紹介したSQL文が、この方法に当てはまります。

    INSERT文では列名を省略することで、項目は未入力状態となります。

    3:テーブル名とvaluesの間にテーブル列名を書かない方法

    SQLのINSERT文でテーブル名とvaluesの間で列指定せずにレコードを追加する方法もあります。

    INSERT文で列名を無視する場合は、すべての列項目を指定する必要があります。

    4:select文の結果をテーブルに入れる

    続いては外部結合した他のテーブルを参照し、テーブルにレコードを追加する書き方を説明します。

    事前にsampleと全く同じ項目を持つsample2テーブルを作成しておきましょう。

    次のSQLクエリは、sample2テーブルに対して副問合せを使用してsampleテーブルのレコードを追加しています。

    5:列を指定して追加したいとき

    ここからは、SQLにおける列を指定したレコードを追加する方法を説明します。

    Insert文で全ての列ではなく、指定した列だけを入力したいときに役に立ちます。
    それでは見ていきましょう。

    固定文字列を指定するとき

    追加するレコードに固定値を入力する方法です。

    例えば、sampleテーブルに’type’という文字列型の項目を追加したsample3というテーブルを作成します。

    次のINSERT文では、’type’レコードには固定値で’Guest’という入力値を設定し、同時にsampleテーブルのレコードをsample3に入力していきます。

    SQL実行結果
    sample3テーブル
    id name type created
    1 山田太郎 Guest 2021-05-22 18:02:12.547
    2 山田花子 Guest NULL
    3 山田次郎 Guest 2021-05-22 18:02:12.550

    式を指定するとき

    SQLのINSER文中に計算式を設定することも可能です。
    足し算や引き算だけでなく、様々な種類の計算結果を入力することができます。

    今回は日付型に対して-1することで1日前の日時を指定しています。

    INSERT文に限らず、SQLでは日付型のほかにも数値や文字列など様々な型でも計算式を使用できます。

    6:複数のデータをまとめて追加したいとき

    続いては複数のデータをまとめてINSERT文で追加したいときのコードを紹介します。

    繰り返しになりますが、おさらいとしてみていきましょう。

    7:複数のレコードを同時に入れる

    SQLで複数レコードを同時に入力する方法について説明します。

    1レコードずつINSERT文で追加できますが、この方法では時間がかかります。
    2行だけであれば問題ありませんが、100件や1000件、1万件必要な時に1行ずつINSERT文を記載するのは大変な作業です。

    INSERT文を1行でまとめて登録するには、レコードごとに括弧でくくりながら、カンマ区切りで指定します。

    SQLにおけるSELECT句を使ったINSERTの応用的な使い方

    ここまで基本的なSQLのINSERT文を紹介してきました。
    続いては応用的なINSERT文の使い方を紹介していきます。まだ基本部分が理解できてない方は、例題のコードを書いてみるとよいでしょう。

    他のテーブルにある値を別のテーブルにも記入するには?

    別のテーブルの値を使用して、INSERTを行う方法があります。
    SQLの副問合せを使用することで、他のテーブルにある値を別のテーブルにも記入することができます。

    では、その記入方法を詳しく説明します。

    INSERT INTO SELECT構文を使う

    SQLにおいて他テーブルを参照して重複するデータ(同じデータ)が存在しない場合の、レコードを追加する方法を見ていきましょう。

    ここではsampleテーブルとsample4テーブルを使用します。
    テーブルごとの値は次の通りです。

    sampleテーブル
    id name created
    1 山田太郎 2021-05-22 18:02:12.547
    2 山田花子 NULL
    3 山田次郎 2021-05-22 18:02:12.550
    4 山田三郎 2021-05-22 18:30:57.963
    5 山田四郎 NULL
    6 山田吾郎 NULL
    7 山田梅子 NULL

    sample4テーブル
    id name type created
    1 山田太郎 NULL 2021-05-21 18:02:12.547
    2 山田花子 NULL NULL
    3 山田次郎 NULL 2021-05-21 18:02:12.550

    次のコードはsample4に存在しないidを一括でINSERTするコードです。

    SQL実行結果
    sample4テーブル
    id name type created
    1 山田太郎 NULL 2021-05-21 18:02:12.547
    2 山田花子 NULL NULL
    3 山田次郎 NULL 2021-05-21 18:02:12.550
    4 山田三郎 NULL NULL
    5 山田四郎 NULL NULL
    6 山田吾郎 NULL NULL
    7 山田梅子 NULL NULL

    システム
    エンジニア
    insert文を使用して、データを登録することができました。
    プロジェクト
    リーダー
    登録するカラムの数が増えても、insert intoという構文は変わらないので、しっかり理解して使っていきましょう。

    SQLでINSERT文を使用してみよう

    SQL Server Management Studioにて、insert文を使用してデータを登録しましたがいかがでしたか。
    今回の記事ではカラムの数が3つでしたが、カラムの数が増えても構文は変わりません。ぜひ、insert intoの構文を理解して使ってみてください。

    FEnet.NETナビ・.NETコラムは株式会社オープンアップシステムが運営しています。
    株式会社オープンアップシステムロゴ

    株式会社オープンアップシステムはこんな会社です

    秋葉原オフィスには株式会社オープンアップシステムをはじめグループのIT企業が集結!
    数多くのエンジニアが集まります。

    秋葉原オフィスイメージ
    • スマホアプリから業務系システムまで

      スマホアプリから業務系システムまで

      スマホアプリから業務系システムまで開発案件多数。システムエンジニア・プログラマーとしての多彩なキャリアパスがあります。

    • 充実した研修制度

      充実した研修制度

      毎年、IT技術のトレンドや社員の要望に合わせて、カリキュラムを刷新し展開しています。社内講師の丁寧なサポートを受けながら、自分のペースで学ぶことができます。

    • 資格取得を応援

      資格取得を応援

      スキルアップしたい社員を応援するために資格取得一時金制度を設けています。受験料(実費)と合わせて資格レベルに合わせた最大10万円の一時金も支給しています。

    • 東証プライム上場企業グループ

      東証プライム上場企業グループ

      オープンアップシステムは東証プライム上場「株式会社オープンアップグループ」のグループ企業です。

      安定した経営基盤とグループ間のスムーズな連携でコロナ禍でも安定した雇用を実現させています。

    株式会社オープンアップシステムに興味を持った方へ

    株式会社オープンアップシステムでは、開発系エンジニア・プログラマを募集しています。

    年収をアップしたい!スキルアップしたい!大手の上流案件にチャレンジしたい!
    まずは話だけでも聞いてみたい場合もOK。お気軽にご登録ください。

    株式会社オープンアップシステムへのご応募はこちら↓
    株式会社オープンアップシステムへのご応募はこちら↓

    新着案件New Job