ORACLE MASTER Silver合格のツボotn.oracle.co.jp/event/ows/d3.pdf · BLOB バイナリ・...

57
[ D-3 ] ORACLE MASTER Silver合格のツボ

Transcript of ORACLE MASTER Silver合格のツボotn.oracle.co.jp/event/ows/d3.pdf · BLOB バイナリ・...

[ D-3 ]ORACLE MASTER Silver合格のツボ

アジェンダ•• OracleOracle入門入門 SQLSQL編編

–– SELECTSELECT文によるデータの検索文によるデータの検索

–– SQL*PlusSQL*Plus

–– DMLDMLによるデータの操作、トランザクションによるデータの操作、トランザクション

•• OracleOracle入門入門 データベース編データベース編–– 表の作成および管理表の作成および管理

–– ビュー、順序、索引、シノニムビュー、順序、索引、シノニム

–– ユーザー・アクセスの制御ユーザー・アクセスの制御

•• ORACLE MASTER ORACLE MASTER 取得に向けて取得に向けて

•• 付録付録 ::ORACLE MASTER Silver ORACLE MASTER Silver 追加問題追加問題

OracleOracle入門入門SQLSQL編編

•• SELECTSELECT文によるデータの検索文によるデータの検索•• SQL*PlusSQL*Plus

•• DMLDMLによるデータの操作、トランザクションによるデータの操作、トランザクション

??データの検索データの検索

表A 表B

-- 行の選択行の選択 -- 列の選択列の選択

-- 結合結合 -- SQLSQL関数関数の使用の使用

-- 副問合せ副問合せ

SELECT文の機能

Oracle入門SQL編

??hiredatehiredate列の値(日付型)を 列の値(日付型)を "2001/08/24 12:00:00""2001/08/24 12:00:00"  のように表示するにはどのように指定すればよいですのように表示するにはどのように指定すればよいですか?か?正しいものを選択してください。正しいものを選択してください。

Oracle入門SQL編

