
データベーススペシャリスト試験攻略のツボ(9)
「SQL文を選択する」問題
西沢直木2009/1/26
本連載では、テクニカルエンジニア(データベース)試験に対応できる知識を確認していきます。多岐にわたる知識が問われる試験ですので、受験する方はもちろん、日常業務ではあまり使うことのない技術知識の確認にも役立ててください。
|
問9-3 問題文と同じ結果になるSQL文を選択
T1表とT2表が、次のように定義されているとき、次のSELECT文と同じ検索結果が得られるSELECT文はどれか。
(T1表の定義) CREATE TABLE T1(SNO CHAR(6) PRIMARY KEY, SNAME CHAR(20)) (T2表の定義) CREATE TABLE T2(CODE CHAR(4) SNO CHAR(6), SURYO INT) 〔SELECT文〕 SELECT DISTINCT T1.SNAME FROM T1, T2 WHERE T1.SNO = T2.SNO ORDER BY T1.SNAME
ア
SELECT DISTINCT SNAME FROM T1 WHERE SNO IN (SELECT SNO FROM T2) ORDER BY SNAME
イ
SELECT DISTINCT SNAME FROM T1 WHERE T1.SNO IN (SELECT SNO FROM T1) ORDER BY SNAME
ウ
SELECT DISTINCT SNAME FROM T1 WHERE SNO NOT IN (SELECT SNO FROM T2) ORDER BY SNAME
エ
SELECT T2.SNAME FROM T1, T2 WHERE T1.SNO = T2.SNO ORDER BY T2.SNAME
(19年-午前問題-問34)
答え
ア
解説
問題文のSELECT文はT1、T2をSNO列で結合しています。結果として、T1、T2の両方に含まれるデータについて、昇順にソートされたT1のSNAME列の重複を取り除いた値が返されます。これと同じ結果になるSELECT文を選択肢から探します。
選択肢「ア」は、IN句のSELECT文でT2の全データを取得しており、その結果を基にT1からSNAME列を取得しているので、問題文と同じように、両方の表に含まれるデータが返されます。また、ORDER BY句の条件や、DISTINCT句でSNAME列の重複を削除している点も問題文と同じなので、結果は問題文と同じになります。従って、この選択肢「ア」が正解です。
選択肢「イ」は、重複を削除したSNAME列を返しますが、T2のデータが結合されていないので、問題文とは結果が異なります。
選択肢「ウ」は、NOT IN句を使用しており、T2に含まれないデータが返されるので、問題文のSELECT文とは結果が異なります。
選択肢「エ」は、T2にはSNAME列がないので、ORDER BY句の指定がエラーになります。
筆者プロフィール:西沢 直木(にしざわ なおき)
フリーランスでWebアプリケーションの開発、コンピュータ書籍の執筆および翻訳に従事。データベース、プログラミング言語、サーバ関連から数学の話題までにかかわる。テクニカルエンジニア(データベース)保有。
主な著書および翻訳書
- 『PHPによるWebアプリケーションスーパーサンプル第2版』(ソフトバンククリエイティブ、978-4797332452)
- 『初めてのPHP & MySQL 第2版』(オライリー・ジャパン、978-4873113654)
- 『Statistics Hacks ―統計の基本と世界を測るテクニック』(オライリー・ジャパン、978-4873113357)
- 『SQL Hacks ―データベースを自由自在に操るテクニック』(オライリー・ジャパン、978-4873113319)
![]() |
3/3 |
Index
データベーススペシャリスト試験攻略のツボ(9)
「SQL文を選択する」問題
「SQL文を選択する」問題
問9-1 問題文の条件を満たすSQL文を選択
問9-2 サブクエリに当てはまるSQL文を選択
問9-3 問題文と同じ結果になるSQL文を選択
![]() |
データベーススペシャリスト試験攻略のツボ |
Database Expert フォーラム 新着記事
- Oracleライセンス「SE2」検証 CPUスレッド数制限はどんな仕組みで制御されるのか (2017/7/26)
データベース管理システムの運用でトラブルが発生したらどうするか。DBサポートスペシャリストが現場目線の解決Tipsをお届けします。今回は、Oracle SE2の「CPUスレッド数制限」がどんな仕組みで行われるのかを検証します - ドメイン参加後、SQL Serverが起動しなくなった (2017/7/24)
本連載では、「SQL Server」で発生するトラブルを「どんな方法で」「どのように」解決していくか、正しい対処のためのノウハウを紹介します。今回は、「ドメイン参加後にSQL Serverが起動しなくなった場合の対処方法」を解説します - さらに高度なSQL実行計画の取得」のために理解しておくべきこと (2017/7/21)
日本オラクルのデータベーススペシャリストが「DBAがすぐ実践できる即効テクニック」を紹介する本連載。今回は「より高度なSQL実行計画を取得するために、理解しておいてほしいこと」を解説します - データベースセキュリティが「各種ガイドライン」に記載され始めている事実 (2017/7/20)
本連載では、「データベースセキュリティに必要な対策」を学び、DBMSでの「具体的な実装方法」や「Tips」などを紹介していきます。今回は、「各種ガイドラインが示すコンプライアンス要件に、データベースのセキュリティはどのように記載されているのか」を解説します
![]() |
|
|
|
![]() |