ホームページ  >  記事  >  データベース  >  Mysql学習メモ(1)

Mysql学習メモ(1)

黄舟
黄舟オリジナル
2016-12-21 16:38:301070ブラウズ

テクノロジーの王国はとても魅力的です IT 業界で働き始めるとすぐに、さまざまなテクノロジーに誘惑され、混乱し、すべてを学びたいと思いました。私は今でも約束を守る人間ですが、幸いなことに少しだけ忍耐力があるので、いろいろなものを少しずつ得ることができました。しかし、このどこにでもある状況は私のIQとまったく一致しません。たくさんのことを学ぶほどのエネルギーはありません。いくつかのテクノロジーを一時的に放棄することをゆっくりと学び、最初は仕事で使用する必要があるものを深く学びます。 mysqlなど。 Linux など、私が特に好きなものに関しては、あまりにも高度で複雑すぎます。諦めたくないので、毎日 1 時間 Linux を使ってコマンドに慣れ、徐々に進歩していきます。生きていくために必要なさまざまなスキルがより完璧になったら、Linux の勉強に多くの時間を費やすことができると思います。

そんなことを考えながら本を読んでいたのですが、その本のタイトルは「MySQL Core Technology and Best Practices」です。勉強中、役立つものを見つけたらメモするので、メモはどうしても汚くなってしまいます。いくつかの知識ポイントはすでに習得しているので、それについては書かないかもしれません。これは単なる自習用のメモですので、学習時間を無駄にしたくないので、ここで終了しても構いません。

InnoDB エンジンと MyISAM エンジン

MySQL はリレーショナル データベースです。ストレージ エンジンは、ショー エンジンを使用して表示できます。私のバージョンは 5.6.26 です。バージョンを表示するには、select version() を使用します。 MySQL 5.6.26 には 9 つのストレージ エンジンがあります。最も一般的でありきたりなものは、MyISAM と InnoDB です。ビジネスが非トランザクションの場合、2 つのストレージ エンジンは類似しており、パフォーマンスに違いはありません。ビジネスでほとんどの選択クエリが必要な場合は、MyISAM ストレージ エンジンを使用できます。必要な場合は、InnoDB ストレージを使用する必要があります。

MySQL のバックアップ

バックアップ中のデータの不整合を避けるため、データベースのバックアップ中はデータベースへの書き込み操作は許可されません。

読み取りロック付きのフラッシュ テーブルを使用できます。

次に、メモリ内のテーブル データをスキャンし、テーブルに復元します。次にテーブルをロックします。同僚は読み取り権限を付与します。つまり、データベースがバックアップされても、読み取り権限はまだ残っています。

データベースのバックアップ操作が完了するまで待ってから、データベースのロックを解除します。テーブルのロックを解除;

MySQL データ型

この本のデータ型構造の図は非常に優れていますが、オンラインで検索したところ、あまり良くありませんでした。だから、自分で描いたほうがいいかもしれない、長くはかからないよ。

Mysql学習メモ(1)

マダン、私の描画ツールは壊れています。私の知識を要約するだけです。なぜわざわざ。

次のステップはテキストです。テキストはすぐに表示され、労力を節約します。

10 進数型は、精密 10 進数型と浮動小数点 10 進数型に分類されます。

10 進数型には、10 進数の正確な型が含まれます。

単精度と倍精度を含む浮動小数点10進数。 (これが何を意味するのかわかりません。興味がある場合は、Baidu で調べてください。より一般的に使用されるのは 10 進数です)。 '

10 進数 (長さ、精度) 。長さは数値の全長を表し、精度は小数点以下の長さを表します。

MySQLの文字列型

MySQLは主にchar、varchar、tinyintm、text、mediumtext、longtextの6つの文字列型をサポートしています

私はこれまで文字列型を明確に知りませんでした。たくさんの間違いを犯した。本を読んで実験してみると、かなり理解できました。

以下の内容は「MySQL Core Technology and Best Practices」の第3章を直接引用しています。

