[データベース]よくある質問

Q1:一般的なリレーショナルデータベース管理システム製品は何ですか?

Oracle、Sql Server、mysql、Sybase

Q2:SQL言語にはどの部分が含まれていますか?各セクションにはどのようなキーワードがありますか?

SQL言語には、データ定義(DDL)、データ操作(DML)、データコントロール(DCL)、データクエリ(DQL)の4つの部分があります。

DDL:表、テーブルの変更、作成ドロップインデックスの作成/、ドロップテーブルを作成/削除-テーブル/インデックス
DML:SELECT、INSERT、UPDATE、削除CRUD
DCL:助成金、REVOKE認証および許可の取消し
DQL:選択

Q3:整合性の制約とは何ですか?

整合性制約には、エンティティの整合性、参照整合性、ユーザー定義の整合性という3つの主要なタイプがあります。
最初の2つはデータベースシステムの要件であり、ユーザー定義の整合性はユーザーの観点から存在します。
エンティティの整合性は(プライマリコード)を参照し、属性の1つまたはグループは基本的な関係Rのプライマリ属性です。その後、属性を空にすることはできません(無意味にできない、わからない、存在しない)
参照の整合性は(外部コード)を参照します属性または属性グループFが基本的な関係Rの外部コードである場合、それはNULL値を取るか、関係Sのメインコードに対応します。これは、Sの祖先のメインコード値の
ユーザー定義の整合性と同じです。これは、特定のリレーショナルデータベースの制約条件であり、特定のアプリケーションに含まれるデータが満たさなければならないセマンティック要件を反映しています。

Q4:SQL制約のタイプは何ですか?

エンティティ整合性制約は、フィールドの内容が繰り返されないように制御するために使用される主キーです。テーブル
内の整合性制約参照できるのは1つの主キーだけです。これは、テーブルとテーブル間の参照接続に使用される外部キー外部キーです。防止のために使用されます。操作テーブルとの間の接続の破壊は、テーブルの基準点の値でなければならないので、外部キー列に不正なデータを防止することができる
、フィールドの整合性制約特定のデータ・タイプの制約を満たさなければならない表の列を指し、値の範囲、精度などを含みます
ユーザー定義の整合性は、特定のアプリケーションのデータが満たさなければならない意味上の要件です。主に属性制約条件が
ありますNOT NULL、
フィールドのコンテンツを制御するために使用される、一意ではないフィールドのコンテンツを制御するために使用される、繰り返すことができない、フィールド
の値の範囲を制御するために使用される複数のチェック、列の値が特定の条件を満たすかどうかをチェックするために使用される可能性があります表情

Q5:テーブルのフィールドが特定の範囲の値のみを受け入れるようにするために使用できるもの

チェックを使用して、列に入力された値を特定の範囲内に制限できます。

Q6:基本テーブルとは何ですか?ビューとは何ですか?

基本テーブルは、それ自体が存在するテーブルであり、関係はSQLの基本テーブルに対応します。
ビューは、1つまたはいくつかの基本的なテーブルから派生したテーブルです。ビュー自体はデータベースに個別に保存されるのではなく、仮想テーブルです。ビューの追加、削除、変更の基本操作は実行できますが、ビューの変更は基本テーブルには影響しません。データベースにはビューの定義のみが保存され、ビューに対応するデータは保存されないため、これらのデータはエクスポートされたビューの基本テーブルに保存されます。

Q7:ビューの利点

利便性:ビューはユーザーの操作を簡略化できます
角度:ユーザーが同じデータを複数の角度から表示できるようにし
ます論理的独立性:ビューは再構築されたデータベースにある程度の論理的独立性を
提供しますセキュリティ:ビューは機密データのセキュリティ保護を提供できます

Q8:相関サブクエリと非相関サブクエリについて説明してください

ネストされたクエリでは、サブクエリのクエリ結果が親クエリに依存しない場合、それは無関係なサブクエリになります。サブクエリのクエリ条件が親クエリに依存する場合、それは相関サブクエリと呼ばれます

Q9:ドロップ\削除\トランケートの違い

