SQLの面接で一般的に聞かれる質問とその回答

SQLのインタビューの質問はほぼ全ての面接で行われます。なぜならデータベース操作はアプリケーションで非常に一般的だからです。SQLとはStructured Query Languageの略で、データベースの通信や関係性データベースの管理に使用される特定のプログラミング言語です。SQLにはSELECTやINSERT、CREATE、DELETE、UPDATE、DROPなどのデータベース操作のための標準コマンドが含まれています。これにより、ユーザーはデータベースからデータを取得したりアップロードしたり、テーブル要素を作成したり削除したり、サーバーとプログラム間でのダイナミックなデータベースのやり取りを実装することができます。

SQLの面接での質問

SQL Interview Questions and Answers
    SQLは何ですか?

SQLは、最適化された形式と分類で配置されたデータベース管理システム内のデータをクエリや操作するためのドメイン固有のプログラミング言語です。SQLを使用することで、エントリや同じ属性やテーブルの列を読み取り、書き込み、選択、削除するコマンドを実装できます。また、SQLはプログラム、ウェブサイト、モバイルアプリケーションとデータベースの間にダイナミックなアクセス経路を効率的に作成する方法も提供しています。例えば、ユーザーウェブサイトでログイン情報を入力すると、SQLによってこれらのログ情報がデータベースに渡され、検証とユーザー制限が行われます。

データベースとリレーショナルデータベースの違いは何ですか?

データベースまたはデータベース管理システム(DBMS)およびリレーショナルデータベース管理システム(RDBMS)は、SQLによってデータと構造を保存するために両方使用されます。ただし、それぞれのデータベース管理システムは、異なる用途に応じて好まれます。両者の主な違いは、DBMSが情報をファイルとして保存するのに対し、RDBMSが情報を表形式で保存することです。また、「リレーショナル」というキーワードが示すように、RDBMSでは、主キー、外部キーなどを使用して異なるテーブル同士に関係を持たせることが可能です。これにより、テーブル間に動的な階層関係のチェーンが作成され、テーブルに対して有益な制限も提供されます。一方、DBMSは、階層的な方法またはナビゲーション的な方法でテーブルを整理します。これは、互いに独立したテーブルにデータを格納したり編集したりする際に便利です。SQLの基本構造は何ですか?

SQLは、関係演算の構造に基づいて構築されています。それは特定の修正と拡張に基づいています。非常に基本的なSQLクエリ形式は次のようです。

select A1, A2, ..., An

from R1, R2, ..., Rm

where P

### SQLコマンドの異なるカテゴリーは何ですか?

以下の4つのカテゴリーにSQLコマンドが分類されます。

  • DML (Data Manipulation Language) which provides data manipulation features
  • DDL (Data Definition Language) which is used to manipulate database structures
  • TCL (Transaction Control Language) that takes in charge data transaction verification and error handling
  • DCL (Data Control Language) are security statements that feature user restrictions and data access permissions to promote security of your data.
    SQLは何に使われていますか?

SQLは、データベース内の大量のエントリを非常に迅速かつ簡単な方法で処理する能力により、サーバーサイドのプログラマーによって使用され、人気があります。これにより、データの取得と操作において大幅な改善が可能となります。具体的に言えば、SQLはデータベースへのエントリの実行、取得、挿入、更新、削除を行う能力を提供します。また、テーブル、ビュー、データベースなどの構造を作成することもできますが、その際には一意の名前が必要です。 SELECT、INSERT、CREATE、DELETE、UPDATE、DROPのキーワードを定義してください。

  • SELECT keyword is used to highlight and get entries in rows from tables or views. It can also be accompanied by AS keyword to provide an alias. To filter the SELECT statement, WHERE clause may be included to provide filter conditions and select only the wished entries that satisfy the condition.
  • INSERT allows to add or insert a row or multiple rows in a database table. Accompanied by VALUES keyword lets you add a row with specific values. INSERT may also be accompanied with SELECT to insert the preselected row.
  • CREATE is a keyword used to create elements in SQL. It is usually accompanied with the keyword to be created such as CREATE DATABASE, CREATE TABLE, CREATE VIEW, etc.
  • DELETE keyword is used to deletes record(s) in a database. You should always use it carefully to avoid unwanted data loss. You may delete records you didn’t want to delete. Use WHERE clause to specify the range of the records you wish to delete.
  • UPDATE keyword updates or changes the existing data within an existing record. Be sure to note that the record must be existent.
  • DROP keyword drops or deletes a table within the database.
    SQLとP/L SQLの主な違いは何ですか?

