[推奨コレクション] 2020年の最新のクラシックPHPインタビューの質問-データベース記事

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

回答:Oracle、SQL Server、MySQL、Sybase、DB2、Access等。

2. SQL言語のどの部分が含まれていますか?各パートの運用キーワードは何ですか?

回答:SQL言語には、データ定義(DDL)、データ操作(DML)、データ制御(DCL)、およびデータクエリ(DQL)の4つの部分が含まれます。

  • データ定義:テーブルの作成、テーブルの変更、テーブルの削除、Craete / DropIndexなど。

  • データ操作:選択、挿入、更新、削除、

  • データ管理:付与、取り消し

  • データクエリ:選択

3.整合性の制約は何ですか?

回答:データの整合性とは、データの正確性と信頼性を指します。

次の4つのカテゴリに分類されます。

  • エンティティの整合性:テーブルの各行がテーブル内の唯一のエンティティであることを規定します。

  • ドメインの整合性:テーブルの列は、値の範囲、精度、その他の要件など、特定のデータタイプの制約を満たす必要があることを意味します。

  • 参照整合性:2つのテーブルの主キーと外部キーのデータが一貫している必要があることを意味します。これにより、テーブル間のデータの一貫性が確保され、データの損失や無意味なデータがデータベースに拡散するのを防ぎます。

  • ユーザー定義の整合性:さまざまなリレーショナルデータベースシステムでは、さまざまなアプリケーション環境に応じて、いくつかの特別な制約が必要になることがよくあります。ユーザー定義の整合性は、特定のリレーショナルデータベースの制約条件であり、特定のアプリケーションが満たさなければならないセマンティック要件を反映しています。

テーブル関連の制約:列の制約(NOT NULL(null以外の制約))およびテーブルの制約(PRIMARY KEY、外部キー、チェック、UNIQUE)を含みます。

4.ビジネスとは何ですか?そしてその特徴は?

回答:トランザクション:これは一連のデータベース操作であり、データベースアプリケーションの基本的な論理ユニットです。

トランザクションの特性:

(1)Atomicity:不可分性。トランザクションはすべて実行されるか、まったく実行されません。

(2)一貫性または厳格性。トランザクションを実行すると、データベースが正しい状態から別の正しい状態になります。

(3)分離。トランザクションが正しくコミットされる前に、トランザクションによって行われたデータ変更を他のトランザクションに提供することは許可されていません。

(4)永続性。トランザクションが正しく送信されると、結果はデー​​タベースに永続的に保存されます。トランザクションの送信後に他の障害が発生した場合でも、トランザクションの処理結果が保存されます。

または、次のように理解してください。

トランザクションは、論理的な作業単位としてバインドされたSQLステートメントのグループです。ステートメント操作が失敗すると、操作全体が失敗し、操作は操作前の状態にロールバックされるか、ノードが存在します。実行されるか実行されないかを確認するために、トランザクションを使用できます。グループステートメントをトランザクションと見なすには、ACIDテスト、つまり原子性、一貫性、分離、および耐久性に合格する必要があります。

5.ロックとは何ですか?

回答:データベースは、複数のユーザーが使用する共有リソースです。複数のユーザーが同時にデータにアクセスする場合、複数のトランザクションがデータベース内の同じデータに同時にアクセスします。同時操作が制御されていない場合、誤ったデータが読み取られて保存され、データベースの整合性が損なわれる可能性があります。

ロックは、データベースの同時実行制御を実現するための非常に重要なテクノロジーです。トランザクションが特定のデータオブジェクトで動作する前に、システムに要求を送信してロックします。ロックがロックされた後、トランザクションはデータオブジェクトを一定に制御します。トランザクションがロックを解放する前に、他のトランザクションはデータオブジェクトを更新できません。

基本的なロックタイプ:ロックには、行レベルのロックとテーブルレベルのロックが含まれます

6.ビューとは何ですか?カーソルとは何ですか?

回答:ビューは仮想テーブルであり、物理テーブルと同じ機能を備えています。ビューは、ビューを追加、変更、チェック、および操作できます。ビューは通常、1つのテーブルまたは複数のテーブルの行または列のサブセットです。ビューを変更しても、基本テーブルには影響しません。マルチテーブルクエリと比較して、データの取得が容易になります。

カーソル:クエリ結果セットを1つの単位として効果的に処理します。カーソルをユニット内の特定の行に配置し、結果セットの現在の行から1つ以上の行を取得できます。結果セットの現在の行を変更できます。カーソルは通常は使用されませんが、データを1つずつ処理する必要がある場合は非常に重要です。

7.保存されたプロシージャとは何ですか?何と呼ぶ?

回答:ストアドプロシージャは、事前にコンパイルされたSQLステートメントです。利点は、モジュラーデザインが可能であるということです。つまり、作成する必要があるのは1回だけで、プログラム内で複数回呼び出すことができます。特定の操作でSQLを複数回実行する必要がある場合、ストアドプロシージャの使用は、純粋なSQLステートメントの実行よりも高速です。コマンドオブジェクトを使用して、ストアドプロシージャを呼び出すことができます。

