logo

SQL インタビューの質問

SQL は、データベース内のデータにアクセスして操作するために使用される標準データベース言語です。の略です 構造化クエリ言語 1970 年代に IBM のコンピュータ科学者によって開発されました。 SQL はクエリを実行することで、MySQL、Oracle、PostgreSQL などのデータベース内のデータを作成、更新、削除、取得できます。全体として、SQL はデータベースと通信するクエリ言語です。

この記事では、 70 以上の SQL インタビューの質問と回答 MAANG や他の高給企業の SQL 開発者インタビューで尋ねられました。あなたが新人であっても、2 年、5 年、または 10 年の経験を持つ経験豊かなプロフェッショナルであっても、この記事は次の SQL 面接に合格するために必要な自信を与えてくれます。



目次

新人向け SQL 面接の質問と回答

1. SQLとは何ですか?

SQL Structured Query Language の略です。 SQL は、データベースと対話するために使用される言語です。つまり、データベースの作成、データベース内のテーブルの作成、データの取得やデータベース内のテーブルの更新などです。 SQL は、ANSI (米国規格協会) 規格です。 SQL を使用すると、さまざまなことができます。たとえば、クエリを実行したり、テーブルにレコードを挿入したり、レコードを更新したり、データベースを作成したり、テーブルを作成したり、テーブルを削除したりできます。



2. データベースとは何ですか?

データベース コンピュータ内の構造化された形式のデータ ストレージ、または組織化されたデータの集合として定義され、さまざまな方法でアクセスできます。また、スキーマ、テーブル、クエリ、ビューなどのコレクションでもあります。データベースは、コンピュータ上に保持されているデータを簡単に保存、アクセス、操作するのに役立ちます。データベース管理システムを使用すると、ユーザーはデータベースと対話できるようになります。

3. SQL はプログラミング言語機能をサポートしていますか?

SQL が言語であることは事実ですが、SQL はプログラミング言語ではなくコマンド言語であるため、プログラミングはサポートされていません。 SQL には for ループや if..else のような条件文はありません。データベース内のデータのクエリ、更新、削除などに使用できるコマンドのみがあります。 SQL を使用すると、データベース内のデータを操作できます。

4. SQL の CHAR データ型と VARCHAR2 データ型の違いは何ですか?

これらのデータ型は両方とも文字に使用されますが、varchar2 は可変長の文字列に使用され、char は固定長の文字列に使用されます。 例えば 、型を char(5) として指定すると、この変数に他の長さの文字列を格納することはできませんが、この変数の型を varchar2(5) として指定すると、格納することが許可されます。可変長の文字列。この変数には、長さ 3、4、または 2 の文字列を格納できます。



5. データ定義言語とは何を意味しますか?

データ定義言語 または DDL を使用すると、CREATE、DROP、ALTER などのクエリを実行できます。それがデータを定義するクエリです。

6. データ操作言語とはどういう意味ですか?

データ操作言語または DML は、データベース内のデータにアクセスしたり操作したりするために使用されます。これにより、以下の機能を実行できるようになります。

  • データベースにデータまたは行を挿入する
  • データベースからデータを削除する
  • データの取得またはフェッチ
  • データベース内のデータを更新します。

7. SQL のビューとは何ですか?

SQL のビュー 一種の仮想テーブルです。ビューには、データベース内の実際のテーブルと同様に、行と列も含まれます。データベース内に存在する 1 つ以上のテーブルからフィールドを選択することでビューを作成できます。ビューには、テーブルのすべての行を含めることも、特定の条件に基づいて特定の行を含めることもできます。

ビューの作成にはSQLのCREATE VIEW文を使用します。

基本的な構文:

CREATE VIEW view_name AS SELECT column1, column2..... FROM table_name WHERE condition;    view_name  : Name for the View   table_name  : Name of the table   condition  : Condition to select rows>

8. 外部キーとはどういう意味ですか?

外部キー は、別のテーブルの各行を一意に識別できるフィールドです。この制約は、フィールドを外部キーとして指定するために使用されます。つまり、このフィールドは別のテーブルの主キーを指します。これにより通常、2 つのテーブル間に一種のリンクが作成されます。

以下に示す 2 つのテーブルについて考えてみましょう。

注文

O_ID 注文番号 C_ID
1 2253 3
2 3325 3
3 4521 2
4 8532 1

お客様

C_ID 名前 住所
1 ラメシュ デリー
2 スレシュ ノイダ
3 ダーメッシュ グルガオン

明らかにわかるように、Orders テーブルのフィールド C_ID は Customers テーブルの主キーです。つまり、Customers テーブルの各行を一意に識別します。したがって、これは Orders テーブルの外部キーになります。

構文:

CREATE TABLE Orders ( O_ID int NOT NULL, ORDER_NO int NOT NULL, C_ID int, PRIMARY KEY (O_ID), FOREIGN KEY (C_ID) REFERENCES Customers(C_ID) )>

9. テーブルとフィールドとは何ですか?

テーブル: テーブルには行と列の組み合わせがあります。行はレコードと呼ばれ、列はフィールドと呼ばれます。 MS SQL Server では、テーブルはデータベース名とスキーマ名内で指定されます。

分野: DBMS では、データベース フィールドは、レコードからの単一の情報として定義できます。

