LoginSignup
0
0

More than 1 year has passed since last update.

SQL 特定のデータを取得しよう

Posted at

特定のデータを取得

特定のデータを取得するためには、「どこの」という意味を持つ「WHERE」を用います。「SELECT」と「FROM」で「どのテーブルのどのカラムのデータを取得するか」までは決まっていますので、「WHERE」が意味するのは、「どこのレコード(横の行)を取得するか」になります。
「どこのレコード(横の行)のデータを取得するか」を指定するためには、左の図のように「=」を用いて、「〇〇カラムが〇〇であるレコード」といった意味になるように条件を指定します。

SELECT カラム 
FROM テーブル名
WHERE カラム = 数字;

文字のデータ型を入力する時は""で挟む
データ型については以下で説明

SELECT カラム 
FROM テーブル名
WHERE カラム = "文字";

データ型について

データベースに保存されているデータには、「データ型」と呼ばれるルールがあります。「データ型」とは、テキストデータや数値データ、さらには日付データといったように「データの種類」を示すものです。
データ型の種類については以下の記事を詳細
https://qiita.com/shuhoyo/items/07d28cec6babe788051d

比較演算子

WHEREの条件では「=」の他にも比較演算子を活用できる。
例として1000以上であるレコードなどを取得する場合以下になります。

SELECT カラム 
FROM テーブル名
WHERE カラム <= 1000;

「ある文字を含むデータ」を取得したい場合

「ある文字を含むデータ」を取得したい場合は、「〜のような」という意味を持つ、「LIKE演算子」を用います。図のようにすることで「指定したカラムが〇〇を含む(〇〇のような)レコード」という条件となります。

ワイルドカード

LIKE演算子を用いる際に覚えておく必要があるのが「ワイルドカード」です。コンピュータの世界で「ワイルドカード」とは、どんな文字列にも一致することを指す記号です。LIKE演算子では「%」をワイルドカードとして扱います。これにより図では「文字」を含むデータを全て取得しています。

SELECT カラム
FROM テーブル名
WHERE カラム LIKE '%文字%';

前方一致

ワイルドカードを文字列の前後どちらかにのみ置くことも可能です。図のように「〇〇%」とした場合、「〇〇」以降はどんな文字列にも一致しますので、「〇〇」で始まる文字列を検索することができます。このような検索を「前方一致」と呼びます。

SELECT カラム
FROM テーブル名
WHERE カラム LIKE '%文字';

後方一致

また、図のように「%〇〇」とした場合、「〇〇」より前はどんな文字列にも一致しますので「〇〇」で終わる文字列を検索することができます。このような検索を「後方一致」と呼びます。

SELECT カラム
FROM テーブル名
WHERE カラム LIKE '文字%';

一致しないデータを取得したい場合

「〇〇を含まないデータ」や「〇〇に一致しないデータ」のような条件でデータを取得したい場合は「否定」を意味する「NOT演算子」を用います。これまで学習した演算子の前に「NOT」を置くことで、その条件を満たさないデータを取得することが可能です。

SELECT カラム
FROM テーブル名
WHERE NOT カラム LIKE '%文字%';

中身がなにかわからない・何のデータも保存されていない場合

データベースには、中身がなにかわからない・何のデータも保存されていない場合などにNULLとなる。

NULLのデータを取得する

「指定したカラムがNULLであるデータ」を取得するには、「IS NULL」を用います。

SELECT カラム
FROM テーブル名
WHERE カラム IS NULL;

NULLではないデータを取得する場合

SELECT カラム
FROM テーブル名
WHERE カラム IS NOT NULL;

複数の条件

AND演算子

AND演算子を使うと、WHEREに複数の条件を指定することができます。「WHERE 条件1 AND 条件2」のようにすることで、条件1と条件2を共に満たすデータを検索することができます。

SELECT カラム1,カラム2
FROM テーブル名
WHERE カラム1 = '文字' AND カラム2 = '文字';

OR演算子

OR演算子は、AND演算子と同様に、複数の条件を扱います。「WHERE 条件1 OR 条件2」のようにすることで、条件1または条件2のどちらかを満たすデータを検索することができます。

SELECT カラム1,カラム2
FROM テーブル名
WHERE カラム1 = '文字' OR カラム2 = '文字';
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