序文
私たちは毎日、WeChat、QQ、Douyin、Toutiao などのさまざまな Web サイトやアプリにアクセスします。これらの Web サイトには多くの情報やデータがあり、これらの情報やデータはどこかに保存する必要があります。これらのデータは通常どこに保存されますか? ?
通常、これらのデータはデータベースに保存されます。したがって、Web サイトやアプリを開発する必要がある場合、データベースは習得しなければならないテクノロジーです。一般的に使用されるデータベースには、mysql、oracle、sqlserver、db2 などが含まれます。上記で紹介したデータベースの中では、oracleが性能1位でサービスも充実していますが、料金も非常に高いため、金融会社などはデータベースの安定性に対する要求が比較的高く、oracleを選ぶことが多いです。mysqlは無料のものと一時的に有料なものがあり、インターネット企業の利用率でも第1位となっています。情報も非常に充実しており、コミュニティも活発なので主にmysqlを学習しています。
データベースの共通概念
DB: データベース、データを保存するためのコンテナ。
DBMS: データベース ソフトウェアまたはデータベース製品としても知られるデータベース管理システムは、DB を作成または管理するために使用されます。
SQL: データベースとの通信に使用される言語である構造化照会言語は、特定のデータベース ソフトウェアが所有しているものではありませんが、ほとんどすべての主流のデータベース ソフトウェアに共通の言語です。中国人がアメリカ人とコミュニケーションするには中国語を話す必要があり、アメリカ人とコミュニケーションするには英語を話す必要があり、データベースとコミュニケーションするには SQL 言語が必要です。
データベースストレージデータのいくつかの特徴
-
データはテーブルに保存され、テーブルはデータベースに保存されます
-
ライブラリには複数のテーブルを含めることができ、各テーブルにはそれ自体を識別するための一意の名前 (テーブル名) が付いています。
-
テーブルには 1 つ以上の列があり、列は「フィールド」とも呼ばれ、Java の「属性」に相当します。
-
テーブル内のデータの各行は、Java の「オブジェクト」に相当します。
データ型選択に関するいくつかの提案
(1) 大きいものではなく小さいものを選択します: 一般に、データを正しく保存できる最小のデータ型を選択します。通常、データ型が小さいほど高速で、ディスク、メモリ、CPU キャッシュの占有量が少なくなります。
(2) シンプルであることは良いことです: 単純なデータ型の操作は、通常、必要な CPU サイクルが少なくなります。たとえば、文字セットと照合ルール (照合ルール) により文字は整数よりも高価になるため、整数に対する操作は文字に対する操作よりもはるかに安価です。複雑。
(3) NULL をできるだけ避ける: 本当に NULL 型の値が必要な場合を除き、列をできるだけ NOT NULL に設定します。列の値に NULL が含まれると、インデックス作成、インデックス統計、および値の比較がより複雑になります。
(4) 浮動小数点型の場合は 10 進数を選択することを推奨します
(5) 時刻の記録には int または bigint 型を使用し、時刻を秒やミリ秒に変換するなどのタイムスタンプ形式に変換して、インデックス付けを容易にするために保存することをお勧めします。
MySQL 権限の仕組み
mysql はどのようにしてユーザーを識別するのでしょうか?
セキュリティ上の理由から、mysql はホスト名 + ユーザー名を使用してユーザーの身元を判断します。インターネット上でユーザー名からユーザーの身元を判断することは困難ですが、IP またはホスト名を使用して判断することができます。マシン、およびこのマシンを経由するユーザーはユーザーとして識別できるため、mysql はユーザー名とホスト名を使用してユーザーの ID を識別します。ユーザーが mysql にコマンドを送信すると、mysql はユーザー名とソース (ホスト) を通じてユーザーの権限を決定します。
Mysql 権限の検証は 2 つの段階に分かれています。
(1) フェーズ 1: データベースに接続します。このとき、mysql はユーザー名とソース (IP またはホスト名) に基づいて接続許可があるかどうかを判断します。
(2) フェーズ 2: mysql サーバーへのリクエスト操作 (テーブルの作成、選択、削除、更新、インデックスの作成など) を開始します。この時点で、mysql はこれらのコマンドを操作する権限があるかどうかを判断します。
インデックスを正しく使用するにはどうすればよいですか?
インデックスの学習は主に、より高速な SQL を書くことです。SQL を書くとき、なぜ SQL にインデックスが付けられるのかを知る必要があります。一部の SQL ではインデックスが作成されないのはなぜですか? SQL はこれらのインデックスにアクセスします。なぜそうなるのでしょうか? よりスムーズに使用し、より効率的な SQL を作成するには、その原理と内部の具体的なプロセスを理解する必要があります。
Mysql のインデックスは、クラスター化インデックス (主キー インデックス) と非クラスター化インデックスに分かれています。
クラスター化インデックス(主キーインデックス)
各テーブルにはクラスター化インデックスが必要です。テーブル全体のデータは、b+ ツリーの形式でファイルに保存されます。b+ ツリーのリーフ ノードのキーは主キー値であり、データはその情報です。完全なレコード; ノードは主キーの値を保存します。
クラスター化インデックスを通じてデータを取得するには、b+ ツリー検索プロセスに従って、対応するレコードを取得するだけです。
非クラスター化インデックス
各テーブルには複数の非クラスター化インデックス、b+ ツリー構造を持つことができ、リーフ ノードのキーはインデックス フィールドの値、データは主キーの値です。非リーフ ノードはインデックスの値のみを保存します。分野。
非クラスター化インデックスを介してレコードを取得する場合、2 つの操作が必要です。まず、主キーが非クラスター化インデックスから取得され、次に主キーに対応するレコードがクラスター化インデックスから取得されます。このプロセスには、もう 1 つの操作が必要です。クラスタ化インデックスよりも操作が簡単です。
編集された MySQL 学習ノートは非常に包括的かつ詳細で、MySQL の基本学習のあらゆる側面をカバーしており、初心者が始めるのに非常に適しています。
資料はカテゴリ別に整理されており、各章にはより具体的な内容が含まれています。
この MySQL 学習ノートは合計 578 ページあります。今から皆さんと共有します。
公開アカウントに注目してください: 風を追いかけるプログラマー、この MySQL 学習ノートを無料で入手するには 012 と返信してください。
要約する
学習は一生ものですので、一定期間学習した後、学習効果を確認したい場合は、自分でまとめるのが一番良い方法です。例えば、勉強するときに自分でメモをとり、自分でまとめますが、そのメモは後の復習にも役立ちますし、すべて自分の理解したものです。