10. 主キーとは何ですか?

主キー 候補キーの 1 つです。候補キーの 1 つが最も重要なものとして選択され、主キーになります。テーブル内に複数の主キーを含めることはできません。

11. デフォルト制約とは何ですか?

デフォルト 制約は、列にデフォルト値と固定値を入力するために使用されます。他の値が指定されない場合、値はすべての新しいレコードに追加されます。

12. 正規化とは何ですか?

これは、関数の依存関係と主キーに基づいて指定されたリレーション スキーマを分析し、次の望ましいプロパティを実現するプロセスです。

  1. 冗長性の最小化
  2. 挿入、削除、および更新の異常を最小限に抑える

プロパティを満たさない関係スキーマは、望ましいプロパティを満たす可能性のあるより小さな関係スキーマに分解されます。

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

非正規化 は、1 つ以上のテーブルに冗長データを追加するデータベース最適化手法です。これは、リレーショナル データベースでのコストのかかる結合を回避するのに役立ちます。非正規化は正規化を行わないという意味ではないことに注意してください。正規化後に適用される最適化手法です。

従来の正規化データベースでは、データを個別の論理テーブルに保存し、冗長データを最小限に抑えようとします。当社は、データベース内の各データのコピーを 1 つだけ保持するよう努める場合があります。

14. クエリとは何ですか?

アン SQL クエリはデータベースから必要なデータを取得するために使用されます。ただし、同じ結果が得られるものの、効率のレベルが異なる複数の SQL クエリが存在する場合があります。非効率的なクエリはデータベース リソースを消耗し、データベースの速度を低下させたり、他のユーザーへのサービスの損失を引き起こす可能性があります。したがって、最高のデータベース パフォーマンスを得るためにクエリを最適化することが非常に重要です。

15. サブクエリとは何ですか?

SQL では、 サブクエリ 別のクエリ内のクエリとして簡単に定義できます。言い換えれば、サブクエリは別の SQL クエリの WHERE 句に埋め込まれたクエリであると言えます。

16. SQL で使用できるさまざまな演算子には何がありますか?

SQL では次の 3 つの演算子を使用できます。

  1. 算術演算子
  2. 論理演算子
  3. 比較演算子

17. 制約とは何ですか?

制約は、テーブル内のデータの種類に適用できるルールです。つまり、制約を使用して、テーブル内の特定の列に格納できるデータの種類の制限を指定できます。詳細については、を参照してください。 SQL|制約 記事。

18. データの整合性とは何ですか?

データの整合性は、データベースに含まれるデータが正しく、一貫性があることと定義されます。そのためには、データベースに保存されるデータが一定の手順(ルール)を満たしている必要があります。データベース内のデータは正しく、一貫性がなければなりません。したがって、データベースに保存されるデータは、ある種の手順 (規則) を満たす必要があります。 DBMS は、このようなタイプの制約 (ルール) を実装するためのさまざまな方法を提供します。これにより、データベース内のデータの整合性が向上します。詳細については、を参照してください データセキュリティとデータ整合性の違い 記事。

19. 自動インクリメントとは何ですか?

場合によっては、テーブルの作成中にテーブル内に一意の識別子がないため、主キーの選択が困難になることがあります。このような問題を解決するには、すべてのレコードに一意のキーを手動で提供する必要がありますが、これも面倒な作業であることがよくあります。したがって、新しいレコードが挿入されるたびに主キーの数値を自動的に生成する自動インクリメント機能を使用できます。自動インクリメント機能はすべてのデータベースでサポートされています。詳細については、を参照してください SQL 自動インクリメント 記事。

20. MySQL 照合順序とは何ですか?

MySQL 照合順序は、対応するエンコーディングを使用して特定の文字セットの文字を比較するために使用される、明確に定義されたルールのセットです。 MySQL の各文字セットには複数の照合順序がある場合があり、少なくとも 1 つのデフォルトの照合順序があります。 2 つの文字セットが同じ照合順序を持つことはできません。詳細については、を参照してください MySQL の照合順序と文字セットとは何ですか? 記事。

JavaScript グローバル変数

21. ユーザー定義関数とは何ですか?

PL/SQL または Java のユーザー定義関数を使用して、SQL または SQL 組み込み関数では使用できない機能を提供できます。 SQL 関数とユーザー定義関数は、式が出現する場所であればどこにでも出現できます。

たとえば、次のような用途に使用できます。

  • SELECT ステートメントのリストを選択します。
  • WHERE 句の条件。
  • CONNECT BY、ORDER BY、START BY、GROUP BY
  • INSERT ステートメントの VALUES 句。
  • UPDATE ステートメントの SET 句。

22. ユーザー定義関数の種類とは何ですか?

ユーザー定義関数を使用すると、0 個以上のパラメーターを受け入れ、単一のスカラー データ値またはテーブル データ型を返すことができる独自の T-SQL 関数を定義できます。
作成されるさまざまな種類のユーザー定義関数は次のとおりです。

1. スカラーユーザー定義関数 スカラー ユーザー定義関数は、スカラー データ型の 1 つを返します。テキスト、イメージ、タイムスタンプのデータ型はサポートされていません。これらは、ほとんどの開発者が他のプログラミング言語で慣れているタイプのユーザー定義関数です。 0 から多くのパラメータを渡すと、戻り値が返されます。