コンテンツの削除:削除と切り捨てはテーブル内のデータのみを削除できます。削除は毎回テーブルからデータ行を削除します。切り捨てはテーブル全体のデータを削除できますが、テーブルの構造は削除できません。ドロップはテーブルデータと構造の両方です削除。
削除後、削除はデータ操作言語DMLに属します。削除操作はトランザクションレコードとしてログに保存されるため、削除操作をロールバックして削除操作を元に戻すことができます。切り捨てと削除は、データ定義言語DDLです。
実行速度では、切り捨てとドロップの方が高速です。
操作がトランザクションに関連している場合でも、削除を使用する必要があります

Q10:ドロップ、削除、トランケートの適用シナリオ

テーブルが不要になった場合は、dropを使用してテーブル全体を削除します。
一部のデータ行を削除するには、deleteを使用し、where句を使用して行の削除を制限できます。
テーブルを保持する必要がありますが、データをクリアする場合は、切り捨てる

Q11:データベースインデックス

データベースインデックスは、ブックのディレクトリに似ており、データベースクエリの速度を上げることができます。
インデックスは、データアクセスを高速化するためにデータベーステーブルの1つ以上の列の値を並べ替えることができるデータ構造です。特定のコンテンツを検索する場合、必要なデータを取得するためにテーブル全体をスキャンする必要はありません。インデックスに従って対応を見つけるだけで済みます。住所。類推は、特定の知識ポイントを見つけることです。本全体を読む必要はありません。目次で対応するコンテンツを見つけるだけです。

Q12:インデックスを作成しない場合

インデックスの主な用途はクエリの高速化です。そのため、クエリの数が少ないデータベースでは、インデックスの使用を減らすか、使用しないことができます。
データ量が少なく、サイズが小さいデータベースの場合、レコード数が少ない場合があります。このようなテーブル自体のスキャンに長時間かかることはありません。 、インデックスを作成する必要はありません。インデックスを追加すると、システムが維持し、不要なスペースを占有するために必要なコンテンツが増加
します。データ構造内のリンクリストやシーケンステーブルと同様に、頻繁に変更する必要があるテーブルと、可能な限りインデックスを減らします。インデックスは検索を容易にするためのものですが、追加、削除、変更の操作が頻繁すぎるため、インデックスの変更に関する多くの操作が無駄になります。

Q13:インデックスの最適化

索引付けの目的は、検索を高速化することです。データ構造での検索のアイデアは、主に2つの側面から最適化されます。一方ではデータ構造であり、適切なデータ構造、Bツリーまたはハッシュハッシュテーブルを選択します。他方では、適切な検索アルゴリズム、シーケンシャル検索、ハーフ検索、ブロック検索
さらに、コンピュータの問題は、ハードウェアとソフトウェアに大別できます。ソフトウェアは、実際にはハードウェアリソーススケジューリングの割り当てと最適化です。
ハードウェアでは、検索は主にCPUアクセスの時間とスペースの消費です。インデックス付きのテーブルは一般に大きく、すべてをメモリに格納することは不可能です。つまり、CPUは特定のテーブルにアクセスするときにディスクにアクセスする必要があり、ディスクI / Oスケジューリングを生成します、CPUの割り当てなどの問題があるため、データ構造とアルゴリズムの選択をこれらの問題と可能な限り調整する必要があるため、最適化を実現できます。

Q14:インデックスの利点と欠点

利点は:
大幅に検索要求に関連するサーバ・プロセスの効率が向上しつつ、情報の所望の速度にインデックスを付けることにより、データベースへのアクセスを増加することができ
、それ自体が、外側キーに使用することができるデータの迅速な検索に加えて、および速度ルックアップテーブルテーブル間の接続速度。
短所:
インデックステーブルの作成と維持に時間がかかります。データが増加した場合、費やされる時間によって
インデックスも増加します。一定の物理スペースが必要です。オペレーティングシステムがディスクを管理している場合ディスク上の各データを管理するには、インデックステーブルのようなものが必要です。テーブル自体もスペースを占有します

