
この講座で扱っていることを抜粋して紹介しています。
初めてUdemyで講座受講される方向けに簡単な使い方を解説しています。
MySQLの概要・簡易年表・エディションの種類などを簡単に解説しています。
Dockerの概要や簡易年表について解説しています。
Dockerができる事を5つに絞りできるだけわかりやすく解説しています。
mac PCでDockerの管理ソフトであるDocker Desktop のインストール方法とターミナルの操作方法を解説しています。
WindowsにDockerDesktopをインストールする方法を解説しています。
イメージをカスタマイズするためのDockerfileの設定内容について解説しています。
コンテナを複数管理・構築するためのdocker-compose.ymlについて解説しています。
あらかじめ用意しているdocker-compose.ymlなどのファイルをダウンロードし、コンテナ構築し、phpMyAdminをブラウで確認するところまで解説しています。
windowsでコンテナを構築する方法やフォルダ位置・確認方法などについて解説しています。
GUIでPhpMyAdminを表示・操作する方法と、CUIでDockerコンテナにログインし、mysqlに接続する方法を解説しています。
データベースを作成するためにルートユーザーでログイン必要になるので、GUI・CUIともに解説しています。
テーブルを作成する際に設定必要なデータ型について解説しています。
PK、UNIQUE、NULL、DEFAULT、AUTO_INCREMENTなど列に設定できる制約やオプションについて解説しています。
SQLの説明と、実際にテーブルを作成するクエリを解説しています。
Create, Read, Update, Deleteについて簡単に解説しています。
INSERT句を使いレコードを挿入する方法を解説しています。
UPDATE句を使ってレコード情報を更新する方法と注意点を解説しています。
DELETE句を使ってレコードを削除する方法や、履歴を残したい、データを残したい場合の考え方について解説しています。
SQLをしっかり理解するために、SELECT句は書く順番と動く順番が違という事を事前に解説しています。
指定した列を表示するSELECT句、テーブルを指定するFROM句を、書く順番動く順番を意識しながら書くように解説しています。
表示するレコードを絞るWHERE句について、いろいろなパターンで解説しています。
表示する順番を指定できるORDER BY句について解説しています。
表示される件数を指定するためのLIMIT句について解説しています。
複数レコードの計算をする集計関数についてよく使うものを中心に解説しています。
分割と集約を同時に行うGROUP BY句の扱い方と注意点について解説しています。
日付や時間を変換する日付関数について解説しています。
グループ化した後に、さらに条件で絞り込みたい場合に使えるHAVINGについて解説をしています。
重複しているレコードを1つにまとめスッキリ表示できるDISTINCTについて解説しています。
テーブル名を変更したり列を追加することのできるALTERを解説しています。(次の動画がJOINを解説するのでその前準備を兼ねております。)
複数のテーブルを結合して利用できるINNER JOINについて解説しています。結合時に同じ列名が表示されたりするので、AS句で列名を変更する方法もあわせて解説しています。
小テストAに向けて、2つのSQLのインポート方法、クエリの組み立て方、実際の問題について解説しています。
セクション2のまとめになります。
テーブルを分割するために必要な考え方「正規化」をできるだけわかりやすく解説しています。
テーブル同士の関係性を表すリレーションについて解説しています。
データベースのテーブル構成や関係を示すER図について、カーディナリティ(多重度)、draw.ioなども含めて解説しています。
Webアプリなどの作る際に作成しておきたいテーブル設計時に必要な内容を解説しています。
身近な例を用いて裏側にあるデータベース構成(ER図)を考えてみる演習になります。
身近な例を用いて裏側にあるデータベース構成を考えてみる演習になります。
身近な例を用いて裏側にあるデータベース構成(ER図)を考えてみる演習になります。
身近な例を用いて裏側にあるデータベース構成(ER図)を考えてみる演習になります。
身近な例を用いて裏側にあるデータベース構成(ER図)を考えてみる演習になります。
身近な例を用いて裏側にあるデータベース構成(ER図)を考えてみる演習になります。
このセクションのまとめになります。
クエリの中に別のクエリを仕込む方法であるサブクエリについて、FROM句やWHERE句で使う方法をそれぞれ解説しています。
一時テーブルを使いクエリを分割する方法や、一時テーブルを削除する方法を解説しています。
ビューを作成しDBに保存することで再利用しやすくなります。また一覧表示や削除方法についてもあわせて解説しています
MySQL8で追加されたWITH句について、1つ使うパターンと複数使うパターンでそれぞれ解説しています。
SQL文を結合することができるUNION, UNION ALLについて解説しています。
MySQLでは自由に値を設定できる変数がありますので、その使い方を解説しています。
変数・UNION ALL などを使い、カレンダーテーブルを作成する方法を、サブクエリとWITH句のパターンを解説しています。
カレンダーテーブルと既存のテーブルを外部結合し、データベーステーブルに存在していない日付でも表示させる方法を解説しています。(サブクエリとWITH句の2パターン)
外部結合を使うとどうしてもNULLが増えてきてしまいますので、このタイミングでNULL関連の機能や関数をいくつか解説しています。
同じテーブルを結合する自己結合について、WINDOW関数でも似ている機能がある事を伝えつつ使い方を解説しています。
全てのパターンで掛け合わせるCROSS JOINについて解説しています。
条件によって出力を切り替えることができるCASE式について解説しています。
複数のクエリをまとめて関数として扱うことができるようになるストアドプロシージャについて解説しています。
テーブルへの更新(INSERT, UPDATE, DELETE)のタイミングで処理が呼び出されるトリガーについて解説しています。
小テストBの問題について解説しています。
このセクションのまとめになります。
MySQL8で追加されたWINDOW関数の概要について解説しています。
WINDOW関数で必ず使うことになるOVER句について挙動や特徴を解説しています。
グループ化はするけれど集約はしないPARTITION BY句について解説しています。
WINDOW関数でソートを担当するORDER BY句について解説しています。
集計範囲を動的に切り替えるウィンドウフレームについて概要を解説しています。
物理的な集計範囲を指定するROWSについてサンプルクエリを用いて動作を解説しています。
論理的な集計範囲を指定するRANGEについてサンプルクエリを用いて動作や注意点について解説しています。
現在行の1つ前の行の値を表示したり、パーティションで分けた最初の行の値を常に表示する関数について解説しています。
パーティションに分けた後にランクをつけられる関数をまとめてご紹介しています。
その他の便利なWINDOW関数として、NTILE(), CUME_DIST(), PERCENT_RANK()について解説しています。
WINDOW関数の実践的な演習や、次のセクションに向けて、追加で4つのクエリのインポート方法を解説しています。
WINDOW関数も組み合わせた実践的な練習問題の内容を紹介しています。
WINDOW関数も組み合わせた実践的な練習問題の回答例を内容を解説しています。
WINDOW関数も組み合わせた実践的な練習問題の回答例を内容を解説しています。
このセクションのまとめになります。
クエリのパフォーマンス改善の1つとして、インデックス(索引)について解説しています。
インデックスが使われているかを確認する実行計画(EXPLAIN)の確認方法と、統計情報を更新するためのANALYZEについて解説しています。
処理に時間がかかっているクエリの情報を記録するスロークエリログについて解説しています。
スロークエリログをランキング形式でみやすくするツールを解説しています。
親テーブルに情報がなければ子テーブルに情報が追加できなくしたり、親テーブルを削除すると子テーブルも連動して削除させるための外部キー制約について解説しています。
複数のテーブル更新が必須で、うまくいけばCOMMITで確定、もし途中でエラーが出た場合に元に戻すROLLBACKなどの挙動についてPHPのコードも用いて解説・動作確認をしています。
分離レベルの紹介と、あえてレベルを変更しファントムリードを発生させ挙動を確認する方法を解説しています。
複数のトランザクション実行時に他の影響を排除するためのロックについて解説し実演しています。
DBの容量を確認するクエリを紹介しています。
バックアップの概要と種類について解説しています。
mysqldumpを使ったフルバックアップとリストアの方法について解説しています。
バイナリファイルを保存し、差分をバックアップしたりリストアする方法を解説しています。
テーブルを論理的に分割しクエリ効率を上げることができるパーティションについて解説しています。
大規模開発で扱われるレプリケーションやシャーディングについて解説しています。
このセクションのまとめになります。
ボーナスレクチャーはudemy講座内で唯一 宣伝を行っていい場所になっております。
この講座は、MySQL8以降に対応した本格的なデータベースを学習するための講座です。
法人向け新人研修の一環で、データベースの研修も担当しているのですが、
生成AIの時代になったとはいえ、
きちんとしたベースの知識を持っているかどうかで、
スキルアップのスピードにかなりの違いがあるなと実感していたこともあり、
本格的な講座を作ることになりました。
せっかく作るのであれば、
初学者向けの知識にとどまらず、
CASE式やサブクエリ、正規化やスロークエリなども含め、
さらにMySQL8以降の便利な機能である
WITH句やWINDOW関数も盛り込もうということで、
当初想定していたよりもボリュームのある講座に仕上げることができました。
別件でMySQL5系を使っていることもあり、
Dockerを使った仮想環境で進めているので、
仮想環境に親しみたい方にもちょうどいい講座になっていると実感しております。
またいくつかのセクションの最後の方で小テストを用意していますので、
データベースのスキルアップをしたい方にはぜひ本講座をご活用いただければ幸いです。
環境: Dockerを使った仮想環境(MySQL8)
・MySQL基本編
CREATE DATABASE/CREATE TABLE/
CRUD/INSERT/UPDATE/DELETE/SELECT/FROM/WHERE/ORDER BY/LIMIT/
集計関数(SUM(), AVG(), COUNT(), MAX(), MIN()/GROUP BY/
日付関数(YEAR(), MONTH(), DATE_FORMAT(), EXTRACT()/
HAVING/DISTINCT/ALTER/INNER JOIN
・データベース設計
正規化/リレーション/ER図/テーブル設計
・MySQL発展編
サブクエリ/一時テーブル/ビュー/UNION ALL/変数/カレンダーテーブル/
LEFT JOIN/RIGHT JOIN/IS NOT NULL/IFNULL()/自己結合/CROSS JOIN/CASE/
ストアドプロシージャ/トリガー
・WINDOW関数
OVER/PARTITION BY/ORDER BY/ROWS/RANGE/LAG()/FIRST_VALUE()/RANK/DENSE_RANK()/NTILE()/CUME_DIST()/PERCENT_RANK()
・パフォーマンス・運用・その他の機能
インデックス/実行計画(EXPLAIN/ANALYZE/ログ(スロークエリログ)/pt-query-digest/
外部キー制約/トランザクション(COMMIT, ROLLBACK/トランザクション分離レベル(ファントムリード再現)/
ロック/フルバックアップ(リストア)/差分バックアップ(リストア)/パーティション
レプリケーション(解説のみ)/シャーディング(解説のみ)