2. インラインテーブル値のユーザー定義関数 インライン テーブル値のユーザー定義関数はテーブル データ型を返し、ユーザー定義関数はパラメータを T-SQL select コマンドに渡すことができ、本質的にパラメータ化された非パラメータを提供できるため、ビューの例外的な代替手段となります。 - 基礎となるテーブルの更新可能なビュー。

3. 複数ステートメントのテーブル値ユーザー定義関数 マルチステートメント テーブル値のユーザー定義関数はテーブルを返しますが、この関数は複数の T-SQL ステートメントをサポートして、ビューが 1 つの SELECT ステートメントに限定される最終結果を構築できるため、ビューの例外的な代替関数でもあります。また、パラメータを TSQL 選択コマンドまたはパラメータのグループに渡す機能により、基本的に、基礎となるテーブル内のデータのパラメータ化された更新不可能なビューを作成できるようになります。 create function コマンド内で、返されるテーブル構造を定義する必要があります。このタイプのユーザー定義関数を作成した後は、レコード セットを返すストアド プロシージャを使用する場合の動作とは異なり、T-SQL コマンドの FROM 句で使用できます。

23. ストアド プロシージャとは何ですか?

ストアド プロシージャ データベースに対して 1 つ以上の DML 操作を実行するために作成されます。これは、パラメータの形式で何らかの入力を受け入れ、何らかのタスクを実行し、値を返す場合も返さない場合もある SQL ステートメントのグループにすぎません。詳細については、当社の SQL のストアド プロシージャ 記事。

24. 集計関数とスカラー関数とは何ですか?

データに対して操作を実行するために、SQL には多くの組み込み関数があり、それらは 2 つのカテゴリに分類され、さらに各カテゴリの下で 7 つの異なる関数にサブ分類されます。カテゴリは次のとおりです。

  • 集計関数: これらの関数は、列の値から演算を実行するために使用され、単一の値が返されます。
  • スカラー関数: これらの関数はユーザー入力に基づいており、これらも単一の値を返します。

詳細については、こちらをお読みください。 SQL |関数 (集計関数とスカラー関数) 記事。

25. ALIAS コマンドとは何ですか?

エイリアスは、特定の SQL クエリの目的でテーブルまたは列に付けられる一時的な名前です。これは、列またはテーブルの名前が元の名前以外で使用されているが、変更された名前は一時的なものにすぎない場合に使用されます。

  • エイリアスは、テーブル名または列名を読みやすくするために作成されます。
  • 名前の変更は一時的な変更にすぎず、元のデータベースのテーブル名は変更されません。
  • エイリアスは、テーブル名や列名が大きい場合や読みにくい場合に便利です。
  • これらは、クエリに複数のテーブルが含まれる場合に推奨されます。

詳細については、こちらをお読みください。 SQL |別名 記事。

26. Union、minus、Interact コマンドとは何ですか?

SQL の集合演算は重複したタプルを排除し、共用体と互換性のある関係にのみ適用できます。 SQL で使用できる集合演算は次のとおりです。

  • セットユニオン
  • 交差点の設定
  • セット差

ユニオン操作: この操作には、いずれかのリレーションに存在するすべてのタプルが含まれます。例: 銀行にローン、口座、またはその両方を持っているすべての顧客を検索します。

 SELECT CustomerName FROM Depositor   UNION   SELECT CustomerName FROM Borrower ;>

結合操作により重複が自動的に削除されます。すべての重複を保持する必要がある場合は、UNION の代わりに UNION ALL が使用されます。

INTERSECT 操作: この操作には、両方のリレーションに存在するタプルが含まれます。例: 銀行に口座を持っているだけでなくローンを持っている顧客を検索するには:

 SELECT CustomerName FROM Depositor   INTERSECT  SELECT CustomerName FROM Borrower ;>

交差操作では、重複が自動的に削除されます。すべての重複を保持する必要がある場合は、INTERSECT の代わりに INTERSECT ALL が使用されます。

操作を除く: この操作には、ある関係には存在するが、別の関係には存在すべきではないタプルが含まれます。例: 銀行に口座はあるが融資がない顧客を検索するには:

 SELECT CustomerName FROM Depositor   EXCEPT  SELECT CustomerName FROM Borrower ;>

Except 操作により重複が自動的に削除されます。すべての重複を保持する必要がある場合は、EXCEPT の代わりに EXCEPT ALL が使用されます。

27. T-SQL とは何ですか?

T-SQL は、Transact Structure Query Language の略称です。これは Microsoft の製品であり、リレーショナル データベースとの対話に使用される SQL 言語の拡張機能です。 Microsoft SQL サーバーで最高のパフォーマンスを発揮すると考えられています。 T-SQL ステートメントは、データベースへのトランザクションを実行するために使用されます。 SQL サーバーのインスタンスとのすべての通信は、Transact-SQL ステートメントをサーバーに送信することによって行われるため、T-SQL は非常に重要です。ユーザーは、T-SQL を使用して関数を定義することもできます。

T-SQL 関数の種類は次のとおりです。

  • 集計 機能。
  • ランキング 機能。ランキング関数にはさまざまな種類があります。
  • 行セット 関数。
  • スカラー 機能。

