LoginSignup
0
0

More than 3 years have passed since last update.

SQL-色々な方法でテーブルからデータを抽出してみる(SELECT,AND,OR,WHERE,LIKE)

Last updated at Posted at 2021-04-29

テーブルの中身

以下のようなテーブルから、色々な方法でデータを抽出していきたいと思います。
学習したことを忘れないようにするアウトプット用です。

+----+-----------------------+------------+------------+-----------+----------+
| 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文を今回まとめました!
これからも逐一まとめていきたいと思います!

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