a. TO_CHAR(a. TO_CHAR(hiredatehiredate,, 'yyyy'yyyy/mm//mm/dd hhdd hh::mimi::ss'ss'))

b. TO_DATE(b. TO_DATE(hiredatehiredate,, 'yyyy'yyyy/mm//mm/dd hhdd hh::mimi::ss'ss'))

c. TO_CHAR(c. TO_CHAR(hiredatehiredate, ", "yyyyyyyy/mm//mm/dd hhdd hh::mimi::ssss") ")

d. TO_DATE(d. TO_DATE(hiredatehiredate, ", "yyyyyyyy/mm//mm/dd hhdd hh::mimi::ssss") ")

問題

?正解:a

Oracle入門SQL編

TO_CHARTO_CHAR関数関数……文字型への変換文字型への変換

TO_CHAR(TO_CHAR(日付型データ日付型データ, ', '日付書式日付書式')')TO_CHAR(TO_CHAR(数値型データ数値型データ, ', '数値書式数値書式')')

解答/解説

数値型 文字型 日付型1,2,3,... a,b,c,... 2001/08/24...

TO_CHARTO_CHAR TO_CHARTO_CHAR

TO_NUMBERTO_NUMBER TO_DATETO_DATE

??給与が全社員の平均給与以上である社員の社員給与が全社員の平均給与以上である社員の社員番号、社員名、給与を検索する番号、社員名、給与を検索するSELECTSELECT文として正文として正しいものを選択してください。しいものを選択してください。

Oracle入門SQL編

a. SELECTa. SELECT enoeno,, enameename,, salsal FROMFROM empempWHEREWHERE salsal >= ALL(SELECT AVG(>= ALL(SELECT AVG(salsal) FROM) FROM empemp););

b. SELECTb. SELECT enoeno,, enameename,, salsal FROMFROM empempWHEREWHERE salsal >= (SELECT AVG(>= (SELECT AVG(salsal) FROM) FROM empemp););

c. SELECTc. SELECT enoeno,, enameename,, salsal FROMFROM empempHAVINGHAVING salsal >= AVG(>= AVG(salsal); );

d. SELECTd. SELECT enoeno,, enameename, AVG(, AVG(salsal) FROM) FROM empempGROUP BYGROUP BY salsal;;

問題

数値型数値型文字型文字型数値型数値型データ型データ型

給与給与社員名社員名社員番号社員番号内容内容

salsalenameenameenoeno列名列名

EMP(EMP(社員社員))表表

?正解:a, b

Oracle入門SQL編

副問合せ副問合せ

解答/解説

“JONESよりも高い給与を得ているのはだれか”““JONESJONESよりも高い給与を得ているのはだれかよりも高い給与を得ているのはだれか””

““JONESJONESよりも高い給与を得ているよりも高い給与を得ている従業員はだれか従業員はだれか””主問合せ

?? ““JONESJONESの給与はいくらかの給与はいくらか””??

副問合せ

??副問合せはカッコで囲む副問合せはカッコで囲む

??副問合せが戻す行数に注意する副問合せが戻す行数に注意する

??バッファ(バッファ内の編集、ファイル保存)バッファ(バッファ内の編集、ファイル保存)

??変数の使用変数の使用&dept_name, &&emp_nameDEFINE dept_name = EDUCATION

??SETSETコマンドによる環境設定コマンドによる環境設定SET ECHO OFFSET FEEDBACK 10

??検索結果の表示書式設定検索結果の表示書式設定COLUMN ename FORMAT a20 -JUSTIFY CENTER

SQL*Plus

Oracle入門SQL編

??SELECTSELECT文の表示結果を、文の表示結果を、11画面ずつ止めて画面ずつ止めて表示するコマンドとして正しいものを選択して表示するコマンドとして正しいものを選択してください。ください。

Oracle入門SQL編

a. SET ECHO ONa. SET ECHO ON

b. SET PAGESIZE ONb. SET PAGESIZE ON

c. SET TERMOUT ON c. SET TERMOUT ON

d. SET PAU ONd. SET PAU ON

問題

?正解:d

Oracle入門SQL編

SETSETコマンドコマンド……SQL*PlusSQL*Plusの環境設定の環境設定

解答/解説

• FEED[BACK] 「n行が選択されました。」のnを設定

• LIN[ESIZE] 1行に表示する文字数を設定

• PAGES[IZE] 1画面に表示する行数を設定

• PAU[SE] 1画面ごとの一時停止を設定

• ECHO ファイル実行時のコマンド表示を設定

•• FEED[BACK]FEED[BACK] 「「nn行が選択されました。」の行が選択されました。」のnnを設定を設定

•• LIN[ESIZE]LIN[ESIZE] 11行に表示する文字数を設定行に表示する文字数を設定

•• PAGES[IZE]PAGES[IZE] 11画面に表示する行数を設定画面に表示する行数を設定

•• PAU[SE]PAU[SE] 11画面ごとの一時停止を設定画面ごとの一時停止を設定

•• ECHOECHO ファイル実行時のコマンド表示を設定ファイル実行時のコマンド表示を設定

??各システム変数で設定各システム変数で設定できるできる値を確認値を確認((ON/OFFON/OFF、、数値、文字など)数値、文字など)

??SQL*PlusSQL*PlusコマンドとコマンドとSQLSQLコマンドの違いを確認コマンドの違いを確認

?INSERT

?UPDATE

?DELETE

Oracle入門SQL編

DML(データ操作言語)

データの挿入

データの更新

データの削除

??副問合せによるデータ操作が可能副問合せによるデータ操作が可能

??参照整合性制約に違反するデータは操作不可能参照整合性制約に違反するデータは操作不可能

??DMLDMLのほか、のほか、DCLDCL、、DDLDDLの分類を確認の分類を確認

??トランザクションの概念を確認トランザクションの概念を確認

DMLによるデータの操作

??以下の中から、トランザクションの説明と以下の中から、トランザクションの説明として正しいものを選択してください。して正しいものを選択してください。

Oracle入門SQL編

a. a. 論理的に一貫した複数の論理的に一貫した複数のDMLDMLから構成される。から構成される。

b. INSERTb. INSERT文や文やUPDATEUPDATE文だけでなく、文だけでなく、SELECTSELECT文もトラ文もトランザクションの構成要素になる。ンザクションの構成要素になる。

c. 1c. 1つのつのDDLDDL文から構成される文から構成される 。。

d. d. トランザクションで行ったデータの変更は、明示的にトランザクションで行ったデータの変更は、明示的にCOMMITCOMMITを発行しないかぎり確定されない。を発行しないかぎり確定されない。

問題

?正解:a, c

Oracle入門SQL編

トランザクションを構成するものトランザクションを構成するもの

解答/解説

- データに対して一貫した変更を行う複数のDML文- 1つのDDL文- 1つのDCL文

トランザクションの終了トランザクションの終了

- DCL文、DDL文の発行- データベースからの切断- マシンの障害やシステム・クラッシュ

OracleOracle入門入門データベース編データベース編

•• 表の作成および管理表の作成および管理•• ビュー、順序、索引、シノニムビュー、順序、索引、シノニム

•• ユーザー・アクセスの制御ユーザー・アクセスの制御

表の作成および管理

•• データ型データ型

•• 制約制約

•• 作成時に表のサイズの指定は不要作成時に表のサイズの指定は不要

•• オンラインで表定義を変更可能オンラインで表定義を変更可能–– 列の追加列の追加

–– 列のデータ型の変更列のデータ型の変更

–– 列の削除列の削除

–– 制約の追加、削除制約の追加、削除

Oracle入門データベース編

表の作成表名:表名:DEPTDEPT

CREATE TABLE DEPT (CREATE TABLE DEPT (    IDID number(7)number(7) PRIMARY KEYPRIMARY KEY,,    NAME NAME varchar2(30)varchar2(30) NOT NULLNOT NULL,,    REGION_IDREGION_ID number(2)number(2) REFERENCESREFERENCES

  REGION (ID) );REGION (ID) );

整数整数22桁桁可変長文字列可変長文字列整数整数77桁桁データ型データ型

REGIONREGION表表IDID列列外部キー参照表外部キー参照表

NOT NULLNOT NULLNOT NULLNOT NULLUNIQUEUNIQUE

NULL/UNIQUENULL/UNIQUE

外部キー外部キー主キー主キーキーのタイプキーのタイプ

REGION_IDREGION_IDNAMENAMEIDID列名列名

Oracle入門データベース編

基本的なデータ型データ型データ型 説明説明

VARCHAR2(VARCHAR2(sizesize)) 可変長文字データ可変長文字データ(最大(最大40004000バイト)バイト)

CHAR(CHAR(sizesize) ) 固定長文字データ固定長文字データ(最大(最大20002000バイト)バイト)

NUMBER(NUMBER(pp,,s)s) 可変長数値データ可変長数値データ

DATE DATE 日付および時刻値日付および時刻値

LONG LONG 可変長文字データ可変長文字データ(最大(最大22ギガバイト)ギガバイト)

CLOBCLOB 可変長文字データ可変長文字データ(最大(最大44ギガバイト)ギガバイト)

RAW RAW ・・LONG RAW LONG RAW バイナリ・データバイナリ・データ

BLOBBLOB バイナリ・データバイナリ・データ(最大(最大44ギガバイト)ギガバイト)

BFILEBFILE 外部ファイルに格納されたバイナリ・外部ファイルに格納されたバイナリ・データデータ(最大(最大44ギガバイト)ギガバイト)

Oracle入門データベース編

制約•• 無効なデータの入力を防止無効なデータの入力を防止

•• 表の列、あるいは複数の列に設定表の列、あるいは複数の列に設定

•• 制約の種類制約の種類–– NOT NULLNOT NULL–– UNIQUE (UNIQUE (一意キー制約一意キー制約))–– PRIMARY KEY (PRIMARY KEY (主キー制約主キー制約))–– FOREIGN KEY (FOREIGN KEY (参照整合性制約、外部キー制約参照整合性制約、外部キー制約))–– CHECKCHECK

Oracle入門データベース編

問題•• 制約に関する以下の記述で、制約に関する以下の記述で、誤っているもの誤っているものを選を選

択してください。択してください。

a. NOT NULLa. NOT NULL制約は、列制約構文でのみ定義可能である。制約は、列制約構文でのみ定義可能である。

b. FOREIGN KEYb. FOREIGN KEY制約の場合、制約の場合、USER_CONSTRAINTSUSER_CONSTRAINTSビューのビューのCONSTRAINT_TYPECONSTRAINT_TYPE列の値は列の値は''FF''になる。になる。

c. c. 制約に関連付けられた列を調べたいときは、制約に関連付けられた列を調べたいときは、USER_COL_CONSTRAINTSUSER_COL_CONSTRAINTSビューを問合せる。ビューを問合せる。

d. CHECKd. CHECK制約の中で、制約の中で、SYSDATESYSDATEを参照することはできない。を参照することはできない。

Oracle入門データベース編

解答/解説

?正解:b, ca. a. 既存の表に既存の表にNOT NULLNOT NULL制約を追加するとき制約を追加するとき

ALTER TABLE ALTER TABLE 表名表名       MODIFY (MODIFY (列名列名 NOT NULL);NOT NULL);

b. FOREIGN KEYb. FOREIGN KEY制約制約 →→ ''R'R'NOT NULLNOT NULL制約制約 →→ ''C'C'

c. USER_COL_CONSTRAINTSc. USER_COL_CONSTRAINTSというビューは存在しない。というビューは存在しない。

d. CURRVAL, NEXTVAL, USERd. CURRVAL, NEXTVAL, USERなども使用できない。なども使用できない。

Oracle入門データベース編

その他の基本的なオブジェクト

ビュービュー

1 1 ⇒⇒ 2 2 ⇒⇒ 33⇒⇒ 44 ⇒⇒ 5 5 ⇒⇒……

順序順序

索引索引

シノニムシノニム ORACLE

MIRACLEMIRACLE

Oracle入門データベース編

ビュー

EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO

----- -------- --------- ---- --------- ------ ----- -------

7839 KING PRESIDENT 17-NOV-81 5000 10

7782 CLARK MANAGER 7839 09-JUN-81 1500 300 10

7934 MILLER CLERK 7782 23-JAN-82 1300 10

7566 JONES MANAGER 7839 02-APR-81 2975 20

7788 SCOTT ANALYST 7566 09-DEC-82 3000 20

7876 ADAMS CLERK 7788 12-JAN-83 1100 20

7369 SMITH CLERK 7902 17-DEC-80 800 20

7902 FORD ANALYST 7566 03-DEC-81 3000 20

7698 BLAKE MANAGER 7839 01-MAY-81 2850 30

EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO

----- -------- --------- ---- --------- ------ ----- -------

7839 KING PRESIDENT 17-NOV-81 5000 10

7782 CLARK MANAGER 7839 09-JUN-81 1500 300 10

7934 MILLER CLERK 7782 23-JAN-82 1300 10

7566 JONES MANAGER 7839 02-APR-81 2975 20

7788 SCOTT ANALYST 7566 09-DEC-82 3000 20

7876 ADAMS CLERK 7788 12-JAN-83 1100 20

7369 SMITH CLERK 7902 17-DEC-80 800 20

7902 FORD ANALYST 7566 03-DEC-81 3000 20

7698 BLAKE MANAGER 7839 01-MAY-81 2850 30

•• 11つまたは複数の表のデータのサブセットのつまたは複数の表のデータのサブセットの論理的表現論理的表現

•• ビューを使うメリットビューを使うメリット–– データ・アクセスの制限データ・アクセスの制限

–– 複雑な問合わせを簡略化複雑な問合わせを簡略化

–– データの独立性を確保データの独立性を確保

–– 同じデータの異なるビューを同じデータの異なるビューを

提供提供

•• CREATE OR REPLACE VIEWCREATE OR REPLACE VIEW文で定義変更文で定義変更

EMPNO ENAME JOB ------ -------- -----------

7839 KING PRESIDENT7782 CLARK MANAGER7934 MILLER CLERK

ビュービュー

Oracle入門データベース編

順序

•• 一意の数値を生成一意の数値を生成

•• 主キーの作成に使用(複数のユーザーで共有可能)主キーの作成に使用(複数のユーザーで共有可能)

•• 順序名順序名..NEXTVALNEXTVAL、、順序名順序名..CURRVALCURRVALとして使用として使用

•• 連番を保証しない連番を保証しない

•• 定義変更は今後の順序番号のみに影響定義変更は今後の順序番号のみに影響

1 1 ⇒⇒ 2 2 ⇒⇒ 33⇒⇒ 44 ⇒⇒ 5 5 ⇒⇒……

Oracle入門データベース編

索引

•• 問合せのパフォーマンスを向上させる目的で作成する。問合せのパフォーマンスを向上させる目的で作成する。

•• Oracle ServerOracle Serverにより自動的に使用および保守により自動的に使用および保守→索引をたくさん付ければ良い、というわけではない。→索引をたくさん付ければ良い、というわけではない。

•• UNIQUEUNIQUE制約、制約、PRIMARY KEYPRIMARY KEY制約により、一意索引が制約により、一意索引が自動的に作成される。自動的に作成される。

Oracle入門データベース編

シノニム

•• オブジェクトにつける別名オブジェクトにつける別名

•• PUBLIC SYNONYMPUBLIC SYNONYM

•• PRIVATE SYNONYMPRIVATE SYNONYM

•• シノニムを使うメリットシノニムを使うメリット–– アクセスの単純化アクセスの単純化

–– セキュリティの向上セキュリティの向上

–– システム保守の容易性システム保守の容易性

ORACLE

MIRACLEMIRACLE

Oracle入門データベース編

索引に関する以下の記述で、索引に関する以下の記述で、誤っているもの誤っているものを選択を選択してください。してください。

a. UNIQUEa. UNIQUE制約が設定されている列には索引が自動作制約が設定されている列には索引が自動作成される。成される。

b. b. 複数の列の組合せに対して索引を作成することがで複数の列の組合せに対して索引を作成することができる。きる。

c. c. 索引はデータの挿入や削除のパフォーマンスを上げ索引はデータの挿入や削除のパフォーマンスを上げるためのオブジェクトである。るためのオブジェクトである。

d. d. 索引は索引はWHEREWHERE句の条件として頻繁に使用される列に句の条件として頻繁に使用される列に作成すると良い。作成すると良い。

問題

Oracle入門データベース編

解答/解説

a. a. 制約によって自動的に作成された索引を削除する制約によって自動的に作成された索引を削除するときは、制約を無効にする。ときは、制約を無効にする。

b. b. 複合索引と呼ぶ。複合索引と呼ぶ。

c. c. 挿入・削除が多い場合、索引のメンテナンスに負荷挿入・削除が多い場合、索引のメンテナンスに負荷がかかる。がかかる。

?正解:c

Oracle入門データベース編

ユーザー・アクセスの制御データベースデータベース管理者管理者((DBA)DBA)

ユーザーユーザー

ユーザー名およびパスワード権限

Oracle入門データベース編

権限

•• データベース・セキュリティデータベース・セキュリティ–– システム・セキュリティシステム・セキュリティ

–– データ・セキュリティデータ・セキュリティ

•• システム権限システム権限

•• オブジェクト権限オブジェクト権限

•• スキーマスキーマ「どのオブジェクトが誰の持ち物か」という概念「どのオブジェクトが誰の持ち物か」という概念

Oracle入門データベース編

オブジェクト権限の付与に関して、以下の中からオブジェクト権限の付与に関して、以下の中からエエラーになるものラーになるものを選択してください。を選択してください。(コマンド実行ユーザーは(コマンド実行ユーザーはEMPEMP表を所有し、表を所有し、DBDBににはユーザーはユーザーUSER01USER01が存在しているとします。)が存在しているとします。)

a. GRANT SELECT ON EMP TO USER01;a. GRANT SELECT ON EMP TO USER01;

b. GRANT ALL TO USER01;b. GRANT ALL TO USER01;

c. GRANT UPDATE ON EMP TO ALL;c. GRANT UPDATE ON EMP TO ALL;

d. GRANT ALL ON EMP TO PUBLIC;d. GRANT ALL ON EMP TO PUBLIC;

問題

Oracle入門データベース編

解答/解説

TO PUBLICTO PUBLIC権限を全ユーザーに付与権限を全ユーザーに付与

ALL ON ALL ON オブジェクト名オブジェクト名あるオブジェクトに関してすべてのあるオブジェクトに関してすべてのオブジェクト権限を付与オブジェクト権限を付与

?正解:b, c

Oracle入門データベース編

ORACLE MASTER取得に向けて

- 効果的なトレーニング -

Oracle Learning Solution• 3つのトレーニング形態

CBT(Computer Based Training)CBTCBT

(Computer Based Training)

講師による教室トレーニングマシン演習、質問対応

インターネット型トレーニング低価格、最新コンテンツ

CD-ROM型 トレーニング教材ネットワーク不要、じっくり学習

CBT(Computer Based Training)Net ClassNet Class

CBT(Computer Based Training)定期研修コース定期研修コース

Internet Based Training

スキル診断システム

自己学習システム

Net ClassNet Class (定期研修)(定期研修)学習ステップ学習ステップ 技術習得技術習得

• Webベースのトレーニング・サービス日本全国どこにいても、技術の習得が可能

• 新鮮な情報• 低価格• 多彩なメニュー体系

http://netclass.oracle.co.jp/

Computer Based Training

Net ClassNet ClassiNavigatoriNavigator (定期研修)(定期研修)学習ステップ学習ステップ 技術習得技術習得

• CD-ROM形式の自己学習教材電話代を気にせずに、じっくりセルフラーニング

• 音声とアニメーションの対話型教材

• Silver~Platinumに対応した学習内容• Net Class iNavigator と組合せると効果的

CComputeromputer BBasedased TTrainingraining

CBTCBT

http://www.oracle.co.jp/seminar/cbt/

付録付録ORACLE MASTER Silver ORACLE MASTER Silver

追加問題追加問題

??WHEREWHERE ((enameename = 'SMITH'= 'SMITH'OROR deptnodeptno = 20)= 20)OROR mgrmgr = 7369= 7369ANDAND commcomm IS NOT NULLIS NOT NULL

問題

この条件が評価される順番を答えてください。この条件が評価される順番を答えてください。

解答/解説

??WHEREWHERE ((enameename = 'SMITH'= 'SMITH'OROR deptnodeptno = 20)= 20)OROR mgrmgr = 7369= 7369ANDAND commcomm IS NOT NULLIS NOT NULL

①①

②②③③

① カッコで囲まれた部分を評価

② NOT → AND の順で評価

③ 最後にORを評価

「「numnum列の値列の値((数値型数値型))が、が、3030以上以上5050以下」と以下」と

いう条件を指定するいう条件を指定するWHEREWHERE句を句を22つあげてくつあげてく

ださい。ださい。

問題

3030 5050

??numnum BETWEEN 30 AND 50BETWEEN 30 AND 50

??numnum >= 30 AND>= 30 AND numnum <= 50<= 50

解答/解説

??BETWEENBETWEEN演算子は、「~以上~以下」という値の演算子は、「~以上~以下」という値の範囲をあらわす条件を作成範囲をあらわす条件を作成

??ININ演算子、演算子、LIKELIKE演算子についても、論理演算子や演算子についても、論理演算子や単一行関数の組合せで同じ条件を作成可能単一行関数の組合せで同じ条件を作成可能

順序に関する以下の記述で、順序に関する以下の記述で、誤っているもの誤っているものを選択を選択してください。してください。

a. a. 現在の順序番号は「順序名現在の順序番号は「順序名..CURRVALCURRVAL」」で取得できる。で取得できる。

b. b. 順序は一意な値を生成するが、必ず連番になるとは限ら順序は一意な値を生成するが、必ず連番になるとは限らない。ない。

c. c. 順序で生成した値を初期値に戻したいときは、順序で生成した値を初期値に戻したいときは、ALTERALTER  SEQUENCESEQUENCE文を使ってリセットできる。文を使ってリセットできる。

d. CREATE SEQUENCEd. CREATE SEQUENCE文で指定する文で指定するCACHECACHE句は、メモリに句は、メモリにキャッシュする順序番号の量を設定する。キャッシュする順序番号の量を設定する。

問題

c. c. 今後の順序番号のみが変更を受ける。今後の順序番号のみが変更を受ける。

d. CREATE SEQUENCEd. CREATE SEQUENCE文のオプションは他に、文のオプションは他に、STARTSTART  WITHWITH 開始番号開始番号

    INCREMENTINCREMENT  BYBY 増分値増分値CYCLE/NOCYCLECYCLE/NOCYCLE 循環するか循環するか

などがある。などがある。

解答/解説

?正解:b, c

a. NULLa. NULL値を検索することが多い列値を検索することが多い列

b. b. データ件数が少ない列データ件数が少ない列

cc. . WHEREWHERE句で指定される列句で指定される列

d. d. 外部キー列外部キー列

問題

一般的に、索引を一般的に、索引を作成しない方がよい作成しない方がよいと思われる列と思われる列を選択してください。を選択してください。

a. NULLa. NULL値には索引エントリが作成されない。値には索引エントリが作成されない。

b. b. 全表検索をした方が早い。全表検索をした方が早い。

?正解:a, b解答/解説

表に関するオブジェクト権限には、以下のようなもの表に関するオブジェクト権限には、以下のようなものがあります。このうち、列単位で指定できるオブジェがあります。このうち、列単位で指定できるオブジェクトクト権限を権限を選択してください。選択してください。

問題

DELETEDELETE

ALTERALTERUPDATEUPDATE

INDEXINDEXINSERTINSERT

REFERENCESREFERENCESSELECTSELECT

SELECTSELECT権限は列指定できない。権限は列指定できない。

ユーザーに対して、ある列を隠したいときは?ユーザーに対して、ある列を隠したいときは?

ビューを使用ビューを使用

解答/解説?正解:INSERT, UPDATE,

REFERENCES

問題

•• オブジェクトを格納する論理的な領域をオブジェクトを格納する論理的な領域を((  11  ))と呼びまと呼びま

す。またす。また((  11  ))は複数のファイルに関連付けられます。は複数のファイルに関連付けられます。

11つのつの((  11  ))には複数のオブジェクトを格納できます。には複数のオブジェクトを格納できます。

•• ((  11  ))の中でも、の中でも、((  22  ))にはにはOracleOracleシステム全体の情報システム全体の情報

や、データ・ディクショナリが格納されます。や、データ・ディクショナリが格納されます。

解答/解説

•• オブジェクトを格納する論理的な領域をオブジェクトを格納する論理的な領域を( ( 表領域表領域 ))と呼と呼

びます。またびます。また( ( 表領域表領域 ))は複数のファイルに関連付けらは複数のファイルに関連付けら

れます。れます。11つのつの( ( 表領域表領域 ))には複数のオブジェクトを格納には複数のオブジェクトを格納

できます。できます。

•• ( ( 表領域表領域 ))の中でも、の中でも、( ( SYSTEMSYSTEM表領域表領域 ))にはにはOracleOracleシシ

ステム全体の情報や、データ・ディクショナリが格納さステム全体の情報や、データ・ディクショナリが格納さ

れます。れます。

データベース

インスタンス

SGA

REDOログ・バッファ

データ・バッファ・キャッシュ

共有プール

データ・ディクショナリ・

キャッシュ

ライブラリ・キャッシュ

PMONDBW0SMON LGWRCKPT Others

ユーザー・プロセス

サーバー・プロセス

PGA

制御ファイル

データ・ファイル

アーカイブ・ログ・ファイル

パラメータ・ファイル

パスワード・ファイル

REDOログ・ファイル

Oracleアーキテクチャ

UPDATEUPDATE文実行時の処理を順に並べてください。文実行時の処理を順に並べてください。

a. a. バッファ・キャッシュ内の該当する行データを書き換える。バッファ・キャッシュ内の該当する行データを書き換える。

b. b. 実行計画に基づき、データ・ファイルから必要に応じて、データ実行計画に基づき、データ・ファイルから必要に応じて、データとロールバック・セグメントをロードする。とロールバック・セグメントをロードする。

c. c. 処理が完了した旨をユーザー・プロセスに報告する。処理が完了した旨をユーザー・プロセスに報告する。

d. d. 変更前のデータを、バッファ・キャッシュ内のロールバック・セグ変更前のデータを、バッファ・キャッシュ内のロールバック・セグメントに書き込む。メントに書き込む。

e. e. バッファ・キャッシュ上の変更するデータに対し、ロックをかける。バッファ・キャッシュ上の変更するデータに対し、ロックをかける。

f. f. 変更履歴を変更履歴をREDOREDOログ・バッファに書き込む。ログ・バッファに書き込む。

問題

解答/解説

•• バッファ・キャッシュ上の該当データを書き換えるバッファ・キャッシュ上の該当データを書き換える前に、前に、REDOREDOログ・バッファへの変更履歴の書きログ・バッファへの変更履歴の書き込みを行う。込みを行う。

•• ロールバック・セグメントによって読取り一貫性をロールバック・セグメントによって読取り一貫性を実現する。実現する。

?正解:b → e → f → d → a → c

SQL文データ検索

データ操作言語(DML)

データ定義言語(DDL)

トランザクション制御言語(DCL)

SELECT SELECT

INSERTINSERTUPDATEUPDATEDELETEDELETE

CREATECREATEALTERALTERDROPDROPRENAMERENAMETRUNCATETRUNCATEGRANTGRANTREVOKEREVOKE

COMMITCOMMITROLLBACKROLLBACKSAVEPOINTSAVEPOINT

問題次の句を並べ替えて次の句を並べ替えてSELECTSELECT文を完成させてく文を完成させてください。ださい。

a. WHERE job <> a. WHERE job <> ''PRESIDENTPRESIDENT ''

b. ORDER BYb. ORDER BY avgavg((salsal))

c. SELECTc. SELECT deptnodeptno,, avgavg((salsal) FROM) FROM empemp

d. HAVINGd. HAVING avgavg((salsal) > 2000) > 2000

e. GROUP BYe. GROUP BY deptnodeptno

解答/解説

SELECT [列名,] グループ関数(列名)FROM 表名[WHERE 条件式][GROUP BY グループ列名][HAVING グループの条件式][ORDER BY 列名];

SELECT [列名,] グループ関数(列名)FROM 表名[WHERE 条件式][GROUP BY グループ列名][HAVING グループの条件式][ORDER BY 列名];

評価順

OracleOracleの処理手順の処理手順1. 1. 各行に関して、各行に関して、WHEREWHERE句の条件を評価し句の条件を評価し2. 2. グループを形成しグループを形成し3. 3. グループ関数の値に関して、グループ関数の値に関して、HAVINGHAVING句の条件を評価し句の条件を評価し4. 4. ソートするソートする

?正解:c → a → e → d → b