28. SQL の ETL とは何ですか?

ETL はデータ ウェアハウジングのプロセスであり、 抽出する 変身、 そして 負荷 。これは、ETL ツールがさまざまなデータ ソース システムからデータを抽出し、それをステージング領域で変換し、最後にデータ ウェアハウス システムにロードするプロセスです。これらは 3 つのデータベース機能であり、1 つのデータベースからデータを取り出したり、別のデータベースにデータを配置したりするために 1 つのツールに組み込まれています。

29. SQL でテーブルをコピーするにはどうすればよいですか?

SQL では、すでに定義されている (または作成されている) テーブルの正確なコピーを作成する必要がある場合があります。 MySQL この操作を実行できるようになります。元のテーブルとそこに格納されているデータに影響を与えずにデータをテストするために、このような重複テーブルが必要になる場合があるためです。

CREATE TABLE Contact List(Clone_1) LIKE Original_table;>

詳しくはこちらをお読みください テーブルのクローン作成 MySQL 記事。

30. SQL インジェクションとは何ですか?

SQL インジェクションは、SQL コマンドをステートメントとして挿入することにより、Web ページ入力を通じてユーザー データを活用するために使用される手法です。基本的に、これらのステートメントは、悪意のあるユーザーによるアプリケーションの Web サーバーの操作に使用される可能性があります。

  • SQL インジェクションは、データベースを破壊する可能性があるコード インジェクション手法です。
  • SQL インジェクションは、最も一般的な Web ハッキング手法の 1 つです。
  • SQL インジェクションは、Web ページ入力を介して SQL ステートメントに悪意のあるコードを配置することです。

詳細については、こちらをお読みください。 SQL |注射 記事。

31. トリガーを無効にできますか? 「はい」の場合、どのようにして?

はい、PL/SQL でトリガーを無効にすることができます。トリガーを一時的に無効にすることを検討し、次の条件のいずれかが当てはまる場合:

  • トリガーが参照するオブジェクトが使用できません。
  • 大規模なデータのロードを実行する必要があり、トリガーを起動せずに迅速に処理を進める必要があります。
  • トリガーが適用されるテーブルにデータをロードしています。
  • ALTER TRIGGER ステートメントに DISABLE オプションを指定してトリガーを無効にします。
  • DISABLE ALL TRIGGERS オプションを指定した ALTER TABLE ステートメントを使用すると、テーブルに関連付けられたすべてのトリガーを同時に無効にすることができます。

中級 SQL インタビューの質問と回答

32. SQL と PL/SQL の違いは何ですか?

SQL と PL/SQL の一般的な違いを次に示します。

SQL

PL/SQL

SQL はクエリ実行またはコマンド言語です。

PL/SQL は完全なプログラミング言語です

SQL はデータ指向言語です。

PL/SQL は手続き型言語です

SQL は本質的に非常に宣言的です。

PL/SQL には手続き型の性質があります。

データを操作するために使用されます。

アプリケーションの作成に使用されます。

SQL では一度に 1 つのステートメントを実行できます

PL/SQL でステートメントのブロックを実行できます。

SQL はデータベースに何をすべきかを指示します。

PL/SQL はデータベースにその方法を指示します。

PL/SQLにSQLを埋め込むことができます

SQLにPL/SQLを埋め込むことはできません

33. SQL の BETWEEN 演算子と IN 演算子の違いは何ですか?

間: 演算子は、値の範囲に基づいて行をフェッチするために使用されます。
例えば、

SELECT * FROM Students  WHERE ROLL_NO BETWEEN 20 AND 30;>

このクエリはテーブルからそれらの行をすべて選択します。 ROLL_NO フィールドの値が 20 ~ 30 の範囲にある学生。
で: 演算子は、特定のセットに含まれる値をチェックするために使用されます。
例えば、

SELECT * FROM Students  WHERE ROLL_NO IN (20,21,23);>

このクエリは、テーブル Student から、フィールド ROLL_NO の値が 20、21、または 23 のいずれかの行をすべて選択します。

34. 「A」で始まる従業員の名前を検索する SQL クエリを作成します。

この目的には SQL の LIKE 演算子が使用されます。これは、where 句で特定のパターンを検索することにより、フィルターされたデータをフェッチするために使用されます。
LIKE を使用するための構文は次のとおりです。

SELECT 列 1、列 2 FROM テーブル名 WHERE 列名 LIKE パターン;

のように: オペレーター名

パターン: パターンから抽出された正確な値を使用して、結果セット内の関連データを取得します。

必要なクエリは次のとおりです。

SELECT * FROM Employees WHERE EmpName like 'A%' ;>

この記事を参照してください WHERE句 LIKE 演算子の詳細については、「LIKE 演算子」を参照してください。

35. 主キー制約と一意制約の違いは何ですか?

主キーには NULL 値を含めることはできませんが、一意制約には NULL 値を含めることができます。テーブルには主キーが 1 つだけありますが、一意の制約は複数存在する可能性があります。主キーはクラスター化インデックスを自動的に作成しますが、一意キーは自動的に作成しません。

36. SQL の結合とは何ですか?結合にはどのような種類がありますか?

