GitHubアカウントの作成
手順
- GitHub公式サイトにアクセスする
- 右上の「Sign up」をクリックする
- メールアドレスを入力しよう
- パスワードを設定する
- ユーザー名を入力(半角英数字、ハイフン、アンダースコアのみ)する
- メール認証を完了
ポイント:
- ユーザー名は後から変更できるが、URLに使われるので慎重に選ぼう。
リポジトリの作成
手順
- GitHubにログインする
- 右上の「+」アイコンをクリックする
- 「New repository」を選択しよう
- リポジトリの情報を入力:
- Repository name:
mysql-learning(任意の名前でOK) - Description:
MySQL学習用リポジトリ(任意) - Public / Private: どちらでもOK
- Public: 誰でも見られる
- Private: 自分だけ、または招待した人だけ見られる
- Add a README file: チェックを入れる(推奨)
- Repository name:
- 「Create repository」をクリックする
必要なファイルの作成
.devcontainer/devcontainer.json を作成
- リポジトリのページで「Add file」→「Create new file」をクリック
- ファイル名に
.devcontainer/devcontainer.jsonと入力しよう- スラッシュ(
/)を入れると自動的にフォルダが作成される
- スラッシュ(
- 以下の内容をコピー&ペーストしよう
{
"name": "MySQL Learning Environment",
"dockerComposeFile": "docker-compose.yml",
"service": "app",
"workspaceFolder": "/workspace"
}4.そのまま「Commit changes」をクリックする(コミットメッセージはデフォルトでOK)
.devcontainer/docker-compose.yml を作成
- 「Add file」→「Create new file」をクリックする
- ファイル名に
.devcontainer/docker-compose.ymlと入力しよう
※すでに.devcontainer/が表示されている場合、docker-compose.yml` と入力すること。 - 以下の内容をコピー&ペーストしよう
version: '3.8'
services:
app:
image: mcr.microsoft.com/devcontainers/base:ubuntu
volumes:
- ..:/workspace:cached
command: sleep infinity
network_mode: service:db
depends_on:
- db
db:
image: mysql:8.0
restart: unless-stopped
command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
environment:
MYSQL_ROOT_PASSWORD: password
volumes:
mysql-data:4.「Commit changes」をクリックする
README.md を作成(既にある場合はスキップ)
- リポジトリのトップページに戻る
- README.mdが既にある場合は、鉛筆マーク(Edit)をクリックして編集
- 「Commit changes」をクリック
Codespacesの起動
手順
- リポジトリのページで緑色の「Code」ボタンをクリックする
- 「Codespaces」タブを選択する
- 「Create codespace on main」をクリックする
- 新しいタブが開き、Codespacesが起動する(初回は5〜10分かかる)
画面の見方:
- 左側: ファイルエクスプローラー(ファイル一覧)
- 中央: エディター(ファイルを編集する場所)
- 下部: ターミナル(コマンドを実行する場所)
ポイント:
- Codespacesは一定時間操作しないと自動的に停止する
- 停止したCodespacesは「Code」→「Codespaces」から再開できる
- データは保持されるので、続きから作業できる
MySQL学習環境のセットアップ
Codespacesが起動したら、以下の通りMySQL学習環境をセットアップしよう。
テーブル構成
部署表(departments)
| カラム名 | データ型 | 制約 | 説明 |
|---|---|---|---|
| department_id | INT | PRIMARY KEY | 部署番号 |
| department_name | VARCHAR(100) | NOT NULL | 部署名 |
社員表(employees)
| カラム名 | データ型 | 制約 | 説明 |
|---|---|---|---|
| employee_id | INT | PRIMARY KEY | 社員番号 |
| name | VARCHAR(100) | NOT NULL | 氏名 |
| gender | ENUM | NOT NULL | 性別(男/女) |
| birth_date | DATE | NOT NULL | 生年月日 |
| salary | DECIMAL(10,2) | NOT NULL | 給与 |
| department_id | INT | FOREIGN KEY | 部署番号 |
MySQLクライアントをインストール
ターミナルで以下の通り実行する。
sudo apt-get update && sudo apt-get install -y mysql-clientMySQLの起動を確認
# MySQLが起動するまで待つ(準備ができるとエラーが出なくなります)
mysql -h db -u root -ppassword -e "SELECT 1"データベースとテーブルを作成
MySQLに接続しよう。
mysql -h db -u root -ppassword以下のSQL文を順次実行する。
-- データベース作成
CREATE DATABASE company_db;
USE company_db;
-- 部署表
CREATE TABLE departments (
department_id VARCHAR(10) PRIMARY KEY,
department_name VARCHAR(100) NOT NULL
) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- 社員表
CREATE TABLE employees (
employee_id VARCHAR(10) PRIMARY KEY,
name VARCHAR(100) NOT NULL,
gender ENUM('男', '女') NOT NULL,
birth_date DATE NOT NULL,
salary DECIMAL(10, 2) NOT NULL,
department_id VARCHAR(10) NOT NULL,
FOREIGN KEY (department_id) REFERENCES departments(department_id)
) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- 部署データ
INSERT INTO departments (department_id, department_name) VALUES
('001', '総務部'),
('002', '経理部'),
('003', '営業部');
-- 社員データ
INSERT INTO employees (employee_id, name, gender, birth_date, salary, department_id) VALUES
('0001', '佐藤一郎', '男', '1951-01-01', 450000, '002'),
('0002', '鈴木二郎', '男', '1962-02-02', 400000, '003'),
('0003', '高橋花子', '女', '1973-03-03', 350000, '001'),
('0004', '田中四郎', '男', '1984-04-04', 300000, '001'),
('0005', '渡辺良子', '女', '1995-05-05', 250000, '003');
-- MySQLから抜ける
EXIT;
動作確認
# MySQLに接続(データベースを指定)
mysql -h db -u root -ppassword company_dbMySQLプロンプト内で以下を実行しよう。
-- テーブル確認
SHOW TABLES;
-- データ確認
SELECT * FROM employees;
SELECT * FROM departments;注意: データベースを指定せずに接続した場合は、以下を実行しよう。
USE company_db;基本的な使い方
MySQLへの接続
# データベースを指定して接続(推奨)
mysql -h db -u root -ppassword company_dbまたは、
# データベースを指定せずに接続
mysql -h db -u root -ppassword
# MySQLプロンプト内でデータベースを選択
USE company_db;テーブル確認
-- テーブル一覧
SHOW TABLES;
-- 社員データを表示
SELECT * FROM employees;
-- 部署データを表示
SELECT * FROM departments;データ検索
-- 給与が35万円以上の社員
SELECT * FROM employees WHERE salary >= 350000;
-- 営業部の社員
SELECT e.*
FROM employees e
JOIN departments d ON e.department_id = d.department_id
WHERE d.department_name = '営業部';
-- 名前に「田」を含む社員
SELECT * FROM employees WHERE name LIKE '%田%';
データ集計
-- 部署別の社員数
SELECT
d.department_name,
COUNT(e.employee_id) as employee_count
FROM departments d
LEFT JOIN employees e ON d.department_id = e.department_id
GROUP BY d.department_name;
-- 部署別の平均給与
SELECT
d.department_name,
AVG(e.salary) as average_salary,
MIN(e.salary) as min_salary,
MAX(e.salary) as max_salary
FROM employees e
JOIN departments d ON e.department_id = d.department_id
GROUP BY d.department_name;結合クエリ
-- 社員と部署を結合して表示
SELECT
e.employee_id,
e.name,
e.gender,
e.birth_date,
e.salary,
d.department_name
FROM employees e
JOIN departments d ON e.department_id = d.department_id;
並び替え
-- 性別で分けて、各性別内で生年月日順
SELECT gender, name, birth_date
FROM employees
ORDER BY FIELD(gender, '男', '女'), birth_date ASC;
ターミナルから直接実行
MySQLプロンプトに入らずに、ターミナルから直接SQLを実行することもできる。
# テーブル一覧(データベース名を指定)
mysql -h db -u root -ppassword company_db -e "SHOW TABLES;"
# 全社員表示
mysql -h db -u root -ppassword company_db -e "SELECT * FROM employees;"
# 複雑なクエリも実行可能
mysql -h db -u root -ppassword company_db -e "
SELECT d.department_name, COUNT(*) as count
FROM employees e
JOIN departments d ON e.department_id = d.department_id
GROUP BY d.department_name;"
重要: ターミナルから実行する場合は、必ず -e オプションの前にデータベース名 company_db を指定しよう。
学習リソース
- MySQL公式ドキュメント(外部サイトへ接続)
- SQL基礎文法(外部サイトへ接続)
接続情報
- ホスト: db
- ユーザー: root
- パスワード: password
- データベース: company_db
- ポート: 3306
ファイル構成
mysql-learning/
├── .devcontainer/
│ ├── devcontainer.json # Codespaces設定
│ └── docker-compose.yml # Docker構成
└── README.md
次回以降の起動
Codespacesを再起動した場合
- データは保持されているので、すぐに使える
- 以下の通りMySQLに接続しよう
mysql -h db -u root -ppassword company_db変更をコミット&プッシュ
Codespacesで作業した内容をGitHubに保存(プッシュ)する方法を説明しよう。
変更を確認
ターミナルで以下のコマンドを実行する。
git status変更をステージングに追加
# すべての変更を追加
git add .
# 特定のファイルだけ追加する場合
git add ファイル名コミット(変更を記録)
git commit -m "コミットメッセージ"コミットメッセージの例:
git commit -m "練習用クエリを追加"git commit -m "VIEWを作成"git commit -m "README修正"
ポイント:
- コミットメッセージは何を変更したか分かるように書こう
- 日本語でOK
プッシュ(GitHubに送信)
git push成功すると以下の通り表示される。
Enumerating objects: 4, done.
...
To https://github.com/ユーザー名/mysql-learning
abc1234..def5678 main -> main

コメント