Q15:主キー、外部キー、インデックスの違い

主キー:レコードを一意に識別します。重複したり、空にすることはできません。データエンティティの整合性を保証でき、主キーは1つだけです。
外部キー:テーブルの外部キーは空にすることも、徐々に使用して他のテーブルとの接続を確立し、テーブルの参照整合性を確保することもできます。テーブルには複数の外部キーを設定できます。
インデックス:インデックスには重複する値はありませんが、クエリの並べ替えの速度を上げるために使用できるコントロールがある場合があります。テーブルには複数の一意のインデックスを含めることができます

Q16:トランザクションとは何ですか?その特性

トランザクションは、データベース操作の不可分な一連のシーケンスであり、データベースの同時実行制御の基本的な論理単位でもあります。
トランザクションの4つの基本要素:ACID
原子性(原子性):つまり、トランザクションは操作の期間であるか、すべてが実行されるか、またはすべてロールバック
された一貫性(一貫性):ある状態から別の状態へのトランザクションデータベースの実行状態、原子性の
分離に密接に関連します。分離:トランザクションがコミットされるまで、トランザクションのデータを他のトランザクションに変更することはできません
。耐久性:トランザクションが正しく送信された後、結果はデー​​タベースに永続的に保存されますトランザクションの送信後に他の障害が発生した場合でも、トランザクションの処理結果は保存されます。つまり、送信されると、トランザクションはデータベース内のデータを永続的に変更します。

Q17:カーソルとは

SQLはセット指向です。1つのSQLステートメントで複数のレコードを生成または処理できます。埋め込みSQLの主な言語はレコード指向です。メイン変数のグループは、一度に1つのレコードしか格納できません。したがって、ホスト変数はSQLステートメントの出力データの要件を満たすことができないため、埋め込みSQLはカーソルを導入して2つの処理を調整します。
カーソルは、SQL文の実行結果をユーザーが格納するためにシステムが作成するデータ・バッファであり、各カーソルには名前があります。ユーザーはカーソルを介してレコードを取得し、それをメイン変数に割り当てて、さらに処理するためにメイン言語に渡します。

Q18:トリガーとは

トリガーは、テーブルに関連するデータベースオブジェクトで、定義された条件が満たされたときにトリガーされ、トリガーで定義された一連のステートメントを実行します。データベースの整合性を確保するためにデータベース側のアプリケーションを支援できます

Q19:ストアドプロシージャとは何ですか?何と呼ぶか

ストアドプロシージャは、他の言語の関数に似ています。これは手続き型SQLステートメントで記述されたプロセスであり、コンパイルと最適化の後にデータベースサーバーに格納され、使用されている場合にのみ呼び出すことができます。
呼び出し/実行を使用して、ストアドプロシージャの実行をアクティブ化します。手続き型SQLでは、データベースサーバは、手続き本体で他のストアドプロシージャの呼び出しをサポートしています。

形式:
CALL / PERFORMANCE PROCEDUREプロシージャ名

Q20:ストアドプロシージャの長所と短所は何ですか

利点:オペレーションコードをカプセル化してデータベースに保存できます。毎回呼び出すだけで済みます。文ごとに実現するよりもプログラミング時間が大幅に短縮され、ストアドプロシージャはコンパイル後にデータベースに保存されます。各呼び出しを直接実行できるため、より効率的です。
欠点:各データベースのストアドプロシージャの構文はほとんど異なり、互換性は非常に低く、普遍的ではありません。JAVAパーツなどのサーバー側にビジネスロジックを配置する必要があります。

Q21:パラダイムの理解

