PREPARATION
受験対策

Silverの例題解説
「S3.1 SQLコマンド(INSERT文)」

「S3 開発/SQL - S3.1 SQLコマンド(INSERT文)」からの出題です。

例題

3.149

次の形式のINSERT文の説明として最も適切なものを2つ選びなさい。

INSERT INTO table_name(col1, col2...) VALUES (val1, val2...)


  1. table_nameで指定するテーブルが存在しなければ、自動的に作成される。
  2. col1, col2...で指定される列リストは、実際のテーブルに存在する列の順序と一致しなくても良い。
  3. テーブルに存在する列でcol1, col2... の列リストに含まれないものについては、NULLが入る。
  4. col1, col2...で指定される列リストより、val1, val2...で指定する値リストの方がデータ個数が多いときはエラーになる。
  5. col1, col2...で指定される列リストより、val1, val2...で指定する値リストの方がデータ個数が少ないときは、それらの列についてNULLを指定したものとみなされる。

※この例題は実際のOSS-DB技術者認定試験とは異なります。
例題公開日:2023年3月22日

解答と解説

INSERTはテーブルにデータを作成するSQL文です。INSERTは「挿入」という意味なので、「行を挿入する」という表現が使われることが多いですが、SQLのINSERTはむしろ「追加」のイメージの方が近いです。

INSERTにはテーブルを新規作成する機能はなく、事前にCREATE TABLEで作成しておく必要があります。

列リストに指定されていない列については、その列のデフォルト値(CREATE TABLEなどで指定する列属性のDEFAULTで指定した値)でデータが作成されます。DEFAULTの指定がない列についてはNULLが入るので、NULLが入ることが多いですが、必ずNULLになるわけではないことに注意してください。

col1, col2...で指定する列リストは、CREATE TABLEで指定した列リストの順とは無関係に指定できます。ただし、val1, val2...で指定する値リストは、col1, col2... で指定した列リストの各メンバーに対応したもので、過不足があってはいけません。多すぎても少なすぎてもエラーになります。

なお、INSERT文には INSERT INTO table_name VALUES (val1, val2...) のように列リストを省略する形式もあります。この場合、テーブルのすべての列をその定義順に並べた列リストが指定されたかのような動作になりますが、値リストに並べるデータの個数は列数より少なくても良く、不足する列についてはDEFAULTを指定したものとみなされます(RDBMSの種類によって実装が異なり、不足するとエラーになるものもあります)。この場合と混同しないように注意しましょう。

従って正解はBとDです。

今回の解説について、理解できないポイントがあればどんどん質問をお寄せ下さい。
採用になった方にはLPI-Japanオリジナルの記念品を贈呈します。

※試験問題に関わるお問い合わせにつきましては、LPI-Japan事務局ではお応えできませんのでご了解ください。

企業の基幹システムや業務システム、AIなどの
新領域での「PostgreSQL」の採用が拡大している中、
昇格・昇給・就職・転職に必ず役立つ認定です

OSS-DBの受験対策について

受験の学習をサポートする情報や対策に役立つ情報をご紹介

サンプル問題/例題解説

例題 のアーカイブを試験ごとにまとめています。OSS-DB技術者認定試験の学習にお役立てください

学習教材・教育機関のご紹介

OSS-DB認定教材や教育機関について詳しくご説明いたします。

無料技術解説セミナー

受験準備をされていらっしゃる方々を対象に、無料技術解説セミナーの日程をお知らせしています。

OSS-DB道場

受験準備をされていらっしゃる方々を対象に、無料技術解説セミナーの日程をお知らせしています。