テーブルの中身
以下のようなテーブルから、色々な方法でデータを抽出していきたいと思います。
学習したことを忘れないようにするアウトプット用です。
+----+-----------------------+------------+------------+-----------+----------+
| id | name | sauna_temp | water_temp | area | sex |
+----+-----------------------+------------+------------+-----------+----------+
| 1 | ウェルビー栄 | 90 | 16 | 愛知 | 男性 |
| 2 | 湯ラックス | 93 | 12 | 熊本 | 男女OK |
| 3 | ウェルビー福岡 | 85 | 16 | 福岡 | 男女OK |
| 4 | サウナイーグル | 110 | 7 | 愛知 | 男性 |
| 5 | かるまる池袋 | 100 | 5 | 東京 | 男性 |
| 6 | スカイスパ | 70 | 16 | 神奈川 | 男性 |
| 7 | サウナラボ | 70 | 22 | 愛知 | 女性 |
| 8 | ウェルビー名駅 | 80 | 18 | 愛知 | 男性 |
+----+-----------------------+------------+------------+-----------+----------+
テーブルの作成方法
以下のコマンドで、テーブルを作成します。
--まず、tablesというテーブルを作成します。ここでは、カラムの詳細などを設定しています。--
CREATE TABLE tables ( --
id INT NOT NULL AUTO_INCREMENT, --AUTO_INCREMENTで、idが自動で生成されるようにしています。--
name VARCHAR(20), --VARCHARは、文字列のデータ型です--
sauna_temp INT, --INTは、数値のデータ型です--
water_temp INT,
area VARCHAR(20),
sex ENUM('男性', '女性', '男女OK'), --ENUMで、性別を指定しています--
PRIMARY KEY (id) --idを主キーとして設定しています。--
);
--作成したテーブルにデータを入れていきます。
INSERT INTO tables (name, sauna_temp, water_temp, area, sex) VALUES
('ウェルビー栄', 90, 16, '愛知', 1), --ENUM型のデータは、数字で指定することもできます--
('湯ラックス', 93, 12, '熊本', 3),
('ウェルビー福岡', 85, 16, '福岡', 3),
('サウナイーグル', 110, 7, '愛知', 1),
('かるまる池袋', 100, 5, '東京', 1),
('スカイスパ', 70, 16, '神奈川', 1),
('サウナラボ', 70, 22, '愛知', 2),
('ウェルビー名駅', 80, 18, '愛知', 1);
SELECTを用いて、条件をつけてデータを取得する。
まずは、WHEREを用いて、条件を指定し、その条件をクリアしたデータだけを表示させてみます。
SELECT * FROM tables WHERE sauna_temp > 90; --sauna_tempが90より大きいものだけを表示
--結果
+----+-----------------------+------------+------------+--------+----------+
| id | name | sauna_temp | water_temp | area | sex |
+----+-----------------------+------------+------------+--------+----------+
| 2 | 湯ラックス | 93 | 12 | 熊本 | 男女OK |
| 4 | サウナイーグル | 110 | 7 | 愛知 | 男性 |
| 5 | かるまる池袋 | 100 | 5 | 東京 | 男性 |
+----+-----------------------+------------+------------+--------+----------+
sauna_tempが90以上のものだけを取得することができました。
ANDとORを使って、複数の条件を適用させる。
ANDとORを用いることで、複数の条件をつけてデータを抽出することができます。
下の例では、ANDを条件式に用いることで、二つの条件どちらにも当てはまったデータだけを抽出しています。
SELECT * FROM tables WHERE sauna_temp > 90 AND water_temp < 10;
--「sauna_tempが90より大きい」 かつ、 「water_tempが10より低い」 ものだけを抽出--
+----+-----------------------+------------+------------+--------+--------+
| id | name | sauna_temp | water_temp | area | sex |
+----+-----------------------+------------+------------+--------+--------+
| 4 | サウナイーグル | 110 | 7 | 愛知 | 男性 |
| 5 | かるまる池袋 | 100 | 5 | 東京 | 男性 |
+----+-----------------------+------------+------------+--------+--------+
次の例では、ORを用いて二つの条件を示し、どちらか片方にでも該当したデータを抽出しています。
SELECT * FROM tables WHERE sauna_temp > 90 OR water_temp < 10;
--「sauna_tempが90より大きい」 もしくは、 「water_tempが10より低い」 ものを抽出--
+----+-----------------------+------------+------------+--------+----------+
| id | name | sauna_temp | water_temp | area | sex |
+----+-----------------------+------------+------------+--------+----------+
| 2 | 湯ラックス | 93 | 12 | 熊本 | 男女OK |
| 4 | サウナイーグル | 110 | 7 | 愛知 | 男性 |
| 5 | かるまる池袋 | 100 | 5 | 東京 | 男性 |
+----+-----------------------+------------+------------+--------+----------+
LIKEを用いて、特定の文字列を持ったデータを抽出する。
LIKEを用いることで、特定の文字列を含むデータを抽出することができます。
LIKEに続く'ウェルビー%'の「%」は、任意の文字列を表しています。
他にも任意の一文字を表す、「 _ 」アンダーバーがあります。
--「%」を用いた場合
SELECT * FROM tables WHERE name LIKE 'ウェルビー%'
+----+-----------------------+------------+------------+--------+----------+
| id | name | sauna_temp | water_temp | area | sex |
+----+-----------------------+------------+------------+--------+----------+
| 1 | ウェルビー栄 | 90 | 16 | 愛知 | 男性 |
| 3 | ウェルビー福岡 | 85 | 16 | 福岡 | 男女OK |
| 8 | ウェルビー名駅 | 80 | 18 | 愛知 | 男性 |
+----+-----------------------+------------+------------+--------+----------+
SELECT * FROM tables WHERE name LIKE 'ウェルビー_' --「ウェルビー」の後に一文字つづく文字列を指定している。
+----+--------------------+------------+------------+--------+--------+
| id | name | sauna_temp | water_temp | area | sex |
+----+--------------------+------------+------------+--------+--------+
| 1 | ウェルビー栄 | 90 | 16 | 愛知 | 男性 |
+----+--------------------+------------+------------+--------+--------+
最後に
超基礎的なSQL文を今回まとめました!
これからも逐一まとめていきたいと思います!