この記事の内容は、Mysql 面接に関する知識をまとめたものです (例付き)。一定の参考価値があります。困っている友人は参考にしてください。お役に立てれば幸いです。 。
この記事では、mysql について、開発中に私たちプログラマーがあまり知られていない重要なポイント (独善的な見解) をいくつか紹介します。
データベース設計の 3 つのパラダイム:
最初のパラダイム: データベース テーブルの各列は分割不可能なアトミック データ項目です。つまり、列は分割できません。第 2 正規形: 第 1 正規形に基づいて、データベース テーブル内の各インスタンスまたはレコードは一意に識別可能である必要があります。つまり、一意に識別される必要があります。第 3 正規形: 第 2 正規形に基づくと、非主属性は他の非主属性に依存しません。つまり、主キーを参照します。 (関連する推奨事項: MySQL チュートリアル )
View
ビューは仮想テーブルであり、データを保存しません。ステートメントの動的データのみが含まれます。定義されています。
create view view_name as sql查询语句
ストアド プロシージャ
1 つ以上の SQL ステートメントのコレクション。その利点 (要約: シンプル/安全/高パフォーマンス):
1. ストアドプロシージャ より高速な実行速度を実現できます。
2. ストアド プロシージャを使用して、標準コンポーネントをプログラムできます。
3. ストアド プロシージャは、フロー制御ステートメントを使用して作成できます。これは、強力な柔軟性を備え、複雑な判断やより複雑な操作を完了できます。
4. ストアド プロシージャはセキュリティ メカニズムとして十分に活用できます。
5. ストアド プロシージャはネットワーク トラフィックを削減できます
delimiter 分隔符 create procedure|proc proc_name() begin sql语句 end 分隔符 delimiter ; --还原分隔符,为了不影响后面的语句的使用 默认的分隔符是;但是为了能在整个存储过程中重用,因此一般需要自定义分隔符(除\外)
ストアド プロシージャと関数の違いは何ですか?
同じ点: ストアド プロシージャと関数はどちらも、SQL ステートメントを再現可能に実行するように設計されています。データベースコレクションを操作します。
1) ストアド プロシージャと関数は一度コンパイルされてキャッシュされ、次回使用するときはコンパイルされた SQL ステートメントを直接ヒットするため、再利用する必要はありません。ネットワークの相互作用を減らし、ネットワーク アクセス トラフィックを削減します。
相違点: 識別子が異なります。関数の識別子は function、ストアド プロシージャはprocedureです。
1) 関数には戻り値があり、必ず戻り値が必要ですが、プロセスには戻り値がありませんが、パラメータの型を設定することで複数のパラメータまたは戻り値を実装できます( 、 外)。
2) ストアド関数は select を使用して呼び出す必要があり、ストアド プロシージャは call を使用して呼び出す必要があります。
3) select ステートメントはストアド プロシージャ内で呼び出すことができますが、select..into 以外の select ステートメントは関数内で使用できません。
4) in out パラメータにより、プロセス関連関数はより柔軟になり、複数の結果を返すことができます。
トリガー
テーブルのデータ変更時に特定の動作を行うもので、追加、削除、変更の前後など6種類あります。
create trigger trigger_name ALTER|BEFORE select|update|delete on 表 for each row trigger_stmt
重要なポイント:
テーブルのみがトリガーをサポートします。ビューも一時テーブルもトリガーをサポートしません。更新と上書きはサポートされていません。変更は最初に削除してから、
ログを削除する必要があります。
Mysql には主に 4 つのログ ファイルがあります:
エラー ログ: mysql の起動、実行、停止時の問題を記録します;
クエリ ログ: すべての msyql アクティビティを記録します
バイナリ ログ: データが更新されたすべてのステートメントを記録します
#遅いクエリ ログ: 遅いクエリを記録します
以上がMysql インタビューの知識の概要 (例付き)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。