8.インデックスの役割は?そして、その長所と短所は何ですか?

回答:インデックスは特別なクエリテーブルであり、データベースの検索エンジンがデータの取得を高速化するために使用できます。実生活の本のカタログと非常によく似ています。本全体を照会しなくても、必要なデータを見つけることができます。インデックスは一意にすることができます。インデックスを作成すると、単一の列または複数の列を指定できます。欠点は、データ入力の速度が遅くなり、データベースのサイズも大きくなることです。

9. 3つのパラダイムを一般的な方法で理解するにはどうすればよいですか?

回答:最初の通常の形式:1NFは属性に対するアトミック性の制約であり、属性はアトミックであり、分解できない必要があります。

2番目のパラダイム:2NFはレコードに対する一意の制約であり、レコードを一意に識別する必要があります。つまり、エンティティの一意性です。

3番目の通常の形式:3NFは、フィールドの冗長性に対する制約です。つまり、どのフィールドも他のフィールドから派生させることはできず、フィールドに冗長性は必要ありません。

10.基本的なテーブルとは何ですか?ビューとは何ですか?

回答:基本テーブルは独立したテーブルです。SQLでは、リレーションシップはテーブルに対応します。

ビューは、1つまたは複数の基本テーブルから派生したテーブルです。ビュー自体はデータベースに個別に保存されるのではなく、仮想テーブルです

11.ビューの利点を説明してください。

回答:(1)ビューはユーザー操作を簡素化できます

(2)表示により、ユーザーは同じデータを複数の角度から表示できます。

(3)ビューは、データベースにある程度の論理的独立性を提供します。

(4)Viewは、機密データのセキュリティ保護を提供できます。

12.NULLとはどういう意味ですか

回答:値NULLはUNKNOWN(不明)を意味します: ""(空の文字列)を意味しません。NULL値と比較すると、NULL値が生成されます。値をNULL値と比較することはできず、論理的に答えを得ることを望んでいます。

NULLの判断にはISNULLを使用します

13.プライマリキー、外部キー、インデックスの違いは?

定義:

  • 主キー-レコードを一意に識別し、複製できず、空にすることはできません

  • 外部キー-テーブルの外部キーは別のテーブルのプライマリキーであり、外部キーを繰り返すことができ、nullにすることができます

  • インデックス-フィールドに重複する値はありませんが、null値を持つことができます

効果:

  • プライマリキー-データの整合性を確保するために使用されます

  • 外部キー-他のテーブルとの連絡を確立するために使用されます

  • インデックス-クエリの並べ替えの速度を向上させることです

数:

  • 主キー-主キーは1つしか存在できません

  • 外部キー-テーブルは複数の外部キーを持つことができます

  • インデックス-テーブルは複数の一意のインデックスを持つことができます

14.テーブルのフィールドが特定の範囲の値のみを受け入れるようにするために何を使用できますか?

回答:データベーステーブルで定義されているチェック制限は、列に入力される値を制限するために使用されます。

トリガーを使用して、データベーステーブルのフィールドの許容値を制限することもできますが、このアプローチでは、トリガーをテーブルで定義する必要があり、場合によってはパフォーマンスに影響を与える可能性があります。

15. SQLステートメントを最適化する方法は何ですか?(いくつか選択してください)

(1)Where句の場合:他のWhere条件の前にwhereテーブルを書き込む必要がある接続と、最大数のレコードを除外できる条件との間の接続は、Where句の最後に書き込む必要があります。

(2)INの代わりにEXISTSを使用し、NOTINの代わりにNOTEXISTSを使用します。

(3)インデックス列での計算の使用は避けてください

(4)インデックス列でISNULLおよびISNOTNULLを使用しないでください

(5)クエリを最適化するには、テーブル全体のスキャンをできるだけ避け、最初にwhereとorderbyに関係する列にインデックスを設定することを検討してください。

(6)where句のフィールドのヌル値の判断を避けるようにしてください。そうしないと、エンジンがインデックスの使用をあきらめて、テーブル全体のスキャンを実行することになります。

(7)where句のフィールドで式操作を実行しないようにしてください。これにより、エンジンがインデックスの使用を中止し、テーブル全体のスキャンを実行します。

16. SQLステートメントの「相関サブクエリ」と「非相関サブクエリ」の違いは何ですか?

回答:サブクエリ:他のクエリにネストされたクエリが呼び出されます。

サブクエリは内部クエリとも呼ばれ、サブクエリを含むステートメントは外部クエリ(メインクエリとも呼ばれます)と呼ばれます。

すべてのサブクエリは、関連するサブクエリと相関しないサブクエリの2つのカテゴリに分類できます。

