PREPARATION
受験対策

Silverの例題解説- S3 開発/SQL(Ver.3.0)

このページではメルマガで紹介した例題のアーカイブを試験のレベルごとにまとめています。
是非、OSS-DBの学習にお役立てください。

修正等により、例題番号が連番ではない場合がございます。あらかじめご了承ください。

S3.1 SQL コマンド

3.176 NEW

PL/pgSQLで実行中にデバッグや情報出力のためにメッセージを出したい場合に用いるキーワードはどれか。

  1. LOG

  2. WARNING

  3. NOTICE

  4. DEBUG

  5. RAISE


S3.1 SQL コマンド

3.175

通常のビューとマテリアライズドビューの違いとして、正しいものはどれですか?

  1. 通常のビューはクエリ実行時に最新のデータを取得し、マテリアライズドビューは保存された結果を返す

  2. 通常のビューは物理的にデータを保存し、マテリアライズドビューは常に動的にデータを生成する

  3. マテリアライズドビューは自動的に更新されるが、通常のビューは手動更新が必要である

  4. 通常のビューはインデックスが作成できるが、マテリアライズドビューにはインデックスを作成できない


S3.1 SQL コマンド

3.174

日付又は時刻を扱うデータ型として正しいものをすべて選択してください。

  1. timestamp

  2. date

  3. time

  4. interval

  5. watch


S3.3 トランザクションの概念

3.173

PostgreSQLにおけるトランザクション分離レベルの設定方法について、正しいものを全て選べ。

  1. SET default_transaction_isolation TO 'トランザクション分離レベル';

  2. SET transaction_isolation TO 'トランザクション分離レベル';

  3. ALTER SYSTEM SET default_transaction_isolation TO 'トランザクション分離レベル';

  4. BEGIN ISOLATION LEVEL トランザクション分離レベル;

  5. START TRANSACTION ISOLATION LEVEL トランザクション分離レベル;


S3.3 トランザクションの概念

3.172

LOCK TABLE文で使用できるロックモードとして正しいものを全て選べ。

  1. ROW SHARE

  2. ROW EXCLUSIVE

  3. FOR UPDATE

  4. SHARE ROW EXCLUSIVE

  5. EXCLUSIVE


S3.1 SQL コマンド

3.171

PostgreSQLにおいて、トリガ(TRIGGER)が実行されるタイミングとして正しいものは次のうちどれですか。

  1. テーブルをSELECTしたとき

  2. テーブルをDROPしたとき

  3. INSERT・UPDATE・DELETE・TRUNCATEの操作が行われたとき

  4. DBサーバ起動時 E. テーブルへのアクセス権を変更したとき


S3.2 組み込み関数

3.170

文字列の長さを求める関数として、PostgreSQLで使用されるものは次のうちどれですか。

  1. char_length()
  2. character_length()
  3. strlen()
  4. length_char()
  5. upper()

S3.2 組み込み関数

3.169

ALTER TABLE文を使用して、既存のパーティションをパーティション付きテーブルに追加するSQLを答えなさい

  1. ALTER TABLE parent_table ADD PARTITION child_table VALUES IN (2023);
  2. ALTER TABLE child_table ATTACH TO parent_table VALUES IN (2023);
  3. ALTER TABLE parent_table ADD PARTITION child_table FOR (2023);
  4. ALTER TABLE parent_table ATTACH PARTITION child_table FOR VALUES IN (2023);
  5. ALTER TABLE parent_table ATTACH PARTITION child_table IN (2023);

S3.2 組み込み関数

3.168

下記のようなテーブルに対して、店舗ごとに売上金額(amount)の合計が100,000円を
超える全ての店舗を取得するSQLを答えなさい

postgres=# SELECT * FROM sales;
 id |  store  | amount 
----+---------+--------
  1 | Store_A |  30000
  2 | Store_A |  40000
  3 | Store_A |  35000
  4 | Store_B |  25000
  5 | Store_B |  20000
  6 | Store_B |  15000
  7 | Store_C | 120000
  8 | Store_D |  50000
  9 | Store_D |  60000
(9 rows)


  1. SELECT store FROM sales GROUP BY store HAVING SUM(amount) > 100000;
  2. SELECT store FROM sales WHERE amount > 100000;
  3. SELECT store FROM sales GROUP BY store WHERE SUM(amount) > 100000;
  4. SELECT store FROM sales HAVING SUM(amount) > 100000;

S3.3 トランザクションの概念

3.167

PostgreSQLでテーブル内のデータを削除するためのコマンドを答えなさい

  1. DROP TABLE
  2. DELETE TABLE
  3. REMOVE TABLE
  4. ECLEAR TABLE

S3.3 トランザクションの概念

3.166

テーブルロックについて、正しい記述をすべて答えなさい

  1. ロックの競合は取得するロックモードにかかわらず後に取得しようとするロックが待たされる
  2. VACUUMはロックモード"SHARE UPDATE EXCLUSIVE "を取得する
  3. pg_locksシステムビューにより、データベースクラスタ内のロック状態が確認できる
  4. ロックの競合は同一トランザクション内でも発生する

