O'Reillyの「はじめてのSQL」を読んで、MySQL8.0のSQLを学びなおした

カテゴリ: MySQL | タグ:

忘れていたこと、知らなかったことを自分の忘備録としてメモしておきます。

2章: データベースの作成と設定

P21: 文字セット

  • コマンドSHOW CHARACTER SETで、接続しているMySQLで使える文字コードの一覧が確認できる。

P25: 時間データ

  • カラムにyear型を指定することで、日付の年だけを管理できる。

P31: Check制約

  • create tableでは、列に検査制約を付与できる
eye_color CHAR(2) CHECK (eye_color IN ('BR', 'BL', 'GR'))
  • 列の定義としてenumという文字データ型を定義することもできる
eye_color ENUM('BR', 'BL', 'GR')

13章

  • MySQLでインデックスは、テーブルの付属物として扱われている。Oracleなどではインデクスは独立したスキーマオブジェクトで、create indexコマンドで生成する。
  • MySQL8.0ではcreate indexをサポートしている。これはalter tableとしてマッピングされている。また、MySQLでのPrimaryKey作成は依然としてalter tableを使う必要がある。

  • 外部キー制約で参照されている列にインデックスを付ける。外部キー制約で親側を消すとき、RDBMSは子データがいないことを確認する。このときにインデックスが無いと全表スキャンになってしまう。

  • 親子関係のテーブルで親がいない小テーブル側のレコードを、孤立行と呼ぶ。

  • 外部キー制約で、on delete restrictをつけた場合、子がいる親の削除はエラーになる

  • 外部キー制約で、on update cascadeをつけた場合、親側のキーの変更は子に伝播する

  • 外部キー制約にはrestrict cascadeに加えてset nullも存在する

  • on deleteとon updateは片方だけでも両方とも指定できる。

14章

14.2.3

  • スカラーサブクエリを使うことでfromを1テーブルだけに限定できる。

17章

  • デフォルト(maxvalue)のパーティションに入ってしまったレコードは、altere table reorganize partitionで、再度パーティションを振り直すことができる。

  • パーティションの定義は informationschema.partitionsで調べることができる

  • 特定のパーティションを明示的に検索するときは、下記のテーブル指定をfrom区に記載する

    • tablename PARTITION(partitionname)
  • パーティションにはサブパーティションという概念がある。例えば日付でパーティショニングして、ユーザIDのハッシュでサブパーティショニングできる。


Amazonでおトクに買い物する方法
AmazonチャージでポイントGET


Amazonは買いもの前にAmazonギフト券をチャージしてポイントをゲットしないと損!

こちらもおススメ

コメントを残す

メールアドレスが公開されることはありません。