応用情報処理技術者試験の対策サイトです。 応用情報処理技術者試験の午前問題を中心とした基礎用語の解説を中心に掲載します。書き始めたばかりなので、内容はまだまだ不十分です。
カテゴリ:

5.データベース > 5.2 データ操作

H27秋AP午前

問29    "倉庫別商品在庫集計”表から在庫数の合計を求めたい。倉庫番号'C003'の倉庫で在庫数が100 以上の商品に対して,全ての倉庫における在庫数の合計を求めるSQL文のaに入る適切な字句はどれか。ここで,該当する商品は複数存在するとともに在庫数が100未満の商品も存在するものとする。また,実線の下線は主キーを表す。

倉庫別商品在庫集計(倉庫番号,商品コード,在庫数)

〔SQL文〕
SELECT 商品コード, SUM(在庫数) AS 在庫合計 FROM 倉庫別商品在庫集計
      WHERE [  a  ]
      GROUP BY 商品コード

ア 商品コード = (SELECT 商品コード FROM 倉庫別商品在庫集計
               WHERE倉庫番号 = 'C003' AND 在庫数 >= 100)
イ 商品コード = ALL(SELECT 商品コード FROM 倉庫別商品在庫集計
               WHERE倉庫番号 = 'C003' AND 在庫数 >= 100)
ウ 商品コード IN(SELECT 商品コード FROM 倉庫別商品在庫集計
               WHERE 倉庫番号 = 'C003' AND 在庫数 >= 100)
エ EXISTS (SELECT * FROM 倉庫別商品在庫集計
               WHERE 倉庫番号 = 'C003' AND 在庫数 >= 100)

正解は、ウです。

H27春AP午前

間26 "電話番号"列にNULLを含む"取引先"表に対して,SQL文を実行した結果の行数は幾つか。
20170906_3-1
〔SQL文〕
SELECT * FROM 取引先 WHERE 電話番号 NOT LIKE '010%'

ア 1   イ 2     ウ 3   エ 4
NOT LIKE '010%'はあいまい検索で「010」で始まるもの以外ということを表します。
NULL(ヌルと呼ぶ人が多い)は「値が無い」という意味です。LIKEを使った場合、NULLを抽出することはできません。よって、2行目、4行目、5行目の3つが正解です。
正解は、ウです。

(H25春AP午前 問29と同じ)
問27 埋込みSQLにおいて,問合せによって得られた導出表を1行ずつ親プログラムに引き渡す操作がある。この操作と関係の深い字句はどれか。

ア CURSOR
イ ORDER BY   
ウ UNION
エ UNIQUE

正解は、アです。

H26秋AP午前

問25 表に対するSQLのGRANT文の説明として,適切なものはどれか。

ア パスワードを設定してデータベースへの接続を制限する。
イ ビューを作成して,データベースへのアクセス処理を隠蔽し,表を直接アクセスできないようにする。
ウ 表のデータを暗号化して,第三者がアクセスしてもデータの内容が分からないようにする。
エ 表の利用者に対し,表への問合せ,更新,追加,削除などの操作を許可する。

正解は、エです。

H26春AP午前

問28 "東京在庫" 表と "大阪在庫" 表に対して,SQL文を実行して得られる結果はどれか。ここで,実線の下線は主キーを表す。
20170906_3-2

正解は、エです。

H25秋AP午前
(H21春AP午前 問31と同じ)
問27 クライアントサーバシステムにおけるストアドプロシージャに関する記述のうち,誤っているものはどれか。
ア 機密性の高いデータに対する処理を特定のプロシージャ呼出しに限定することによって,セキュリティを向上させることができる。
イ システム全体に共通な処理をプロシージャとして格納しておくことによって,処理の標準化を行うことができる。
ウ データベースへのアクセスを細かい単位でプロシージャ化することによって,処理性能(スループット)を向上させることができる。
エ 複数のSQL文から成る手続を1回の呼出しで実行できるので,クライアントとサーバの間の通信回数を減らすことができる。

正解は、ウです。

問31 地域別に分かれている同じ構造の三つの商品表,"東京商品","名古屋商品","大阪商品"がある。次のSQL文と同等の結果が得られる関係代数式はどれか。ここで,三つの商品表の主キーは"商品番号"である。

SELECT * FROM 大阪商品
   WHERE 商品番号 NOT IN (SELECT 商品番号 FROM 東京商品)
UNION
SELECT * FROM 名古屋商品
   WHERE 商品番号 NOT IN (SELECT 商品番号 FROM 東京商品)

ア (大阪商品 ∩ 名古屋商品)−東京商品
イ (大阪商品 ∪ 名古屋商品)−東京商品
ウ 東京商品−(大阪商品 ∩ 名古屋商品)
エ 東京商品−(大阪商品 ∪ 名古屋商品)

正解は、イです。

H25春AP午前

問27 クライアントサーバシステムにおいて,クライアント側からストアドプロシージャを利用したときの利点として,適切なものはどれか。