SQLまたはStructured Query Languageは、リレーショナルデータベースと対話するために使用される言語です。データベースを操作したり作成する方法を提供します。一方、PL/SQLはSQLの機能を強化するために使用されるSQLの方言です。それは90年代初頭にOracle Corporationによって開発されました。それはプログラミング言語の手続き的な機能をSQLに追加します。13. データ定義言語とは何ですか?

DDLまたはデータ定義言語は、データベースの構造に直接影響するSQLコマンドに関連しています。DDLは、データ操作言語(DML)、トランザクション、セキュリティなども含むSQLコマンドの分類の一部です。DDLコマンドの特定の属性は、インデックス、オブジェクト、テーブル、ビュー、トリガなどを操作できる文です。SQLにおける人気のあるDDLキーワードは3つあります:

    1. 以下の文章を日本語で要約する:

CREATE – テーブルを作成するために使用される。
CREATE TABLE tableName (name data_type)。

ALTER – 表内のエントリや既存の列を変更するために使用される。
ALTER TABLE tableName [追加の構文、例えばADD、DROP、MODIFY]。

DROP – エントリ、制約、トリガー、インデックス、権限を含む既存のテーブルを削除するために使用される。基本的にはテーブルを削除する。
DROP TABLE tableName。

データ操作言語とは何ですか?

DMLまたはデータ操作言語は、データベース内のエントリを変更する権限をユーザーに与える能力に基づいて分類されたコマンドのセットです。これは、テーブル内のデータを挿入、取得、削除、または更新することを通じて行われます。これらの基本機能から生じる人気のあるDML文は、以下にリストされています。

  • SELECT – used to highlight a row within a table and retrieve it.
    SELECT [columnName] FROM [tableName]
  • UPDATE – used to update entries from existing tables.
    UPDATE [tableName] SET [value]
  • INSERT – used to insert entries into an existing table.
    INSERT INTO [tableName]
  • DELETE – used to delete entries from an existing table
    DELETE FROM [tableName]
    トランザクション制御言語(TCL)とは何ですか?

TCLは、主にデータベースのトランザクションと保存点に関わるSQLコマンドのカテゴリです。これらのキーワードは、開発者がデータベースの構造と振る舞いに定義したSQLの機能とロジックを実装します。TCLコマンドの例としては、以下のようなものがあります:COMMIT(トランザクションを確定するために使用される)、ROLLBACK(エラーが発生した場合、トランザクションをロールバックするために使用される)、SAVEPOINT(ロールバックの戻り地点を表すキーワード)、SET TRANSACTION(トランザクションの詳細を設定する)。### データ制御言語(DCL)とは何ですか?

データ制御言語またはDCLは、ユーザーへのアクセスや制限、およびSQLステートメント内で必要な権限や許可などを管理します。DCLのキーワードの例には、以下のものがあります。GRANT – 特定のデータベースへのユーザーのアクセスを提供するDCLキーワードです。REVOKE – GRANTキーワードの対義語です。ユーザーに与えられた権限を取り消します。テーブルとフィールドをデータベースで定義する。

データベースの観点から見ると、テーブルは整理されたエントリーの配置として言及されます。テーブルは更に、それぞれのテーブル行の異なるフィールドを含むセルに分割されます。フィールドはエントリーの単一要素を表すデータ構造に関係します。そして、それらはレコードにさらに整理されます。レコードは実際に単一のデータを保持しています。それらはデータの記憶割り当ての基本単位であり、アクセス可能です。

### SQLにおける異なる種類のキーは何ですか?

キーはRDMSの重要な機能であり、他のテーブルとの関連をリンクするフィールドであり、列の索引を管理することにより、高速なデータの検索とログ記録を促進します。異なる種類のキーには次のものがあります:プライマリキー – データベーステーブル内のレコードを識別するユニークなキーです。ユニークであるとは、Nullであってはならず、テーブル内でユニークでなければならないことを意味します。候補キー – 他のフィールドへの参照を必要とせず、列または複数の列を独立して識別するユニークなフィールドです。代替キー – プライマリキーの代わりに使用できるが、セカンダリと見なされるキーです。異なる点は、代替キーはNull値を持つことができることですが、列にはデータが必要です。一意キー – ヌルエントリ以外の行内で重複するデータを防止する制約を提供するキーです。他に利用できるキーは、外部キー、スーパーキー、コンポジットキーです。