SQL Join ステートメントは、テーブル間の共通フィールドに基づいて 2 つ以上のテーブルのデータまたは行を結合するために使用されます。さまざまな種類の結合は次のとおりです。

  • 内部結合 : INNER JOIN キーワードは、条件が満たされる限り、両方のテーブルからすべての行を選択します。このキーワードは、条件を満たす両方のテーブルのすべての行を結合することによって結果セットを作成します。つまり、共通フィールドの値が同じになります。
  • 左結合 : この結合は、結合の左側にあるテーブルのすべての行と、結合の右側にあるテーブルに一致する行を返します。右側に一致する行がない行の場合、結果セットは null になります。 LEFT JOIN は LEFT OUTER JOIN とも呼ばれます
  • 右結合 : RIGHT JOIN は LEFT JOIN に似ています。この結合は、結合の右側にあるテーブルのすべての行と、結合の左側にあるテーブルに一致する行を返します。左側に一致する行がない行の場合、結果セットには null が含まれます。 RIGHT JOIN は、RIGHT OUTER JOIN とも呼ばれます。
  • 完全結合 : FULL JOIN は、LEFT JOIN と RIGHT JOIN の両方の結果を結合して結果セットを作成します。結果セットには、両方のテーブルのすべての行が含まれます。一致しない行の場合、結果セットには NULL 値が含まれます。

37. インデックスとは何ですか?

データベース インデックスは、追加の書き込みとデータの追加コピーを維持するためのより多くの記憶領域の使用を犠牲にして、データベース テーブルでのデータ取得操作の速度を向上させるデータ構造です。データは 1 つの順序でのみディスクに保存できます。異なる値に応じた高速アクセスをサポートするには、異なる値に対する二分探索のような高速な検索が望まれます。この目的のために、テーブルにインデックスが作成されます。これらのインデックスにはディスク上に余分なスペースが必要ですが、頻繁に検索されるさまざまな値に応じて高速な検索が可能になります。

38. 削除時カスケード制約とは何ですか?

MySQL では「ON DELETE CASCADE」制約を使用して、親テーブルの行が削除されたときに子テーブルから行を自動的に削除します。詳しくはこちらをお読みください MySQL – 削除時カスケード制約 記事。

39. SQLのWITH句について説明しますか?

WITH 句は、with 句が出現するクエリでのみ定義が使用できる一時的な関係を定義する方法関係を提供します。 SQL では、グループが形成された後に WITH 句の述語が適用されるため、集計関数が使用されることがあります。

40. インデックスのさまざまな属性は何ですか?

インデックス作成にはさまざまな属性があります。

  • アクセスタイプ : 値ベースの検索、範囲アクセスなどのアクセスの種類を指します。
  • アクセス時間 : 特定のデータ要素または要素のセットを見つけるのに必要な時間を指します。
  • 挿入時間 : 適切なスペースを見つけて新しいデータを挿入するのにかかる時間を指します。
  • 削除時間 : 項目の検索と削除、およびインデックス構造の更新には時間がかかります。
  • オーバーヘッドスペース : インデックスに必要な追加スペースを指します。

41. カーソルとは何ですか?

カーソルは一時メモリまたは一時ワークステーションです。ユーザーがテーブルに対して DML 操作を実行するときに、データベース サーバーによって割り当てられます。カーソルはデータベース テーブルを格納するために使用されます。

42. SQLでさまざまなタイプの関係を書き留めますか?

さまざまな関係があります。つまり、次のとおりです。

  • 1 対 1 の関係。
  • 1 対多の関係。
  • 多対 1 の関係。
  • 自己参照関係。

43. トリガーとは何ですか?

引き金 は、データベースに変更があったときにシステムが自動的に実行するステートメントです。トリガーでは、まずトリガーをいつ実行するかを指定し、次にトリガーの実行時に実行されるアクションを指定します。トリガーは、SQL の制約メカニズムを使用して指定できない特定の整合性制約および参照制約を指定するために使用されます。

44. SQL DELETE コマンドと SQL TRUNCATE コマンドの違いは何ですか?

SQL 削除

SQLの切り捨て

DELETE ステートメントは、行を 1 つずつ削除し、削除された行ごとにトランザクション ログにエントリを記録します。 TRUNCATE TABLE は、テーブル データの格納に使用されるデータ ページの割り当てを解除することでデータを削除し、ページの割り当て解除のみをトランザクション ログに記録します。
DELETE コマンドは、identityTRUNCATE コマンドよりも低速です。 一方、TRUNCATE コマンドは DELETE コマンドよりも高速です。
削除を使用するには、テーブルに対する DELETE 権限が必要です。 テーブルで Truncate を使用するには、少なくともテーブルに対する ALTER 権限が必要です。
テーブルで DELETE ステートメントを使用した後も、列の ID は保持されます。 テーブルに ID 列が含まれている場合、列の ID はシード値にリセットされます。
削除はインデックス付きビューで使用できます。 Truncate はインデックス付きビューでは使用できません。

45. クラスターインデックスと非クラスターインデックスの違いは何ですか?

