問1 ..................................................................................................
以下の SQL文について、エラーが発生する箇所を1つ選びなさい。
ただし、列名や表名には誤りはないものとします。
select ENAME, DNAME
from EMP natural join DEPT
using(DEPTNO);
a.1行目「select ENAME, DNAME」
b.2行目「from EMP natural join DEPT」
c.3行目「using(DEPTNO);」
d.エラーは発生しない
→回答と解説
問2 ..................................................................................................
表の削除に関する説明のうち、誤っているものをすべて選びなさい。
a.表のすべてのレコードが削除される
b.表に関係する索引がすべて削除される
c.表に関係する索引は削除されない
d.表に関係するビューがすべて削除される
e.表に関係するビューは削除されない
→回答と解説
問3 ..................................................................................................
以下の SQL文の結果として正しいものを選びなさい。
SQL> select initcap('oracle sql') from dual;
a.oracle sql
b.ORACLE SQL
c.Oracle sql
d.Oracle Sql
e.ORACLE sql
→回答と解説
問4 ..................................................................................................
下記の外部結合に関する説明について、空欄に当てはまる語句を選びなさい。
外部結合は、等価・非等価結合で戻される行に加え、他方の表の行とは一致し
ない行を戻す結合です。 WHERE句の結合条件に、外部結合演算子「( 1 )」 を
使用します。その際、外部結合演算子は右辺・左辺どちらにもつける事ができ
ますが、一致する行を持って( 2 )方に付けます。
a. 1 + 2 いない
b. 1 + 2 いる
c. 1 - 2 いない
d. 1 - 2 いる
e. 1 * 2 いない
f. 1 * 2 いる
→回答と解説
問5 ..................................................................................................
TO_CHAR関数を使用し、DATE型のデータを「01月01日 (月曜日)」の形式で表示
させます。正しいものを1つ選びなさい。
a.MM"月"DD"日 (" DAY ")"
b.MM"月"DAY"日 (" DD ")"
c.MON"月"DD"日 (" DAY ")"
d.MON"月"DAY"日 (" DD ")"
e.MONTH"月"DD"日 (" DAY ")"
f.MONTH"月"DAY"日 (" DD ")"
→回答と解説
問6 ..................................................................................................
Oracleデータベースの環境変数として正しくないものを選びなさい。
a.NLS_LANG
b.ORACLE_HOME
c.ORACLE_LANG
d.ORA_NLS33
e.ORACLE_SID
→回答と解説
問7 ..................................................................................................
デフォルトリスナーを開始するコマンドとして正しいものをすべて選びなさい。
a.lsnrctl stop
b.lsnrctl start
c.lsnrctl start LISTENER
d.lsnrctl restart
e.lsnrctl restart LISTENER
→回答と解説
問8 ..................................................................................................
従業員(EMP)表より、給与(SAL列)が最も高い従業員を検索する SQL文
として正しいものを選びなさい。
a.SELECT ename FROM emp WHERE ename = max(sal);
b.SELECT ename FROM emp WHERE sal = (SELECT max(sal) FROM emp);
c.SELECT ename FROM emp WHERE sal = max(sal);
d.SELECT ename,max(sal) FROM emp;
→回答と解説
問9 ..................................................................................................
次の文の中で、正しく実行されないものを選びなさい。
a.SELECT COUNT(DISTINCT job) FROM emp;
b.SELECT COUNT(job, mgr) FROM emp;
c.SELECT MAX(sal), AVG(sal) FROM emp;
d.SELECT MAX(AVG(sal)) FROM emp GROUP BY deptno;
→回答と解説
問10 ................................................................................................
複数行副問合せで使用できる条件をすべて選びなさい。
a.ANY
b.=
c.>=
d.<>
e.IN
→回答と解説
結合の際、自然結合「NATURAL JOIN句」を使用すると、結合列を明示的に指定
する必要がなくなります。結合する表において、一致する名前とデータ型を持
つ列に基づいて自動的に結合が行われます。
※注意点
・両方の表で同じ名前とデータ型を持つ列に関してのみ結合が行われる
・共通の列が複数存在すれば、それらがすべて結合に使用される
・共通の列が複数存在するが、その中の一部の列だけを結合条件として使用したい場合は、USING句を使用する
・NATURAL JOIN句とUSING句は一緒には使えない
・結合列は、表名または別名で修飾してはいけない
よって、問題の問い合わせは、
SQL> select ENAME,DNAME from EMP natural join DEPT;
または
SQL> select ENAME,DNAME from EMP join DEPT using(DEPTNO);
とする必要があります。
表を削除すると、表内のデータ(レコード)及び、関連する索引が削除さ
れます。ただし、削除対象表を元に作成したビューは、削除されません。
「INITCAP関数」は、各単語の最初の文字を大文字、残りの文字を小文字にして
戻します。空白または英数字以外の文字で区切られたものをひとつの単語として
扱います。
SQL> select initcap('oracle sql') from dual;
INITCAP('oracle sql')
---------------------
Oracle Sql
正しい外部結合の説明は、以下のようになります。
外部結合は、等価・非等価結合で戻される行に加え、他方の表の行とは一致し
ない行を戻す結合です。 WHERE句の結合条件に、外部結合演算子「+」 を
使用します。その際、外部結合演算子は右辺・左辺どちらにもつける事ができ
ますが、一致する行を持っていない方に付けます。
SQL 文を実行すると、下記のようになります。
SQL> select to_char(sysdate,'MM"月"DD"日 (" DAY ")"') from dual;
04月10日 ( 火曜日 )
※日付書式
YYYY 4桁の年(西暦)
YYY 下3桁の年
YY 下2桁の年
Y 下1桁の年
MM 月(01〜12)
MONTH 月(1月〜12月)
MON 月の省略英語表記(JAN〜DEC)
DD 日(1〜31)
DAY 曜日(日曜日〜土曜日)
DY 省略した曜日(日〜土)
D 週における曜日(日=1〜土=7)
HH/HH12 時間(12時間制表記)
HH24 時間(24時間制表記)
MI 分
SS 秒
各環境変数は、以下のようになります。
ORACLE_HOME :Oracleインストールディレクトリ
ORACLE_SID :インスタンス名
ORA_NLS33 :データベースで使用するキャラクタセット
NLS_LANG :「NLS_LANG=言語_地域.文字コードセット」の形式で指定
言語:Oracleのメッセージ、月日の名前等
地域:デフォルトの日付書式、十進数の表示規定等
文字コードセット:接続するユーザやアプリケーションが使用する文字コード
リスナーは、リスナー制御ユーティリティ(LSNRCTL) を使用して実行します。
$ lsnrctl
LSNRCTL>
LSNRCTL> コマンド
または
$ lsnrctl コマンド
として実行します。
※リスナーの起動・停止
LSNRCTL> START [リスナー名]
LSNRCTL> STOP [リスナー名]
※リスナー名を省略した場合
・カレントリスナーが対象
・カレントリスナーは 「SET CURRENT_LISTENER リスナー名」で設定
・上記のコマンドを実行していない場合、デフォルトリスナー「LISTENER」が対象となる
各選択肢の実行結果は以下のようになります。
a.SELECT ename FROM emp WHERE ename = max(sal);
c.SELECT ename FROM emp WHERE sal = max(sal);
→ORA-00934: ここではグループ関数は使用できません。
WHERE句でグループ関数を使用することはできません。
d.SELECT ename,max(sal) FROM emp;
→ORA-00937: 単一グループのグループ関数ではありません。
グループ化していない行とグループ関数を同時に指定するとエラーになります。
それぞれの実行結果は以下のようになります(例)。
a.SELECT COUNT(DISTINCT job) FROM emp;
COUNT(DISTINCTJOB)
------------------
149
b.SELECT COUNT(job, mgr) FROM emp;
SELECT COUNT(job, mgr) FROM emp
*
1行でエラーが発生しました。
ORA-00909: 引数の個数が無効です。
c.SELECT MAX(sal), AVG(sal) FROM emp;
MAX(SAL) AVG(SAL)
-------- --------
5000 2000
d.SELECT MAX(AVG(sal)) FROM emp GROUP BY deptno;
MAX(AVG(SAL))
-------------
3000
副問合せは、返される行数、列で、以下のように分類できます。
・単一行副問合せ:1行のみが返される
・複数行副問合せ:複数行が返される
・複数列副問合せ:複数列のデータが返される
下記の複数行条件は、複数行が戻される場合(複数行副問合せ)
に使用できます。
・IN :副問合せの結果のいずれかと等しい
・NOT IN :副問合せの結果のいずれかと等しくない
・=ANY :副問合せの結果のいずれかと等しい
・>ANY :副問合せの結果の最小値より大きい
・<ANY :副問合せの結果の最大値より小さい
・>ALL :副問合せの結果の最大値よりも大きい
・<ALL :副問合せの結果の最小値よりも大きい
複数行副問合せでは、単一行条件( = 、 <> など)は使用できません。
Copyright © 2006 mari. All rights reserved. |
|