Chapter 02

学習の準備

JboyHashimoto
JboyHashimoto
2022.10.10に更新

まずは環境構築

筆者はMacなので、homebrewを使ってMySQLをインストールして学習しています。

環境構築する方法
PostgreSQLを使っていたのですが、環境構築がうまくいかないこともあり、割と簡単に環境構築できたMySQLをお勧めします!

こちらを参考にすればできます!
バージョンの差分でエラーとかは今のところないです。
https://qiita.com/fuwamaki/items/194c2a82bd6865f26045

学習に使うデータを用意する

ブラウザでSQLを実行できるサービスやご自身のパソコンに環境構築したSQLを使って、勉強をやってみましょう。

今回使うデータはこれ!

Github上にサンプルを用意しました。自分のメモ用ですけどね(笑)
https://github.com/sakurakotubaki/MySQL-LESSON

とある学校のクラスが4クラスあって、そちらをデータ化して保存しています。といっても使うのは、最下層のDクラスさんばっかりなんですけどね...

テスト用のデータベースを作成して、CREATE TABLEをしてSQL学習用のデータを用意します。

データベースを作る。名前はなんでもいいですよ。

CREATE DATABASE MyDB;

作成したデータベースの中に移動する。

USE MyDB;

データを入れるテーブルを4つ作る。4つ作るのは、後でJOINするためなので、JOINしなければ、テーブルは1個でもいいですよ。

--A〜Dのクラステーブルを作成する--
--クラスの生徒の番号が、class_id、生徒の名前が、student_name、生徒の成績が、class_score--
--PRIMARY KEY (class_id)をつけること!--

--Aクラス--
CREATE TABLE ClassA(
  class_id CHAR(4) NOT NULL,
  student_name VARCHAR(32) NOT NULL,
  class_score INTEGER,
  PRIMARY KEY (class_id));

DESC ClassA;

--Bクラス--
CREATE TABLE ClassB(
  class_id CHAR(4) NOT NULL,
  student_name VARCHAR(32) NOT NULL,
  class_score INTEGER,
  PRIMARY KEY (class_id)
);

DESC ClassB;

--Cクラス--
CREATE TABLE ClassC(
  class_id CHAR(4) NOT NULL,
  student_name VARCHAR(32) NOT NULL,
  class_score INTEGER,
  PRIMARY KEY (class_id)
);

DESC ClassC;

--Dクラス--
CREATE TABLE ClassD(
  class_id CHAR(4) NOT NULL,
  student_name VARCHAR(32) NOT NULL,
  class_score INTEGER,
  PRIMARY KEY (class_id)
);

DESC ClassD;

SHOW TABLES;

INSERT文でデータを入れる。

--トランザクションでデータを登録する--
--MySQLの場合は、START TRANSACTION;をつけて、一番下にCOMMIT;を書く--

--Aクラスにデータを追加
START TRANSACTION;

INSERT INTO
  ClassA
VALUES
  ('0001', '坂柳', 100),
  ('0002', '橋本', 90),
  ('0003', '神室', 87),
  ('0004', '葛木', 95);

COMMIT;

SELECT * FROM ClassA;

--Bクラスにデータを追加
START TRANSACTION;

INSERT INTO
  ClassB
VALUES
  ('0001', '一ノ瀬', 100),
  ('0002', '神崎', 90),
  ('0003', '柴田', 87),
  ('0004', '姫乃', 84);

COMMIT;

SELECT
  *
FROM
  Classb;

--Cクラスにデータを追加
START TRANSACTION;

INSERT INTO
  ClassC
VALUES
  ('0001', '龍園', 60),
  ('0002', '伊吹', 50),
  ('0003', '石崎', 56),
  ('0004', '椎名', 100);

COMMIT;

SELECT
  *
FROM
  ClassC;

--Dクラスにデータを追加
START TRANSACTION;

INSERT INTO
  ClassD
VALUES
  ('0001', '綾小路', 100),
  ('0002', '堀北', 95),
  ('0003', '櫛田', 92),
  ('0004', '軽井沢', 78);

COMMIT;

SELECT
  *
FROM
  ClassD;

データが入っているかは、SELECT文で確認できましたね。入っているのが確認できたら次へ進みましょう。
これから、データを操作してSQLを勉強していきます。