22. データベースにおける異なる種類のインデックスをSQLで示し、それらを定義してください。

ユニークインデックス:ユニークにインデックスされた列内での重複エントリの登録を防ぎます。プライマリキーが利用可能な場合、自動的に生成されます。クラスタードインデックス:テーブル内のアレンジメントをキーの値に従って組織化または編集するために使用されます。各テーブルにはクラスタードインデックスは1つだけ設定できます。ノンクラスタードインデックス:逆に、ノンクラスタードインデックスはエントリ内の論理的な順序のみを管理します。アレンジメントは管理せず、テーブルには複数のノンクラスタードインデックスを持つことができます。

SQL(標準クエリ言語)は、データベースのフィールドと列との対話を提供するサーバープログラミング言語であります。しかし、MySQLはプログラミング言語ではなく、データベース管理システムの一種であり、具体的にはRDBMS(関係データベース管理システム)です。ただし、MySQLはSQLの構文を実装しています。27. ### UNIONとUNION ALLキーワードとは何か、またその違いはありますか?

SQLのUNION演算子は、SELECT文で強調された複数の集合を結合します。集合の制約は以下の通りです:(1)列の数は同じでなければならない、(2)集合内のデータ型は同じである必要があり、(3)SELECT文で強調された列の順序も同じである必要があります。この演算子は、SELECT文で強調された結果内の重複する行を自動的に除外します。UNION ALLはUNIONと同じ機能を持っていますが、重複する行を含めてすべてを結果に含めます。

SELECT C1, C2 FROM T1
UNION
SELECT Cx, Cy FROM T2;
    SQLにおける結合の異なるタイプについては、どのようなものがありますか?

「JOIN」キーワードは複数のテーブルからエントリーをクエリします。これらのエントリーを見つけるために異なるキーと一緒に使用され、フィールド間の関連にも気を配ります。

    1. 内部結合:テーブル間で共通している行を返します。

右結合:共通の行を含む右側のテーブルの行を返します。

左結合:共通の行を含む左側のテーブルの行を返します。

フル結合:共通の有無に関わらず、すべての行を返します。

正規化と非正規化とは何ですか?

データベース内の既存のテーブルとそのフィールドを正規化することにより、最小限の重複が生じるように配置されます。これにより、ユニークなフィールドを保持しながら、テーブルをできるだけ簡素化するために使用されます。逆にデノーマライゼーションは、データベース内のすべての正規形からフィールドを取得することを可能にします。正規化に関しては、逆の効果を持ち、テーブルに冗長性を追加します。

### WHERE句とHAVING句はいつ使用できますか?

両方の節は、フィールドを取得するための基準として使用される条件を受け入れますが、その違いは、WHERE節は静的な非集計列にのみ使用されるのに対し、HAVING節は集計列にのみ使用される点です。

select order_id, SUM(sale_amount) as TotalSale 
from SalesData 
where quantity>1 
group by order_id 
having SUM(sale_amount) > 100;
    UNION、MINUS、INTERSECTの違いは何ですか?

SQLで複数のSELECTクエリを結合するためにUNIONキーワードが使用されますが、結果セットから重複した行を削除します。INTERSECTキーワードは、複数のテーブル間でのSELECTクエリを使用して共通の行を取得するためにのみ使用されます。MINUSキーワードは基本的に2つのSELECTクエリの差集合を取ります。結果は最初のクエリと2番目のクエリの差分です。両方の結果セットに共通する行は最終的な出力から削除されます。35. ### テーブルから10レコードを選択する方法は?

MySQL: リミット句を使用して、例えば “SELECT * FROM Employee LIMIT 10;” となります。
Oracle: ROWNUM句を使用して、例えば “SELECT * FROM Employee WHERE ROWNUM < 10;” となります。
SQL Server: TOP句を使用して、例えば “SELECT TOP 3 * FROM Employee;” となります。

39. element(s) in another tableにおける要素の削除によって、テーブル内の要素の削除が行われる場合に、データベースの整合性を維持する方法はありますか?

テーブルAで削除される要素を聞き、テーブルBから対応する関連要素を削除するSQLトリガーを呼び出すことにより、それが可能です。テーブルAからテーブルBへのデータのコピーのプロセスは何ですか?

INSERT INTO TableB (columnOne, columnTwo, columnThree, ...)

SELECT columnOne, columnTwo, columnThree, ...

FROM TableA

WHERE added_condtion;
    IN句とEXISTS句の違いは何ですか?(INくとEXISTSくの違いは何ですか?)