クラスター化インデックス 非クラスター化インデックス
クラスター化インデックスの方が高速です。 非クラスター化インデックスは低速です。
クラスター化インデックスでは、操作に必要なメモリが少なくなります。 非クラスター化インデックスは、操作により多くのメモリを必要とします。
クラスター化インデックスでは、インデックスが主要なデータになります。 非クラスター化インデックスでは、インデックスはデータのコピーです。
テーブルにはクラスター化インデックスを 1 つだけ含めることができます。 テーブルには複数の非クラスター化インデックスを含めることができます。
クラスター化インデックスには、データをディスクに保存する固有の機能があります。 非クラスター化インデックスには、データをディスクに保存する固有の機能がありません。
クラスター化インデックスには、データではなくブロックへのポインターが格納されます。 非クラスター化インデックスには、値と、データを保持する実際の行へのポインターの両方が格納されます。
クラスター化インデックスでは、リーフ ノードは実際のデータそのものです。 非クラスター化インデックスでは、リーフ ノードは実際のデータそのものではなく、含まれる列のみを含みます。
クラスター化インデックスでは、クラスター化キーによってテーブル内のデータの順序が定義されます。 非クラスター化インデックスでは、インデックス キーによってインデックス内のデータの順序が定義されます。
クラスター化インデックスは、テーブル レコードがインデックスに一致するように物理的に並べ替えられるインデックスの一種です。 非クラスター化インデックスは、インデックスの論理的順序がディスク上の行の物理的な格納順序と一致しない特殊なタイプのインデックスです。

詳細については、を参照してください クラスター化インデックスと非クラスター化インデックスの違い 記事。

46. ライブロックとは何ですか?

ライブロック 2 つ以上のプロセスが、他のプロセスの変更に応じて、有益な作業を行わずに同じ対話を継続的に繰り返す場合に発生します。これらのプロセスは待機状態ではなく、同時に実行されています。デッドロックではすべてのプロセスが待機状態になるため、これはデッドロックとは異なります。

47. SQL の Case WHEN とは何ですか?

制御ステートメントは、他の一連のステートメントの実行を制御するため、ほとんどの言語の重要な部分を形成します。これらは SQL にも含まれており、要件に一致するタプルを慎重に選択することで、クエリのフィルタリングやクエリの最適化などの用途に活用する必要があります。この投稿では、SQL の Case-Switch ステートメントについて説明します。 CASE ステートメントは、SQL が if/then ロジックを処理する方法です。

構文 1:

CASE case_value WHEN when_value THEN ステートメント_リスト [WHEN when_value THEN ステートメント_リスト] … [ELSE ステートメント_リスト]END CASE

構文 2:

文字列を int に変換する方法

CASE WHEN 検索条件 THEN ステートメント リスト [WHEN 検索条件 THEN ステートメント リスト] … [ELSE ステートメント リスト]END CASE

詳細については、こちらをお読みください。 SQL |ケースステートメント 記事。

高度な SQL インタビューの質問と回答

48. SQL で使用できるさまざまなタイプの大文字と小文字を操作する関数に名前を付けます。

SQL で使用できる大文字と小文字の操作関数には 3 つのタイプがあります。彼らです、

  • より低い : この関数の目的は、文字列を小文字で返すことです。文字列を引数として受け取り、その文字列を小文字に変換して返します。
    構文:

LOWER('文字列')

  • アッパー : この関数の目的は、文字列を大文字で返すことです。文字列を引数として受け取り、その文字列を大文字に変換して返します。
    構文:

UPPER('文字列')

  • 初期化キャップ : この関数の目的は、最初の文字が大文字で残りの文字が小文字の文字列を返すことです。
    構文:

INITCAP('文字列')

49. ローカル変数とグローバル変数、およびその違いとは何ですか?

グローバル変数: 対照的に、グローバル変数は関数の外部で定義される変数です。これらの変数にはグローバル スコープがあるため、関数にパラメータとして渡さなくても、どの関数でも使用できます。

ローカル変数: ローカル変数は、関数内で定義される変数です。これらはローカル スコープを持ち、それを定義する関数内でのみ使用できることを意味します。

50. 文字列の末尾にあるスペースを削除するために使用される関数に名前を付けますか?

SQL では、文字列の末尾のスペースは、trim 関数によって削除されます。

構文:

トリム、 ここで、s は任意の文字列です。

51. TRUNCATE ステートメントと DROP ステートメントの違いは何ですか?

SQL ドロップ 切り詰める
DROP コマンドは、テーブル定義とその内容を削除するために使用されます。 一方、TRUNCATE コマンドはテーブルからすべての行を削除するために使用されます。
DROP コマンドでは、テーブルスペースがメモリから解放されます。 一方、TRUNCATE コマンドはメモリから表スペースを解放しません。
DROP は DDL(データ定義言語) コマンドです。 一方、TRUNCATE も DDL (データ定義言語) コマンドです。
DROP コマンドでは、テーブルのビューが存在しません。 このコマンドの実行中、テーブルのビューが存在します。
DROP コマンドでは、整合性制約が削除されます。 このコマンドを実行している間、整合性制約は削除されません。
DROP コマンドでは、アンドゥ領域は使用されません。 このコマンドでは、元に戻すスペースが使用されますが、DELETE よりも少なくなります。
DROP コマンドは迅速に実行できますが、複雑な作業が発生します。 このコマンドは DROP よりも高速です。

詳細については、「これらの違い」を参照してください。 DROP と TRUNCATE SQL 記事。

52. パターンマッチングのクエリで使用される演算子はどれですか?