第1正規形(1NF):リレーショナルモデルRのすべての属性は不可分な基本データアイテムであり、Rは1NFに属します。最初のパラダイムは、リレーショナルモデルの最小要件です。最初のパラダイムを満たさないデータベースモデルは、リレーショナルデータベースとは言えません。
第2正規形(2NF):関係モードRが1NFに属し、各非プライマリ属性がRのコードに完全に依存している場合、Rは2NFの
第3正規形(3NF)に属します。そのようなコードX、属性グループYおよび非プライマリ属性Zはありません(ZはYに含まれません)、はいX-> Y(YはXを決定できません)、Y-> Zが確立され、それはR <U、F>と呼ばれます3NFに属します。(3番目の正規形は、2番目の正規形に基づいて推移的な依存関係を排除します)
BCND、変更された3NFまたは拡張3NF:X-> YおよびYがXに属さない場合、Xはコードを持つ必要があり、R <Uと呼ばれます、F>はBCNFに属しています。
第4正規形(4NF):関係モードR <U、F>は1NFに属します。Rの自明な多値がX-> Yに依存する場合(YはXに含まれない)、Xにはコードがあり、R <Uと呼ばれます。 、F>は4NFに属します。
複数値の依存関係:R(U)を属性セットの関係パターンとするU、X、Y、ZはUのサブセットであり、Z = U-X-Y、関係パターンR(U)の複数値の依存関係X ->-> Yは、R(U)の任意の関係rについて、(x、z)値のペアが与えられた場合にのみ、trueを保持します。Yのセットは、xの値とz値に依存しない

2項関係は3NF、BCNF、4NFに属します

Q22:ロックとは

オペレーティングシステムのプロセススケジューリング管理と同様に、同時実行制御を実現することは重要なテクノロジです。データベースは複数のユーザーが使用する共有リソースです。複数のユーザーが同時にデータにアクセスすると、データベースで複数のトランザクションが発生し、同じデータに同時にアクセスします。したがって、コントロールとして封鎖メカニズムが必要です。
トランザクションが特定のデータオブジェクトを操作すると、ロックを要求するリクエストがシステムに送信されます。ロック後、トランザクションはデータを操作でき、終了後、他のトランザクションのリソースをロック解除して解放します。

Q23:データベースの楽観的ロックと悲観的ロックとは何ですか

データベース管理システムDBMSの同時実行制御のタスクは、複数のトランザクションがデータベース内の同じデータに同時にアクセスした場合に、トランザクションの分離と統合、およびデータベースの統合が破壊されないようにすることです。
楽観的ロックと悲観的ロックは、同時実行制御で使用される主な技術的方法です。
楽観的ロック、つまり楽観的同時実行制御ロック。同時実行の競合が発生しないと仮定して、操作をサブミットするときにデータ整合性違反のみを確認してください。(つまり、最初にリソースを割り当て、操作の完了後に問題があるかどうかを確認します)
悲観的ロック、つまり悲観的並行制御ロック。同時実行の競合が発生すると想定すると、データの整合性に違反する可能性のあるすべての操作がブロックされます。

Q24:データテーブルのタイプは何ですか

MySQLはInnoDB、GEAP、BOB、ARCHIVE、CSVおよびその他のデータテーブルタイプをサポートします

Q25:最適化されたSQLステートメント

SQLステートメントは可能な限り単純です。
テーブル結合は多すぎないようにしてください
。サブクエリの数を減らしてください。ネストされたクエリやビューのネストも可能な限り単純です。
テーブル全体をスキャンすることは避けてください。
合理的にインデックスを使用してください。
ステートメントのようなもできるだけ明確に記述してください。%これは多く省略できますが、クエリの負担が増えることも意味します。in
の使用が減ります。たとえば、betweenとexistの間で
select * from tableを使用します。
中間結果を一時テーブルに一時的に保存して、メインターゲットの複数のスキャンを回避し、共有ロックの実行を減らすことができます。 "" Blocking "
は可能な限り小さなフィールドを使用し、メモリと読み取りの消費を節約します

Q26:データベース最適化のアイデア

データベース構造の最適化
パラダイム最適化
により、冗長な(スペース節約)テーブルの分割がなくなり、テーブル構造が複雑になりすぎないようにします。
インデックスの最適化
アルゴリズムのデータ構造の最適化
物理的な最適化
SQLステートメントの最適化:上記のとおり

元の記事を16件公開 Likes0 訪問数458

おすすめ

転載: blog.csdn.net/weixin_43951831/article/details/104842449