char(n) は固定長の文字列型で、n 文字 (バイトではないことに注意) が占める記憶領域を表します。n の最大値は 255 です。たとえば、中国語の簡体字セット gbk エンコーディングの場合、char です。 (255 ) は、255 個の漢字を格納できることを意味し、各漢字は 2 バイトの格納スペースを占有します。 utf8 文字セットの文字列の場合、char(255) は、255 個の漢字を格納でき、各漢字が 3 バイトの記憶領域を占有することを意味します。

varchar(n) は可変長の文字列型であり、n に関係なく、そのような文字列が占有する記憶領域は文字列自体が占有する記憶領域であることを意味します。これは char(n) とは異なります。char(n) は char(n) とは異なります。たとえば、簡体字中国語文字セット gbk の文字列の場合、varchar(255) は 255 個の中国語文字を格納できることを意味します。各漢字は 2 バイトの記憶領域を占有します。この文字列にそれほど多くの漢字が含まれていない場合、たとえば、「中」という単語のみが含まれている場合、他のオーバーヘッドが考慮されなければ、varchar(255) は 1 文字 (2 バイト) の記憶領域のみを使用します。また、char(255) は、たとえ漢字が 1 文字しか格納されていない場合でも、255 文字の記憶域を占有する必要があります。

さまざまな文字タイプが占有するストレージ容量:

Mysql学習メモ(1)


MySQL の日付タイプ

MySQL は主に 5 つの日付タイプをサポートします。日付、時刻、年、日時、タイムスタンプ。

日付タイプ。この形式は年、月、日をサポートしています。 YYYY—MM—DD;

時間タイプ。分と秒。 ヒヒ:Ⅱ:SS。

Datetime は日付と時刻の組み合わせです。それは年、月、日です。時間、分、秒が経過しました。

タイムスタンプは日時とほぼ同じです。

でも、勉強にこだわりすぎてもいけません。タイムスタンプと日時の違いを見てみましょう。

はさまざまな値の範囲を表し、日時の値の範囲はタイムスタンプの値の範囲よりもはるかに大きくなります。タイムスタンプは 2037 年までに終了します。

タイムスタンプに値が割り当てられていない場合、このフィールドの値は実際には mysql サーバーの現在の日付と時刻になります。

同じタイムスタンプタイプの日付または時刻の場合。損失が異なれば、結果も異なります。 MySQL コマンド show varialbes ("time_zone" など) を使用すると、次の情報が表示されます。

Mysql学習メモ(1)

この SYSTEM はシステム時刻が使用されることを意味します。

タイムスタンプ データを含むレコードが変更されると、タイムスタンプ データは mysql サーバーの現在の日付と時刻に自動的に更新されます。

MySQL バイナリ タイプ

少なくとも現時点では、MySQL データベースのバイナリ データ タイプには関与すべきではありません。 mysql がバイナリデータを保存できることを知っているだけで十分だと思います。今後必要に応じて勉強しに来てください。 : 悟 ちょっとした認識:

(1) アプリケーション要件(値の範囲の精度の精度)を満たす場合は、短いデータ型を使用するようにしてください。

(2) データ型は単純であればあるほど良いです。

(3) 正確な 10 進数型を使用するようにしてください。

(4) 日付と時刻を保存するために文字列を使用する代わりに、組み込みの日付と時刻のデータ型を使用するようにしてください。

(5) NULL フィールドを避けるようにし、フィールドを非 NULL 制約として指定することをお勧めします。これは、MySQL では Null 値を含むカラムのクエリを最適化することが難しく、Null 値によりインデックスの統計と比較の最適化操作がより複雑になるためです。 null の代わりに、0、特別な値、または空の文字列を使用することをお勧めします。

私のブログの記事はすべてオリジナルです。記事によっては関連情報が引用されている場合がありますが、出典は明記されています。転載や共有は自由ですが、この記事へのリンクと著作権表示を追加する必要があります。

上記は Mysql 学習ノート (1) の内容です。その他の関連コンテンツについては、PHP 中国語 Web サイト (www.php.cn) に注目してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。