以下のように日本語に自然に言い換えます。オプションは1つだけです。

二つの間に見られる明白な違いは、EXISTSキーワードがINキーワードに比べて実行時に比較的速いということです。これは、INキーワードがすべての既存のレコードを検索する必要があるのに対して、EXISTSキーワードは一致するレコードが見つかった時点で自動的に停止するためです。また、IN文はResultSet内で動作するのに対して、EXISTSキーワードは仮想テーブル上で動作します。この文脈では、IN文は仮想テーブルと関連づけられたクエリ上では動作せず、EXISTSキーワードはリンクされたクエリ上で使用されます。

43. データベース管理において、ACIDとは何の略ですか?

ACID(アシッド)の頭字語は、原子性(Atomicity)、一貫性(Consistency)、独立性(Isolation)、耐久性(Durability)を表しています。この特性は、主にデータベースシステムの処理の整合性を担当しています。つまり、ユーザーがデータトランザクションとしてデータベースに発行する内容は、完全かつ正確に行われる必要があり、持続性を備えているということです。44. ### SQLにおけるトリガーとは何ですか?

データベーストリガーとは、テーブルやビューにおいてレコードの挿入、更新、削除などのイベントに応じて自動的に実行されるプログラムです。主に、データベースの整合性を維持するために使用されます。

自動インクリメントは、新しいレコードがテーブルに挿入されるたびに生成される一意の番号をユーザーが作成できる機能です。オラクルではAUTO INCREMENTというキーワードが使用され、MySQLではAUTO_INCREMENT、SQL SERVERではIDENTITYキーワードが自動インクリメントに使用されます。このキーワードは、主キーをテーブルに作成するために主に使用されます。

コレーションは、文字を比較してソートするためのルールのセットです。文字列にも適用されます。MSSQLとMySQLのコレーションは、UTF-8などの特定のオプションを除いて、ほぼ同じ方法で動作します。通常の文字単位での比較に加えて、ASCII表現の観点からも文字列をソートして比較することができます。47. ### リカーシブストアドプロシージャとは何ですか?

自身を呼び出し、ある境界条件に達するまで繰り返し処理するストアドプロシージャ。この再帰的な関数または手続きは、プログラマーが同じコードセットを何度でも使用できるようにサポートします。48. ### SQLでパターンマッチングに使用されるクエリ演算子は何ですか?

答えはLIKE演算子です。LIKE演算子はパターンマッチングに使用され、-として使用することができます。

  • % – Matches zero or more characters.
  • _(Underscore) – Matching exactly one character.
    ハイバネートとは何ですか?そのSQLとの関係は何ですか?

ヒバネートは、Javaのオブジェクト関係マッピングツールです。ヒバネートを使用すると、オブジェクト指向のコードを記述し、内部でこれらをSQLクエリに変換してリレーショナルデータベースに対して実行することができます。ヒバネートは独自の言語であるHibernate Query Language(HQL)を使用します。HQLでは、ヒバネートのエンティティオブジェクトをクエリできることが特長です。また、ヒバネートにはCriteria Queryというオブジェクト指向のクエリ言語もあります。これは、フロントエンドアプリケーションで主にオブジェクトを使用する開発者にとって非常に有益で役立ちます。Criteria Queryは、セキュリティや制限アクセスなどのSQLのような機能をオブジェクトに追加することもできます。

このエラーは、通常、Oracleデータベースのカラム名の呼び出しに構文エラーがあるため表示されることがよくあります。エラーコードのORA識別子に注意してください。正しいカラム名を入力したことを確認してください。また、エラーで無効な識別子として参照されるエイリアスに特に注意してください。53.### SQLプロファイラーとは何ですか?

SQLプロファイラは、データベース開発者がデータベースエンジンのアクティビティを監視し追跡するためのグラフィカルユーザーインターフェースです。発生するイベントごとにアクティビティログを記録し、故障や不一致の分析を提供します。基本的には、SQL内のパフォーマンスの問題をデバッグし、トレースファイルのどの部分がSQLトランザクションの詰まりを引き起こしているかをより多目的な方法で確認するための診断機能です。

### Androidアプリに既存のSQLデータベースをリンクする方法はありますか?

これらをリンクするには、JDBC(Java Database Connectivity)ドライバーが必要です。また、関連する依存関係をbuild.gradleファイルに追加する必要があります。それに加えて、権限と許可も追加してください。

参考:Wikipedia

ウィキペディアを引用しています。

コメントを残す 0

Your email address will not be published. Required fields are marked *