SQLでSELECT文で表(テーブル)からデータを取得する方法まとめ

表のname列を選択

SQLはデータベースを扱うプログラミング言語です。

今回は「SELECT」というSQLを使ったデータの取得方法をまとめました。

名称の確認(テーブル・カラム・レコード)

テーブルとデータベースのイメージ

まず、名称のおさらいをしますね。

データベースとは、テキストや数値などのデータを保存する場所のことです。

エクセルのような表でデータを管理しており、この表のことをテーブルと言います。

SQLを使って、データベースからデータを取り出す命令を出します。

表の名称の説明

テーブル(表)の縦列を「カラム」といい、橫列を「レコード」と言います。

ここでは、食べもののデータを扱った【foodテーブル】からデータを取得する方法を紹介します。

食べ物を扱ったデータの表

SELECT文でカラム(縦列)からデータを手に入れる

表のname列を選択

テーブル(表)からデータを取得するとき、「SELECT文」を使います。

以下のような記述で縦列のデータを取得できます。

SQL
SELECT カラム名
FROM テーブル名;

なので、foodテーブルのname列のデータを取得する際は次のような記述になります。

SQL
SELECT name
FROM food;

複数のカラムからデータを手に入れる

nameとpriceを選択した表

複数のカラムからデータを取得する際は、カラム名をカンマ(,)を使います。

SQL
SELECT カラム名1, カラム名2 
FROM テーブル名;

なので、foodテーブルのnameとpriceのデータを取得する際は次のような記述になります。

SQL
SELECT name, price 
FROM food;

すべてのカラムから全データを手に入れる

表の項目をすべて選択

全カラムからデータを取得するやり方は2つあります。

1つは全てのカラムを「SELECT」で選択する方法です。

SQL
SELECT id, name, price, category
FROM food;

もう1つは「*」を使う方法です。

SQL
SELECT *
FROM food;

WHERE文で特定のレコード(橫列)からデータを手に入れる

同じカテゴリーを選択

特定のデータだけを取得する際は「WHERE文」を用います。

ただし、テキストデータはダブルコーテーション(””)で囲む必要があり、数値データは(””)がいりません。

間違えないように気をつけてくださいね!

SQL
SELECT *
FROM テーブル名
WHERE カラム名 = "テキストデータ";
SQL
SELECT *
FROM テーブル名
WHERE カラム名 = 数値データ;

なので、foodテーブルのcategoryカラムの”yasai”データを取得する際は次のような記述になります。

SQL
SELECT *
FROM food
WHERE category = "yasai";

またpriceカラムの300データを取得する際は、(””)を使わない記述になります。

表から300の項目を選択

SQL
SELECT *
FROM food
WHERE price = 300;

ちなみに”2018-01-01”のような日付データは””が必要なので注意してください!

不等号を使って特定のデータを手に入れる

200円以上のデータを選択

たとえば、priceが200以上のデータを取得するときは次のように書きます。

SQL
SELECT *
FROM food
WHERE price >= 200;

大小を比較する記号はまとめました。

a < b a が b より小さいデータを選択
a > b a が b より大きいデータを選択
a <= b a が b 以下のデータを選択
a >= b a が b 以上のデータを選択

特に、以下(<=)と以上(>=)よく間違えるので気をつけてください。

LIKE文とワイルドカードで特定の文字列を含むデータを手に入れる

「ラーメン」という文字を含むデータを取得する

ラーメンとざるそばの表

新たに「menテーブル」というデータを考えます。

表のように「ラーメン」という単語を含むデータを取得する場合、

「LIKE演算子」と「ワイルドカード(%)」を使います。

SQL
SELECT *
FROM men
WHERE name LIKE "%ラーメン%";

「〇〇ラーメン」というデータを取得する

〇〇ラーメンのデータを選択した表

今度は「〇〇ラーメン」のデータを取得して、「ラーメン〇〇」や「〇〇ラーメン〇〇」のデータは取得しない場合を考えます。

「〇〇ラーメン」のデータを取得するときは、”%ラーメン”と記述します。

SQL
SELECT *
FROM men
WHERE name LIKE "%ラーメン";

「ラーメン〇〇」というデータを取得する

「ラーメン〇〇」をデータを選択した表

続いて、「ラーメン〇〇」のようにラーメンからはじまるデータを取得するには、”ラーメン%”と記述します。

SQL
SELECT *
FROM men
WHERE name LIKE "ラーメン%";

NOT文で〇〇を含まないデータを手に入れる

ラーメン以外のデータを選択した表

否定のNOTを使うと「〇〇と一致しないデータ」を取得できます。

LIKE演算子と組み合わせると、次の記述で”ラーメン”という文字列を含まないデータを選択できます。

SQL
SELECT *
FROM men
WHERE NOT name LIKE "%ラーメン%";

LIKE演算子に限らず、<= や > といった不等号を用いた記述もできます。

カラムに何も入ってないデータを手に入れる

データがないデータを選択した表

データによっては、中身が何もないものもあります。

何も保存されてないデータはNULL(ヌル)を使います。

SQL
SELECT *
FROM men
WHERE price IS NULL;

=(イコール)ではなく、IS を使う点に注意してください。

カラムに何も入ってないデータ以外を手に入れる

データがないデータ以外を選択した表

NOT と NULL を使えば、何も保存されていないデータ以外のデータを取得できます。

SQL
SELECT *
FROM men
WHERE price IS NOT NULL;

AND・ORを使って複数の条件でデータを手に入れる

ANDを使って複数の条件を満たすデータを選択

ラーメン以外のデータを選択した表

「sukiカラム」がsuki であり、「priceカラム」が550という条件を同時に満たすデータを選択するときは、以下のような記述になります。

SQL
SELECT *
FROM men
WHERE suki = "suki"
AND price = 550;

ORを使ってどちらかの条件を満たすデータを選択

mettyasukiと600のどちらかを満たすデータを選択した表

「priceカラム」が600のデータ、または「sukiカラム」が”mettyasuki”のデータを取得する際の記述は以下のようになります。

SQL
SELECT *
FROM men
WHERE price = 600
AND suki = "mettyasuki";

データを並び替える

ASCで小さい数から大きい数にデータを並び替える

小さい数から大きい数へ並び替えた表

データを並び替えるときは「ORDER BY」を使います。

WHERE文を使って条件をつきで、並び替えることもできます。

priceカラムを小さい数から順に並べるときは、以下のとおり。

SQL
SELECT *
FROM men
ORDER BY price ASC;

DESCで大きい数から小さい数にデータを並び替える

大きい数から小さい数へ並び替えた表

priceカラムを大きい数から順に並べるときは、以下のようになります。

SQL
SELECT *
FROM men
ORDER BY price DESC;

LIMITで必要な数だけデータを手に入れる

値段の安い順に3つだけ選択した表

すべてのデータではなく、必要な数だけデータを取得するには、「LIMIT」を使います。

SQL
SELECT *
FROM men
LIMIT ほしいデータの数;

「LIMIT」は「WHERE」や「ORDER BY」と合わせて使えます。

今回の表のように、priceカラムの値が小さいものから3つ取得する記述は以下のようになります。

SQL
SELECT *
FROM men
ORDER BY price ASC
LIMIT 3;

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です