LIKE 演算子: where 句内の特定のパターンを検索して、フィルター処理されたデータをフェッチするために使用されます。

構文:

SELECT 列 1、列 2 FROM テーブル名 WHERE 列名 LIKE パターン;

LIKE: オペレーター名

53. SQL 順序をステートメントで定義しますか?

SQL の ORDER BY ステートメントは、フェッチされたデータを 1 つ以上の列に従って昇順または降順に並べ替えるのに使用されます。

  • デフォルトでは、ORDER BY はデータを並べ替えます。 昇順。
  • データを降順に並べ替えるにはキーワード DESC を使用し、昇順に並べ替えるにはキーワード ASC を使用できます。

詳細については、お読みください SQL |注文方法 記事。

54. ステートメントを持つ SQL について説明しますか?

HAVING は、select ステートメントで使用されるグループまたは集計関数の条件を指定するために使用されます。 WHERE 句はグループ化する前に選択します。 HAVING 句はグループ化後に行を選択します。 HAVING 句とは異なり、WHERE 句には集計関数を含めることはできません。見る Have と Where 句はありますか?

55. SQL AND OR 文を例で説明しますか?

SQL では、AND 演算子と OR 演算子は、データをフィルタリングし、条件に基づいて正確な結果を得るために使用されます。 AND 演算子と OR 演算子は WHERE 句とともに使用されます。

これら 二人の演算子 呼ばれています 結合演算子

  1. AND 演算子: この演算子は、両方の条件を満たすレコードのみを表示します。 条件 1 と条件 2 は True と評価されます。
  2. OR 演算子: この演算子は、条件 1 と条件 2 のいずれかが True と評価されるレコードを表示します。あれは、 条件 1 が True か、条件 2 が True のいずれかです。

詳細については、をお読みください。 SQL | AND と OR オペレーターの記事。

56. SQL で BETWEEN ステートメントを定義しますか?

SQL BETWEEN 条件を使用すると、式が値の範囲 (両端を含む) 内にあるかどうかを簡単にテストできます。値にはテキスト、日付、または数値を指定できます。 SELECT、INSERT、UPDATE、または DELETE ステートメントで使用できます。 SQL BETWEEN 条件は、式が value1 と value2 の範囲内にあるレコードを返します。

詳細については、お読みください SQL | Between & I 演算子 記事。

57. Commit コマンドと Rollback コマンドを使用するのはなぜですか?

専念 ロールバック
COMMIT は、現在のトランザクションによって行われた変更を永続的に保存します。 ROLLBACK は、現在のトランザクションによって行われた変更を元に戻します。
COMMIT 実行後にトランザクションで変更を元に戻すことはできません。 ROLLBACK の後、トランザクションは前の状態に戻ります。
トランザクションが成功すると、COMMIT が適用されます。 トランザクションが中止されると、ROLLBACK が発生します。

詳細については、をお読みください。 SQL におけるコミットとロールバックの違い 記事。

58. ACID プロパティとは何ですか?

取引 データベースの内容にアクセスし、場合によっては変更する単一の論理的な作業単位です。トランザクションは、読み取りおよび書き込み操作を使用してデータにアクセスします。データベース内の一貫性を維持するために、トランザクションの前後で特定のプロパティに従います。これらはと呼ばれます プロパティ。 (原子性、一貫性、分離性、耐久性) は、データベース トランザクションが確実に処理されることを保証する一連のプロパティです。詳細については、お読みください の ACID プロパティ DBMS 記事。

59. NULL 値はゼロまたは空白と同じですか?

SQL では、ゼロまたは空白スペースを別のゼロまたは空白スペースと比較できます。一方、ある null は別の null と等しくない場合があります。 null は、データが提供されない可能性があるか、データが存在しないことを意味します。

60. SQL のグループ関数の必要性は何ですか?

データベース管理におけるグループ関数は、集計関数とも呼ばれ、複数の行の値が特定の条件に基づいて入力としてグループ化され、より重要な意味を持つ 1 つの値を形成する関数です。

多彩なグループ機能

1) Count() 2) Sum() 3) Avg() 4) Min() 5) Max()>

詳細については、をお読みください。 SQLの集計関数 記事。

61. MERGE ステートメントの必要性は何ですか?

マージ SQL の command は、実際には 3 つの SQL ステートメントの組み合わせです。 挿入、更新、削除 。簡単に言うと、SQL の MERGE ステートメントは、これら 3 つの操作をすべて一緒に実行する便利な方法を提供し、大規模な実行データベースを処理する場合に非常に役立ちます。ただし、INSERT、UPDATE、および DELETE ステートメントとは異なり、MERGE ステートメントでは、ターゲット テーブルと呼ばれる必要なテーブルに対してこれらの操作を実行するソース テーブルが必要です。詳細については、をお読みください。 SQL | MERGE ステートメント 記事。

62. 2 つのテーブルから共通のレコードを取得するにはどうすればよいですか?

以下のステートメントは複数のテーブルからデータを取得するために使用できるため、結合を使用して複数のテーブルからデータを取得する必要があります。

構文:

SELECT テーブル名 1.列名、​​テーブル名 2.列名

FROM テーブル前1

JOIN テーブル名 2

ON テーブル名 1.列名 = テーブル名 2.列名