ア クライアントとサーバの間の通信量を削減できる。
イ サーバ内でのデータベースファイルへのアクセス量を削減できる。
ウ サーバのメモリ使用量を削減できる。
エ データの格納領域を削減できる。

正解は、アです。

問30 A表は外部キーによってB表から参照されている。ここで,A表の行を削除するとき,それを参照しているB表の行を同時に全て削除することを指定するSQLの参照動作はどれか。

ア CASCADE
イ CONSTRAINT
ウ NO ACTION
エ REFERENCES


正解は、アです。

H23春AP午前

問30   "社員"表ど人事異動"表から社員ごとの勤務成績の平均を求める適切なSQL文はどれか。ここで,求める項目は,社員コード,社員名,勤務成績(平均)の3項目とする。
社員
社員コード 社員名 性別 生年月日 入社年月日
01553 太田 由美 女 1970-03-10 1990-04-01
S3781 佐藤 義男 男 1943-11-20 1975-06-11
08665 太田 由美 女 1978-10-13 1999-04-01
人事異動
社員コード 配属部門 配属年月日 担当勤務内容 勤務成績
01553 総務部 1990-04-01 広報(社内報) 69.0
01553 営業部 1998-07-01 顧客管理 72.0
S3781 資材部 1975-06-11 仕入在庫管理 70.0
S3781 経理部 1984-07-01 資金計画 81.0
S3781 企画部 1993-07-01 会社組織,分掌 95.0
08665 秘書室 1999-04-01 受付 70.0
ア SELECT 社員.社員コード,社員名,AV6(勤務成績)AS¨勤務成績(平均)・・FROM社員,人事異動
WHERE 社員.社員コード=人事異動.社員コード
GROUP BY勤務成績
イ SELECT 社員.社員コード,社員名,AVG(勤務成績)AS  "勤務成績(平均)・・FROM社員,人事異動
WHERE 社員.社員コード=人事異動.社員コード
GROUP BY社員.社員コード,社員.社員名
ウ SELECT 社員.社員コード,社員名,AVG(勤務成績)/COUNT(勤務成績)AS  "勤務成績(平均)"FROM社員,人事異動
WHERE 社員.社員コード=人事異動.社員コード
GROUP BY社員.社員コード,社員.社員名
工 SELECT 社員.社員コード,社員名,MAX(勤務成績)/COUNT(*)
AS  ¨勤務成績(平均)・・FROM社員,人事異動
WHERE 社員.社員コード=人事異動.社員コード
GROUP BY社員.社員コード,社員.社員名

■H24春AP午前
問26 販売価格が決められていない“商品"表に,次のSQL文を実行して販売価格を設定する。このとき,販売ランクがbの商品の販売価格の平均値は幾らか。
uPDATE商品SET販売価格=
CASE
WHEN販売ランク='a' THEN単価*0.9WHEN販売ランク=  'b' THEN単価-   500WHEN販売ランク=  'c・ THEN単価*0.7ELSE単価
END
商品番号 商品名 販売ランク 単価 販売価格
1001 U a 2,000 NULL
2002 V b 2,000 NULL
3003 W a 3,000 NULL
4004 X C 3,000 NULL
5005 Y b 4,000 NULL
6006 Z d 100 NULL
ア 1,675
イ 2,100
ウ 2,250
工 2,500

■H23秋AP
問30 更新可能なビューを作成するSQL文はどれか。ここで, SQL文中に現れる表は全て更新可能とする。
ア cREATEvエEW高額商品(商品番号,商品名,商品単価)
AS SELECT商品番号,商品名,商品単価FROM商品WHERE商品単価〉1000イ CREATE VIEW受注商品(商品番号)
AS SELECT DIST工NCT商品番号FROM受注
ウ CREATE  VIEW商品受注(商品番号,受注数量)
AS SELECT商品番号,SUM(受注数量)FRoM受注GROUP BY商品番号
工 CREATE  VIEW商品平均受注数量(平均受注数量)
AS SELECT AvG(受注数量)FRoM受注

■H22春AP

問33 表Aから実行結果Bを得るためのSQL文はどれか。
A
社員コード 名前 部署コード 給料
10010 伊藤幸子 101 200,000
10020 斉藤栄一 201 300,000
10030 鈴木裕一 101 250,000
10040 本田一弘 102 350,000
10050 山田五郎 102 300,000
10060 若山まり 201 250,000
実行結果B
部署コード 社員コード 名前
101 10010 伊藤幸子
101 10030 鈴木裕一
102 10040 本田一弘
102 10050 山田五郎
201 10020 斉藤栄一
201 10060 若山まり
ア SELECT部署コード,社員コード,名前FROM AGROUP BY社員コード
イ SELECT部署コード,社員コード,名前FROM AGROUP BY部署コード
ウ SELECT部署コード,社員コード,名前FROM AORDER BY社員コード,部署コード
エ SELECT部署コード,社員コード,名前FROM AORDER BY部署コード,社員コード

問29 “サッカーチーム”表と“審判”表から,条件を満たす対戦を導出するSQL文のaに入れる字句はどれか。

 〔条件〕
  ・出場チーム1のチーム名は出場チーム2のチーム名よりもアルファベット順で先にくる。
  ・審判は,所属チームの対戦を担当することはできない。


