PREPARATION
受験対策

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

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

例題

3.95

以下のSQLを順次実行した。

CREATE TABLE foo (id INTEGER PRIMARY KEY, val VARCHAR);
INSERT INTO foo (id, val) VALUES (1, 'a'), (2, 'b'), (3, 'c');
INSERT INTO foo (id, val) VALUES (3, 'x'), (4, 'y'), (5, 'z');
このとき、テーブルfooには何行のデータが含まれるか。

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

解答と解説

テーブルへの行の挿入(追加)にはINSERT文を使用しますが、このとき挿入されるデータはVALUESあるいはSELECTによって指定します。

VALUESを使う場合、各列の値をカンマで区切り、カッコで括ったリストの形式でデータを指定しますが、このようなリストをカンマで区切って複数並べることで、複数行のデータをまとめて挿入することができます。

例題のSQLでは、最初にテーブルfooを作成し、次のINSERTで3行のデータを挿入しています。

最後のSQLでも3行のデータを挿入しようとしていますが、ここでテーブルの定義とデータの内容に注意する必要があります。例題のCREATE

TABLEではid列を主キー(PRIMARY KEY)に指定しているため、id列では値が重複するデータを持つことができません。

最初のINSERTでid=3の行を挿入し、次のINSERTでもid=3のデータを挿入しようとしているため、2つ目のSQLがエラーになります。

2つ目のSQLは3行のデータを挿入しようとしており、id=4および5のデータについてはエラーがありませんが、このINSERT文自体がエラーとされるため、1行もデータが挿入されません。すなわち、テーブルfooには1つ目のINSERTで挿入された3行のデータだけが残ります。

したがって正解は3行です。

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

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

企業の基幹システムや業務システムでの
OSS-DBの採用がますます拡大している中、
昇格・昇給・就職・転職に必ず役立つ認定資格になります

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

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

サンプル問題/例題解説

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

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

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

無料技術解説セミナー

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

OSS-DB道場

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

LPI-Japan
Platinum Sponsors