ORDER BY 列名;

詳細と例については、以下をお読みください。 SQL |複数のテーブルからデータを選択する 記事。

63. PL/SQL 関数の利点は何ですか?

PL/SQL 関数の利点は次のとおりです。

ワードラップCSS
  • データベースを 1 回呼び出すだけで、ステートメントのブロックを実行できます。したがって、SQL を複数回実行する場合のパフォーマンスが向上します。これにより、データベースとアプリケーション間の呼び出しの数が減少します。
  • 全体的な作業を小さなモジュールに分割すると、非常に管理しやすくなり、コードの可読性も向上します。
  • 再利用性を促進します。
  • コードがデータベース内に留まり、内部データベースの詳細がアプリケーション (ユーザー) から隠蔽されるため、安全です。ユーザーは、PL/SQL 関数を呼び出すだけです。したがって、セキュリティとデータ隠蔽が確保されます。

64. 現在の日付を表示する SQL クエリは何ですか?

CURRENT_DATE は現在の日付を返します。この関数は、1 つのステートメント内で複数回実行されると同じ値を返します。つまり、カーソル内の行のフェッチ間に長い遅延がある場合でも、値は固定されます。

構文:

現在の日付

または

現在の日付

65. ネストされたトリガーとは何ですか?

トリガーには、その内部に INSERT、UPDATE、および DELETE ロジックを含めることもできるため、データ変更のためにトリガーが起動されると、別のデータ変更が発生し、それによって別のトリガーが起動されることもあります。内部にデータ変更ロジックを含むトリガーは、ネストされたトリガーと呼ばれます。

66. テーブル内で利用可能な制約情報を見つけるにはどうすればよいですか?

SQL Server では、 データディクショナリ データベースの定義に関する情報を保存するために使用されるデータベース テーブルのセットです。これらのデータ ディクショナリを使用して、既存のテーブルの制約を確認し、(可能であれば) 制約を変更できます。詳細については、お読みください SQL |テーブル上の既存の制約を確認する 記事。

67.distinct キーワードを使用せずに、クエリ内で重複したエントリが取得されることを回避するにはどうすればよいですか?

DISTINCT は特定の状況では便利ですが、並べ替えを実行するためにクエリ エンジンの負荷が増加する可能性があるという欠点があります (重複を削除するために結果セットをそれ自体と比較する必要があるため)。次のオプションを使用して、重複したエントリを削除できます。

  • 行番号を使用して重複を削除します。
  • 自己結合を使用して重複を削除します。
  • group by を使用して重複を削除します。

詳しくはこちらをお読みください SQL |重複を区別せずに削除する 記事。

68. NVL と NVL2 機能の違いは何ですか?

これらの関数は任意のデータ型で動作し、式リストでの null 値の使用に関係します。これらはすべて単一行です つまり、行ごとに 1 つの結果を提供します。

NVL(expr1, expr2): SQL では、NVL() は NULL 値を実際の値に変換します。使用できるデータ型は、日付、文字、数値です。データ型は互いに一致する必要があります。つまり、expr1 と expr2 は同じデータ型である必要があります。

構文:

NVL (式1、式2)

NVL2(式1、式2、式3): NVL2 関数は最初の式を検査します。最初の式が null でない場合、NVL2 関数は 2 番目の式を返します。最初の式が null の場合、3 番目の式が返されます。つまり、expr1 が null でない場合、NVL2 は expr2 を返します。 expr1 が null の場合、NVL2 は expr3 を返します。引数 expr1 には任意のデータ型を指定できます。

構文:

NVL2 (式1、式2、式3)

詳細については、お読みください SQL 一般関数 | NVL、 NVL2、デコード、合体、NULLIF、LNNVL と NANVL 記事。

69. COALESCE() と ISNULL() の違いは何ですか?

合体(): SQL の COALESCE 関数は、引数の中で最初の NULL 以外の式を返します。すべての式が null と評価された場合、COALESCE 関数は null を返します。
構文:

SELECT 列、CAOLESCE(expression_1,….,expression_n)FROM table_name;

無効である(): ISNULL 関数は、SQL Server と MySQL では異なる用途に使用されます。 SQL Server では、ISNULL() 関数を使用して NULL 値を置き換えます。
構文:

SELECT 列、ISNULL(列名、置換する値)FROM テーブル名;

詳細については、こちらをお読みください。 SQL |ヌル関数 記事。

70. 2 つの文字列を追加するクエリで使用される演算子の名前を教えてください。

2 つの文字列を追加する SQL では濃度演算子が使用され、その記号は || です。 。

結論

結論として、SQL 面接の質問をマスターすることは、それぞれの分野で優れることを目指すデータ アナリスト、データ エンジニア、ビジネス アナリストにとって非常に重要です。この記事では、徹底的な準備を整えるために設計された、SQL 面接の質問と回答の包括的なセットを提供しました。

これらの質問を理解し、実践することで、SQL 関連の面接で提起される課題に効果的に取り組む能力が向上し、最終的にはデータ処理と分析の分野で成功するキャリアへの道が開かれます。それぞれの質問は、分析能力と技術的専門知識、つまり重要な役割を担う意欲的なプロフェッショナルにとって不可欠な特性を証明する機会であることを忘れないでください。