top oracle interview questions
最もよくあるOracleインタビューの質問と回答:
オラクルのインタビューの上位40の質問と、オラクルのほぼすべての基本概念をカバーする回答。
これは、ほぼすべてのOracleインタビューの質問をカバーする詳細なシリーズです。
パート1: Oracle Basic、SQL、PL / SQLに関する質問 (この記事)
パート2: Oracle DBA、RAC、およびパフォーマンスチューニングに関する質問
パート#3: Oracle Forms andReportsの面接の質問
パート#4: OracleAppsおよびOracleSOAテクニカルインタビューの質問
シリーズの最初の記事から始めましょう。
この記事で取り上げる質問の種類:
- Oracleの基本的な面接の質問
- OracleSQLの面接の質問
- Oracle PL / SQLの面接の質問
理解のために、Oracleの基本を簡単な例で説明します。 Oracleの面接に参加する予定の場合は、この記事で取り上げるこれらの一連の質問が間違いなく非常に役立ちます。
先に進みましょう!!
Oracleの面接に関する上位の質問のリスト
Q#1)Oracleとは何ですか?また、その異なるエディションは何ですか?
回答: Oracleは、Oracle Corporationが提供する人気のあるデータベースの1つであり、リレーショナル管理の概念に取り組んでいるため、OracleRDBMSとも呼ばれます。これは、オンライントランザクション処理、データウェアハウジング、およびエンタープライズグリッドコンピューティングに広く使用されています。
Q#2)Oracle Databaseソフトウェアリリースをどのように識別しますか?
回答: Oracleは、リリースごとにいくつかの形式に従います。
例えば 、
リリース10.1.0.1.1は、次のように参照できます。
10: メジャーDBリリース番号
1: DBメンテナンスリリース番号
0: アプリケーションサーバーのリリース番号
1: コンポーネント固有のリリース番号
1: プラットフォーム固有のリリース番号
私のSQLインタビューの質問と回答pdf
Q#3)VARCHARとVARCHAR2をどのように区別しますか?
回答: VARCHARとVARCHAR2はどちらも、可変長の文字列を格納するために使用されるOracleデータ型です。それらの違いは次のとおりです。
- VARCHARは最大2000バイトの文字を格納でき、VARCHAR2は最大4000バイトを格納できます。
- VARCHAR2は未使用のスペースを解放するのに対し、VARCHARは、宣言中に定義された文字のスペースをすべて使用していなくても保持します。
Q#4)TRUNCATEコマンドとDELETEコマンドの違いは何ですか?
回答: 両方のコマンドは、データベースからデータを削除するために使用されます。
2つの違いは次のとおりです。
- TRUNCATEはDDL操作であり、DELETEはDML操作です。
- TRUNCATEはすべての行を削除しますが、テーブル構造はそのまま残します。 DELETEコマンドはロールバックできますが、コマンド実行の前後にCOMMITを発行するため、ロールバックできません。
- TRUNCATEコマンドはオブジェクトストレージスペースを解放しますが、DELETEコマンドは解放しません。
- TRUNCATEはDELETEに比べて高速です。
Q#5)RAWデータ型とはどういう意味ですか?
回答: RAWデータ型は、可変長のバイナリデータまたはバイト文字列を格納するために使用されます。
RAWデータ型とVARCHAR2データ型の違いは、PL / SQLがこのデータ型を認識しないため、RAWデータが異なるシステムに転送されるときに変換を実行できないことです。このデータ型は、クエリまたはテーブルへの挿入のみが可能です。
構文: RAW(精度)
Q#6)結合とはどういう意味ですか?結合のタイプをリストします。
回答: 結合は、いくつかの一般的な列または条件を使用して、複数のテーブルからデータを抽出するために使用されます。
以下にリストされているように、さまざまなタイプの結合があります。
- 内部結合
- アウタージョイン
- クロス結合またはデカルト積
- EQUI JOIN
- アンチジョイン
- SEMI JOIN
Q#7)SUBSTR関数とINSTR関数の違いは何ですか?
回答:
- SUBSTR関数は、指定された文字列から数値で識別されるサブパーツを返します。
- 例えば 、 (SELECT SUBSTR( 'India is my country'、1、4)fromdual)は「Indi」を返します。
- INSTRは、文字列内の部分文字列の位置番号を返します。
- 例えば 、 (SELECT INSTR( 'India is my country'、 'a')fromdual)は5を返します。
Q#8)Oracleテーブルで重複する値を見つけるにはどうすればよいですか?
回答: 以下のクエリ例を使用して、重複するレコードをフェッチできます。
SELECT EMP_NAME, COUNT (EMP_NAME) FROM EMP GROUP BY EMP_NAME HAVING COUNT (EMP_NAME) > 1;
Q#9)ON-DELETE-CASCADEステートメントはどのように行われますか 作業?
回答: ON DELETE CASCADEを使用すると、親テーブルからレコードが削除されると、子テーブルのレコードが自動的に削除されます。このステートメントは、外部キーで使用できます。
以下の一連のコマンドを使用して、既存のテーブルにON DELETECASCADEオプションを追加できます。
構文:
ALTER TABLE CHILD_T1 ADD CONSTRAINT CHILD_PARENT_FK REFERENCES PARENT_T1 (COLUMN1) ON DELETE CASCADE;
Q#10)NVL機能とは何ですか?どのように使用できますか?
回答: NVLは、式にnullが検出された場合に、ユーザーが値を置き換えるのに役立つ関数です。
以下の構文として使用できます。
NVL (Value_In, Replace_With)
Q#11)主キーと一意キーの違いは何ですか?
回答: 主キーは各テーブル行を一意に識別するために使用され、一意キーはテーブル列の値の重複を防ぎます。
以下にいくつかの違いを示します。
- 主キーはテーブル上で1つだけにすることができますが、一意のキーは複数にすることができます。
- 主キーはnull値を保持できませんが、一意キーは複数のnull値を許可します。
- 主キーはクラスター化インデックスであり、一意キーは非クラスター化インデックスです。
Q#12)TRANSLATEコマンドはREPLACEとどのように異なりますか?
回答: TRANSLATEコマンドは、指定された文字列内の文字を置換文字とともに1つずつ変換します。 REPLACEコマンドは、1文字または文字セットを完全な置換文字列に置き換えます。
例えば:
TRANSLATE (‘Missisippi’,’is’,’15) => M155151pp1 REPLACE (‘Missisippi’,’is’,’15) => M15s15ippi
Q#13)Oracleの現在の日付と時刻を確認するにはどうすればよいですか?
回答: OracleでSYSDATEコマンドを使用して、現在の日付と時刻を見つけることができます。
構文:
SELECT SYSDATE into CURRENT_DATE from dual;
Q#14)OracleでCOALESCE関数を使用するのはなぜですか?
回答: COALESCE関数は、式で提供される引数のリストから最初のnull以外の式を返すために使用されます。式には少なくとも2つの引数が必要です。
構文:
COALESCE (expr 1, expr 2, expr 3…expr n)
Q#15)テーブルSTUDENT_REPORTから5番目のRANK学生を取得するためのクエリをどのように記述しますか?
回答:クエリは次のようになります。
SELECT TOP 1 RANK FROM (SELECT TOP 5 RANK FROM STUDENT_REPORT ORDER BY RANK DESC) AS STUDENT ORDER BY RANK ASC;
Q#16)SQLクエリでGROUP BY句を使用するのはいつですか?
回答: GROUP BY句は、クエリ結果の1つ以上の列でデータを識別してグループ化するために使用されます。この句は、COUNT、MAX、MIN、SUM、AVGなどの集計関数でよく使用されます。
構文:
SELECT COLUMN_1, COLUMN_2 FROM TABLENAME WHERE (condition) GROUP BY COLUMN_1, COLUMN_2
Q#17)テーブルからデータをフェッチする最も簡単な方法は何ですか?
回答: データをフェッチする最も簡単な方法は、SQLクエリでROWIDを使用することです。
Q#18)DECODEステートメントとCASEステートメントはどこで使用しますか?
回答: DECODEステートメントとCASEステートメントはどちらもIF-THEN-ELSEステートメントのように機能し、互いの代替となります。これらの関数は、Oracleでデータ値を変換するために使用されます。
例えば:
DECODE機能
Select ORDERNUM, DECODE (STATUS,'O', ‘ORDERED’,'P', ‘PACKED,’S’,’SHIPPED’,’A’,’ARRIVED’) FROM ORDERS;
場合 関数
Select ORDERNUM , CASE (WHEN STATUS ='O' then ‘ORDERED’ WHEN STATUS ='P' then PACKED WHEN STATUS ='S' then ’SHIPPED’ ELSE ’ARRIVED’) END FROM ORDERS;
両方のコマンドは、それぞれのステータスが次のように注文番号を表示します。
もし、
ステータスO =注文済み
ステータスP =パック済み
ステータスS =出荷済み
ステータスA =到着
Q#19)データベースに整合性制約が必要なのはなぜですか?
回答: データベースの整合性を維持し、テーブルへの無効なデータの入力を防ぐために、ビジネスルールを適用するには、整合性制約が必要です。下記の制約の助けを借りて、テーブル間の関係を維持することができます。
主キー、外部キー、一意キー、NOT NULL&CHECKなどのさまざまな整合性制約を使用できます。
Q#20)OracleのMERGEとはどういう意味ですか?2つのテーブルをマージするにはどうすればよいですか?
回答: MERGEステートメントは、2つのテーブルのデータをマージするために使用されます。ソーステーブルからデータを選択し、MERGEクエリで提供された条件に基づいて他のテーブルにデータを挿入/更新します。
構文:
MERGE INTO TARGET_TABLE_1 USING SOURCE_TABLE_1 ON SEARCH_CONDITION WHEN MATCHED THEN INSERT (COL_1, COL_2…) VALUES (VAL_1, VAL_2…) WHERE WHEN NOT MATCHED THEN UPDATE SET COL_1=VAL_1, COL_2=VAL_2… WHEN
Q#21)Oracleでの集計関数の使用は何ですか?
回答: 集計関数は、値のセットに対してサマリー操作を実行して、単一の値を提供します。計算を実行するためにコードで使用するいくつかの集計関数があります。 これらは:
- AVG
- MIN
- MAX
- カウント
- 和
- STDEV
Q#22)集合演算子UNION、UNION ALL、MINUS&INTERSECTは何を意味しますか?
回答: set演算子は、列と相対データ型がソーステーブルで同じである場合、ユーザーが2つ以上のテーブルから一度にデータをフェッチするのを容易にします。
- 連合 演算子は、重複する行を除く両方のテーブルからすべての行を返します。
- UNION ALL 重複する行とともに、両方のテーブルからすべての行を返します。
- マイナス 2番目のテーブルには存在しない最初のテーブルから行を返します。
- 交差する 両方のテーブルの共通の行のみを返します。
Q#23)Oracleで日付をcharに変換できますか?変換する場合、構文はどうなりますか?
回答: TO_CHAR関数を使用して、上記の変換を行うことができます。
構文:
SELECT to_char (to_date ('30-01-2018', 'DD-MM-YYYY'), 'YYYY-MM-DD') FROM dual;
Q#24)データベーストランザクションとはどういう意味ですか?Oracleで利用できるすべてのTCLステートメントは何ですか?
回答: トランザクションは、SQLステートメントのセットが一度に実行されるときに発生します。これらのステートメントの実行を制御するために、オラクルはTCL、つまり一連のステートメントを使用するトランザクション制御ステートメントを導入しました。
ステートメントのセットは次のとおりです。
- コミット: トランザクションを永続的にするために使用されます。
- ロールバック: DBの状態をロールバックして、コミットポイントを継続するために使用されます。
- セーブポイント: 後でロールバックを実行できるトランザクションポイントを指定するのに役立ちます。
Q#25)データベースオブジェクトから何がわかりますか?それらのいくつかをリストできますか?
回答: データまたはデータの参照をデータベースに格納するために使用されるオブジェクトは、データベースオブジェクトと呼ばれます。データベースは、テーブル、ビュー、インデックス、制約、ストアドプロシージャ、トリガーなど、さまざまなタイプのDBオブジェクトで構成されています。
Q#26)ネストされたテーブルとは何ですか?通常のテーブルとどのように異なりますか?
回答: ネストされたテーブルはデータベースコレクションオブジェクトであり、テーブルの列として格納できます。通常のテーブルを作成するときに、ネストされたテーブル全体を1つの列で参照できます。ネストされたテーブルには、行の制限がない列が1つだけあります。
例えば:
CREATE TABLE EMP ( EMP_ID NUMBER, EMP_NAME TYPE_NAME)
ここでは、通常のテーブルをEMPとして作成し、ネストされたテーブルTYPE_NAMEを列として参照しています。
Q#27)画像をデータベースに保存できますか?保存できる場合はどうすればよいですか?
回答: BLOBはBinaryLarge Objectの略で、画像、オーディオおよびビデオファイル、または一部のバイナリ実行可能ファイルを保持するために一般的に使用されるデータ型です。このデータ型には、最大4GBのデータを保持する容量があります。
Q#28)データベーススキーマで何を理解し、何を保持していますか?
回答: スキーマは、このスキーマ内で新しいオブジェクトを作成または操作できるデータベースユーザーが所有するデータベースオブジェクトのコレクションです。スキーマには、テーブル、ビュー、インデックス、クラスター、ストアドプロシージャ、関数などのDBオブジェクトを含めることができます。
Q#29)データディクショナリとは何ですか?どのように作成できますか?
回答: 新しいデータベースが作成されるたびに、データベース固有のデータディクショナリがシステムによって作成されます。このディクショナリはSYSユーザーが所有し、データベースに関連するすべてのメタデータを保持します。読み取り専用のテーブルとビューのセットがあり、SYSTEMテーブルスペースに物理的に格納されます。
Q#30)ビューとは何ですか?テーブルとの違いは何ですか?
回答: ビューは、後で参照できるSQLクエリの結果を格納するために使用されるユーザー定義のデータベースオブジェクトです。ビューはこのデータを物理的に保存するのではなく、仮想テーブルとして保存するため、論理テーブルと呼ぶことができます。
ビューは次のように表とは異なります。
- テーブルはデータを保持できますが、SQLクエリ結果は保持できませんが、ビューはクエリ結果を保存でき、別のSQLクエリ全体で使用できます。
- ビューは更新できませんが、テーブルは更新または削除できます。
Q#31)デッドロック状態とはどういう意味ですか?
回答: デッドロックは、2人以上のユーザーが互いにロックされているデータを同時に待機している状況です。したがって、すべてのユーザーセッションがブロックされます。
Q#32)インデックスとはどういう意味ですか?
回答: インデックスはスキーマオブジェクトであり、テーブル内のデータを効率的に検索するために作成されます。インデックスは通常、最もアクセスされるテーブルの特定の列に作成されます。インデックスは、クラスター化または非クラスター化できます。
Q#33)OracleデータベースのROLEとは何ですか?
回答: 個々のユーザーに個々のオブジェクトへのアクセスを許可することは、困難な管理タスクです。このジョブを簡単にするために、共通の特権のグループがデータベースに作成されます。これはROLEと呼ばれます。作成されたROLEは、GRANT&REVOKEコマンドを使用して、ユーザーに割り当てたり、ユーザーから取り消すことができます。
構文:
CREATE ROLE READ_TABLE_ROLE; GRANT SELECT ON EMP TO READ_TABLE_ROLE; GRANT READ_TABLE_ROLE TO USER1; REVOKE READ_TABLE_ROLE FROM USER1;
Q#34)CURSORにある属性は何ですか?
回答:CURSORには、以下に示すさまざまな属性があります。
(i)%FOUND :
- カーソルが宣言されているが閉じられている場合は、INVALID_CURSORを返します。
- フェッチが行われていないがカーソルが開いている場合のみNULLを返します。
- 行が正常にフェッチされた場合はTRUEを返し、行が返されない場合はFALSEを返します。
(ii)見つかりません :
- カーソルが宣言されているが閉じられている場合は、INVALID_CURSORを返します。
- フェッチが行われていないがカーソルが開いている場合のみNULLを返します。
- 行が正常にフェッチされた場合はFALSEを返し、行が返されない場合はTRUEを返します
(iii)%ISOPEN :カーソルがOPENの場合はTRUEを返し、そうでない場合はFALSEを返します。
(iv)%ROWCOUNT :フェッチされた行の数を返します。
Q#35)PLSQLで%ROWTYPEと%TYPEを使用するのはなぜですか?
回答: %ROWTYPEおよび%TYPEは、データベースで定義された表のデータ型を継承できるPL / SQLの属性です。これらの属性を使用する目的は、データの独立性と整合性を提供することです。
データベースでデータ型または精度のいずれかが変更されると、PL / SQLコードは変更されたデータ型で自動的に更新されます。
%TYPEは、テーブル列と同じデータ型を持つ必要がある変数を宣言するために使用されます。
一方、%ROWTYPEは、テーブルの構造に類似した構造を持つレコードの完全な行を定義するために使用されます。
Q#36)PL / SQLでストアドプロシージャと関数を作成するのはなぜですか?また、それらはどのように異なりますか?
回答: ストアドプロシージャは、特定のタスクを実行するために記述されたSQLステートメントのセットです。これらのステートメントは、割り当てられた名前でデータベースにグループとして保存でき、同じものにアクセスするためのアクセス許可があれば、異なるプログラムと共有できます。
関数も特定のタスクを実行するために作成されたサブプログラムですが、両方の間に違いがあります。
ストアドプロシージャ | 機能 |
---|---|
ストアドプロシージャは値を返す場合と返さない場合があり、複数の値を返すこともできます。 | 関数は常に単一の値のみを返します。 |
ストアドプロシージャには、挿入、更新、削除などのDMLステートメントを含めることができます。 | 関数でDMLステートメントを使用することはできません。 |
ストアドプロシージャは関数を呼び出すことができます。 | 関数はストアドプロシージャを呼び出すことはできません。 |
ストアドプロシージャは、Try / Catchブロックを使用した例外処理をサポートしています。 | 関数はTry / Catchブロックをサポートしていません。 |
Q#37)ストアドプロシージャを通過できるパラメータは何ですか?
C ++プログラミングは何に使用されますか
回答: ストアドプロシージャを介してIN、OUT、およびINOUTパラメータを渡すことができ、プロシージャ自体を宣言するときに定義する必要があります。
Q#38)トリガーとは何ですか?そのタイプは何ですか?
回答: トリガーは、何らかのイベントが発生したときに自動的に実行されるように記述されたストアドプログラムです。このイベントは、任意のDMLまたはDDL操作にすることができます。
PL / SQLは、次の2種類のトリガーをサポートしています。
- 行レベル
- ステートメントレベル
Q#39)PL / SQLでグローバル変数とローカル変数をどのように区別しますか?
回答: グローバル変数は、プログラムの最初に定義され、最後まで存続する変数です。プログラム内の任意のメソッドまたはプロシージャからアクセスできますが、ローカル変数へのアクセスは、宣言されているプロシージャまたはメソッドに制限されます。
Q#40)PL SQLのパッケージは何ですか?
回答: パッケージは、Oracleデータベースに格納されている、ストアドプロシージャ、関数、タイプ、トリガー、カーソルなどの関連するデータベースオブジェクトのグループです。これは、許可されている場合に複数のアプリケーションからアクセスできる、関連オブジェクトの一種のライブラリです。
PL / SQLパッケージ構造は、パッケージ仕様とパッケージ本体の2つの部分で構成されています。
結論
上記の一連の質問が、オラクルが何であるかを垣間見るのに役立つことを願っています。
すべての基本的な概念を完全に理解している場合でも、面接でそれを提示する方法は非常に重要です。したがって、落ち着いて、ためらうことなく自信を持って面接に直面してください。
次のパート2を読む: Oracle DBA、RAC、およびパフォーマンスチューニングに関する質問
皆様のご成功をお祈り申し上げます!!