サッカーチーム
チーム名
X
Y
Z
審判
氏名
所属チーム名
佐藤健太
X
鈴木翔太
Y
高橋拓也
Z


対戦
出場チーム1
出場チーム2
審判氏名
X
Y
高橋拓也
X
Z
鈴木翔太
Y
Z
佐藤健太


〔SQL文〕
 SELECT A.チーム名 AS 出場チーム1,B.チーム名 AS 出場チーム2,C.氏名 AS 審判氏名
    FROM サッカーチーム AS A,サッカーチーム AS B,審判 AS C
    WHERE A.チーム名 < B.チーム名 AND [  a  ]


ア (A.チーム名 <> C.所属チーム名 OR B.チーム名 <> C.所属チーム名)
イ C.所属チーム名 NOT IN (A.チーム名,B.チーム名)
ウ EXISTS
    (SELECT * FROM 審判 AS D WHERE A.チーム名 <> D.所属チーム名 AND B.チーム名 <> D.所属チーム名)
エ NOT EXISTS
    (SELECT * FROM 審判 AS D WHERE A.チーム名=D.所属チーム名 OR B.チーム名 = D.所属チーム名)
   正解は、エです。

問28 関係データベースにおける実表と導出表に関する記述のうち,適切なものはどれか。

ア 実表に対する射影,結合などによって導出表が得られる。
イ 導出表は,データを参照する場合だけに用いる。
ウ 導出表は,複数の実表から得られる表である。
エ 導出表は,元の実表の列だけから成る。
正解は、アです。

SQL(Structured Query Language)とは、データベースを操作する言語です。SQL文を使うことで、表からデータを選択したり、追加、削除、変更などが行えます。
SQLの言語はいくつかに分かれます。応用情報試験のシラバスには「データベース言語は,DDL(Data Definition Language:データ定義言語)とDML(Data Manipulation Language:データ操作言語)などに大別される」とあります。もう一つ、DCL(Data Control Language:データ制御言語)があります。

.如璽秦犧邯生
 データ操作言語の代表はSELECT(選択)です。それ以外に、INSERT(行の挿入),UPDATE(値の更新) ,DELETE(行の削除)などがあります。

▲如璽芯蟲糎生
データ定義言語には、CREATE文があります。
たとえば、表を作る場合は CREATE TABLE
VIEWを作る場合は CREATE VIEW

データ制御言語
アクセス権を付与するGRANTや、削除するREVOKEがあります。

■文法
SQLの文法も理解しておきましょう。
基本となるSQL文はSELECT文です。なので、SELECT文でSQLの基本を理解しましょう。
SELECT 表の列名 FROM 表 WHERE 条件

・stored(サーバに蓄えられた) procedure(手続きorプログラム)
・クライアントからSQL文などで要求を毎回送るのではなく、あらかじめサーバ側に一連のProcedure(プログラム)を作成しておく。クライアントからは値だけを送る。

・過去問(H25秋FE午前問28)ではストアドプロシージャに関して、「クライアントサーバシステムにおいて,利用頻度の高い命令群をあらかじめサーバ上のDBMSに用意しておくことによって,データベースアクセスのネットワーク負荷を軽減する仕組み」と述べられています。

効果は「通信回数と通信量の削減」

例えば、退職する社員の日割りの給料計算のために、以下の一連の処理をする場合を考えます。
・人事データベースから、その人の基本給および能力給を抽出
・1か月間の残業日数を集計
・売り上げ額の集計から、成果加算額を積算
・集計した給料をもとに、退職日に応じて日割りの金額を給料データベースに反映
・・・

1.通常のプログラムの場合
サーバクライアント

SELECT kihon,nouryoku FROM jinji_db ****
SELECT sum(zangyo) FROM kintai_db ****
SELECT sum(uriage) FROM uriage_db ****
UPDATE salary SET ****   
・・・・・             各処理

このように、各処理の回数だけ処理が必要


2.ストアドプロシージャを使った場合
サーバクライアント


ProcedureKyuryo、1023,1218,・・・




プロシージャ名と引数(この場合は、退職する社員の社員番号と退職日)を渡すだけで計算が終わります。クライアントとサーバでやり取りする命令が1回で済みますし、データ量も削減できます。

【関連問題】
SM平成18年問5
SM平成17年問5

H27年秋AP午前
問26 クライアントサーバシステムにおけるストアドプロシージヤに関する記述のうち,適切でないものはどれか。
ア 機密性が高いデータに対する処理を特定のプロシージヤ呼出しに限定することによって,セキュリティを向上させることができる。
イ システム全体に共通な処理をプロシージヤとして格納しておくことによって,処理の標準化を行うことができる。
ウ データベースへのアクセスを細かい単位でプロシージヤ化することによって,処理性能(スループット)を向上させることができる。
エ 複数のSQL文から成る手続を1回の呼出しで実行することによって,クライアントとサーバの間の通信回数を減らすことができる。
【正解】ウ

スポンサードリンク

このページのトップヘ