(1)非相関サブクエリは、外部クエリから独立したサブクエリであり、サブクエリは合計1回実行され、実行後に値が外部クエリに渡されます。

(2)関連するサブクエリの実行は、外部クエリのデータに依存します。外部クエリは行を実行し、サブクエリは1回実行されます。

したがって、相関のないサブクエリは、関連するサブクエリよりも効率的です。

17. charとvarcharの違いは何ですか?

回答:これは固定長タイプですが、varcharは可変長タイプです。違いは次のとおりです。

char(M)タイプのデータ列では、各値がMバイトを占めます。特定の長さがM未満の場合、MySQLは右側にスペース文字を入力します。(取得操作中に入力されたスペース文字は削除されます)varchar(M)タイプのデータ列では、各値は、その長さを記録するために使用されるバイトに加えて、十分なバイトのみを占有します(つまり、全長はL + 1バイトです)。

18. Mysqlのストレージエンジン、myisamとinnodbの違い。

回答:簡単な表現:

  • MyISAMは、非トランザクションストレージエンジンです。頻繁なクエリアプリケーションに適しています。テーブルロック、デッドロックなし、小さなデータと小さな同時実行に適しています

  • Innodbは、トランザクションをサポートするストレージエンジンです。挿入および更新操作が多いアプリケーションに適しています。設計が妥当な場合、行ロック(最大の違いはロックレベルにあります)。ビッグデータと大規模な同時実行に適しています。

19.データテーブルの種類は何ですか

回答:MyISAM、InnoDB、HEAP、BOB、ARCHIVE、CSVなど。

  • MyISAM:成熟していて、安定していて、管理が簡単で、読みやすいです。一部の関数(トランザクションなど)は、テーブルレベルのロックをサポートしていません。

  • InnoDB:トランザクション、外部キー、データ行ロックなどの機能をサポートします。これは多くのスペースを占有し、全文索引付けをサポートしていません。

20. MySQLデータベースは、パブリッシングシステムのストレージとして使用され、1日あたり50,000エントリを超えます。3年間運用および保守される予定です。最適化するにはどうすればよいですか。

a。適切に設計されたデータベース構造を設計し、部分的なデータの冗長性を許可し、結合クエリを回避し、効率を向上させます。

b。適切なテーブルフィールドのデータタイプとストレージエンジンを選択し、インデックスを適切に追加します。

c。mysqlライブラリのマスターとスレーブの読み取りと書き込みの分離。

d。通常のサブテーブルを見つけ、単一のテーブル内のデータ量を減らし、クエリ速度を向上させます。

e。memcached、apcなどのキャッシュメカニズムを追加します。

f。頻繁に変更されないページの静的ページを生成します。

g。効率的なSQLを記述します。といった

SELECT * FROM TABEL 改为 SELECT field_1, field_2, field_3 FROM TABLE.

21.トラフィックの多いWebサイトの場合、ページにアクセスするたびに統計の問題を解決するためにどのような方法を採用しますか?

回答:

a。サーバーが現在のトラフィックをサポートできるかどうかを確認します。

b。データベースアクセスを最適化します。

c。画像のホットリンクなどの外部アクセスリンク(ホットリンク)はありません。

d。制御ファイルのダウンロード。

e。配布に異なるホストを使用します。

f。ブラウジング統計ソフトウェアを使用して、トラフィック量を理解し、ターゲットを絞った最適化を行います。

注意してください、迷子にならないでください

さて、みなさん、上記はこの記事の全内容です。ここで見ることができるのはすべて才能です。さっきも言ったように、PHPには技術的なポイントがたくさんあります。多すぎるので、書くのは本当に不可能で、書いた後はあまり読まないので、必要に応じてここでPDFとドキュメントに整理します。できる

クリックしてシークレットコードを入力してください:PHP +「プラットフォーム」

ここに写真の説明を挿入

ここに写真の説明を挿入


学習内容の詳細については、[Comparative Standard Factory]の優れたPHPアーキテクトチュートリアルカタログをご覧ください。給与が確実に上がるように読むことができます(継続的な更新)

上記のコンテンツは、すべての人に役立つことを願っています。多くのPHP担当者は、上級者になると常に問題やボトルネックに直面します。ビジネスコードを書きすぎると、方向性がわかりません。どこから改善を始めればよいかわかりません。これに関する情報をまとめました。ただし、これらに限定されません。分散アーキテクチャ、高スケーラビリティ、高パフォーマンス、高同時実行性、サーバーパフォーマンスチューニング、TP6、laravel、YII2、Redis、Swoole、Swoft、Kafka、Mysql最適化、シェルスクリプト、Docker、マイクロサービス、Nginxなど。多くの知識ポイント、高度な高度な乾物は、誰とでも無料で共有でき、必要な人は私のPHPテクノロジー交換グループに参加できます

おすすめ

転載: blog.csdn.net/weixin_49163826/article/details/108858107