0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Docker + MySQL 環境構築で詰まった点と、SQL課題で学んだこと

Posted at

はじめに

SQLの学習課題に取り組む中で、
Dockerを使ったMySQL環境構築や、SQLの書き方でいくつか詰まったポイントがありました。

この記事では、
実際に手を動かしていてハマった点と、そこから理解できたことを整理します。

同じようにDockerやSQLを学習している方の参考になれば幸いです。

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

DockerでMySQLコンテナに入れなかった話

起きたこと

以下のコマンドを実行したところ、
docker exec -it middle_examination_sql bash

Error response from daemon: No such container: middle_examination_sql
というエラーが出て、コンテナに入れませんでした。

原因

Dockerイメージとコンテナを混同していた

そもそもコンテナが起動していなかった

対応と理解

まず起動中のコンテナを確認。

docker ps

その後、コンテナを起動。

docker run -d --name middle_examination_sql -p 3306:3306 middle_examination_sql
docker exec -it middle_examination_sql bash

👉 イメージを作っただけでは docker exec は使えず、
コンテナを起動して初めて中に入れるという基本を理解しました。

MySQL操作で混乱した点
mysql> の状態で mysql コマンドを打ってしまった

MySQLにログインした後、mysql> プロンプトの状態で

mysql -pcollege

を入力してしまい、SQLエラーになりました。

学んだこと

mysql -pxxx は bash(ターミナル)で実行するコマンド

mysql> は SQLを書く場所

SHOW DATABASES;
USE employees;
SHOW TABLES;

のように、SQL文のみを書く必要があると整理できました。

SQL①:最初の役職を取得する
実行したSQL
SELECT title
FROM titles
WHERE emp_no = 49988
ORDER BY from_date ASC
LIMIT 1;

ポイント

「最初」を求める場合は 日付で昇順ソート

LIMIT 1 で1件に絞る

👉 条件・並び順・件数制限をセットで考えることが重要。

SQL②:titleの種類数を数える
SELECT COUNT(DISTINCT title)
FROM titles;

ポイント

重複を除く場合は DISTINCT

種類数を数える場合は COUNT(DISTINCT カラム)

SQL③:特定期間に該当する給与を取得する
SELECT salary, from_date, to_date
FROM salaries
WHERE emp_no = 40000
AND from_date <= '1996-12-31'
AND to_date >= '1996-01-01';

ポイント

期間条件は
開始日 <= 期間の終わり AND 終了日 >= 期間の始まり

AND の前後にスペースを入れることで可読性が上がる

まとめ

今回の学習を通して、

Dockerは「イメージ」と「コンテナ」を分けて考える

MySQLでは「どの環境でコマンドを打っているか」を意識する

SQLは「何を取得したいか」を言語化してから書く

という基礎だけど重要な点を再確認できました。

今後も詰まった点は、アウトプットとして整理していきたいと思います。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?