S3.2 組み込み関数

3.165

postgres=# select * from orders;
 order_id | customer_id | order_date | amount 
----------+-------------+------------+--------
        1 |           1 | 2024-08-01 | 100.00
        2 |           2 | 2024-08-02 | 150.00
        3 |           3 | 2024-08-03 | 200.00
        4 |           5 | 2024-08-04 | 250.00
(4 rows)

postgres=# select * from customers;
 customer_id | customer_name 
-------------+---------------
           1 | Alice
           2 | Bob
           3 | Charlie
           4 | Diana
(4 rows)

上記のようなテーブル orders, customers が存在する場合に、下記の実行結果が得られる SQL を答えなさい

 order_id | customer_id | order_date | amount | customer_id | customer_name 
----------+-------------+------------+--------+-------------+---------------
        1 |           1 | 2024-08-01 | 100.00 |           1 | Alice
        2 |           2 | 2024-08-02 | 150.00 |           2 | Bob
        3 |           3 | 2024-08-03 | 200.00 |           3 | Charlie
(3 rows)


  1. SELECT * FROM orders FULL OUTER JOIN customers ON orders.customer_id = customers.customer_id;
  2. SELECT * FROM orders INNER JOIN customers ON orders.customer_id = customers.customer_id;
  3. SELECT * FROM orders LEFT JOIN customers ON orders.customer_id = customers.customer_id;
  4. SELECT * FROM orders RIGHT JOIN customers ON orders.customer_id = customers.customer_id;
  5. SELECT * FROM orders CROSS JOIN customers;

S3.2 組み込み関数

3.164

テーブル t_user から複数行を選択する SQL をすべて答えなさい。

postgres=# select * from t_user ;
 id |      name      | age | department  
----+----------------+-----+-------------
  1 | Taro Yamada    |  30 | Engineering
  2 | Hanako Suzuki  |  25 | Marketing
  3 | Kenta Sato     |  28 | Sales
  4 | Yuki Tanaka    |  35 | HR
  5 | Rina Kobayashi |  22 | Finance
  6 | Shota Watanabe |  29 | Engineering
  7 | Mai Ito        |  31 | Marketing
  8 | Koji Nakamura  |  26 | Sales
(8 rows)

  1. SELECT * FROM t_user WHERE name ~ 'a';
  2. SELECT * FROM t_user WHERE name ~ 'o$';
  3. SELECT * FROM t_user WHERE department ~ '^HR$';
  4. SELECT * FROM t_user WHERE name ~ '^K';
  5. SELECT * FROM t_user WHERE id::text ~ '^9$';

S3.1 SQL コマンド

3.163 NEW

ロジカルレプリケーションの説明として、正しい記述をすべて答えなさい

  1. Windows と Linux の PostgreSQL 間でのレプリケーションが可能である
  2. 異なるメジャーバージョン間のレプリケーションが可能である
  3. サブスクライバー側のDBサーバは参照のみ可能であり、更新はできない
  4. 1つのパブリッシャーに対して、複数のサブスクライバーが設定できる
  5. 既にストリーミングレプリケーションを実行しているプライマリに対して、パブリッシャーは設定できない

S3.1 SQL コマンド

3.162

インデックスの説明として、正しい記述をすべて答えなさい

  1. インデックスを使ったテーブルへのアクセスはシーケンシャルアクセスとなる
  2. 複数列を対象にしたインデックスを作成することができる
  3. PostgreSQLで使用できるインデックスの種類は B-Tree インデックスのみである
  4. テーブルを削除する際は削除するテーブルを対象にしたインデックスを削除しておく必要がある
  5. インデックスを付与した場合は必ず性能が向上する

S3.1 SQL コマンド

3.161

「CREATE TABLE tbl (id integer, age integer, name text)」を実行しテーブルを作成した。
数件のデータを挿入した後、下記のSQLを実行した際にエラーが出力された。

postgres=# SELECT * FROM tbl GROUP BY id;
ERROR:  column "tbl.age" must appear in the GROUP BY clause or be used in an aggregate function

エラーが解消されるように修正された SQL をすべて答えなさい。


  1. SELECT id FROM tbl GROUP BY id;
  2. SELECT age FROM tbl GROUP BY id;
  3. SELECT id, age FROM tbl GROUP BY id;
  4. SELECT max(id) FROM tbl GROUP BY id;
  5. SELECT avg(age) FROM tbl GROUP BY id;

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

OSS-DBの受験対策

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

例題解説

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

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

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

無料技術解説セミナー

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

OSS-DB道場

OSS-DBやPostgreSQLの知識、技術を得るために役立つ情報の紹介やコラムを公開しています。

応募者全員プレゼント!
オープンソース データベース標準教科書 -PostgreSQL-