このチャプターの目次
まずは環境構築
筆者はMacなので、homebrewを使ってMySQLをインストールして学習しています。
環境構築する方法
PostgreSQLを使っていたのですが、環境構築がうまくいかないこともあり、割と簡単に環境構築できたMySQLをお勧めします!
こちらを参考にすればできます!
バージョンの差分でエラーとかは今のところないです。
学習に使うデータを用意する
ブラウザでSQLを実行できるサービスやご自身のパソコンに環境構築したSQLを使って、勉強をやってみましょう。
今回使うデータはこれ!
Github上にサンプルを用意しました。自分のメモ用ですけどね(笑)
とある学校のクラスが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を勉強していきます。