SQLを使う - SELECT文

SELECT文の基本機能

  • SELECT文は、データベースからデータを抽出するコマンドです
  • 射影:特定のフィールド(列)だけ取り出すこと
  • 選択:特定のレコード(行)だけを取り出すこと

SELECT文の基本構文

  • テーブルに登録されている全てのレコードを取り出したり、特定の列のみレコードを取り出したりする基本的な検索方法
全レコード検索
  • SELECT文の基本的な構文は、「指定したテーブルから指定した列のデータを取得してください」という命令です

SELECT 列名 FROM テーブル名;

SELECT productnm, price FROM product;
  • 複数の列を指定する場合は、,(カンマ)で列を区切ります
全列取得
  • 全ての列を取得したい場合は、全ての列名を指定する代わりに、*(アスタリスク)を指定します
SELECT * FROM product;
データを計算して取得
  • データを取得するときに、計算式を列名の代わりに指定して、計算結果を取得する方法
SELECT productnm, price * 1.3 FROM product;

※商品の価格を一律3割増しの場合

データを並べ替えて取得
  • データを並べ替えて取得するには、ORDER BYを使用します
  • 数字は、1、2、3・・・の順、英字は、a、b、c・・・の順、ひらがなは、あ、い、う・・・順と並べ替えられます
  • ORDER BYの後に、並べ替えのキーとなる列を指定します。


price(価格)を昇順(小さい順)に並べ替えて取得する場合

SELECT * FROM product ORDER BY price;


降順(大きい順)でデータを取得したい場合

  • DESCキーワードを列名の後ろに指定
SELECT * FROM product ORDER BY price DESC;


複数列を指定した並べ替えの場合

  • categoryId(カテゴリーID)で昇順に並べ替えて、カテゴリーID毎にprice(価格)で降順に並べ替えます
SELECT * FROM product ORDER BY categoryId, price DESC;

検索条件による検索

  • 必要なデータだけを取り出す検索方法
WHERE句
  • ある条件でデータを絞り込んで検索したい場合、その条件を指定するのみWHERE句を使用します
  • WHERE句は、FROMテーブル名の後に記述し、WHEREの後に条件を指定します
SELECT * FROM テーブル名 WHERE 検索条件;


《例》

SELECT * FROM product WHERE categoryId = 1;

テーブルの構造を変更

フィールドを追加する
  • テーブルの末尾に1個の idフィールドを追加する




WHEREで検索

  • 検索対象のデータを挿入しておきます

比較演算子を使って検索

比較演算子 意味 例の意味
A = B AとBが等しい 単価=200 単価が200
A > B AとBより大きい 単価>200 単価が200より大きい

A >= B

AとBより大きいか等しい 単価>=200 単価が200以上
A < B AとBより小さい 単価<200 単価が200未満
A <= B AとBより小さいか等しい 単価<=200 単価が200以下
A <> B AとBは等しくない 単価<>200 単価が200でない

INT型に等号を使う
SELECT * FROM my_items WHERE price=180;



VARCHAR型、TEXT型に等号を使う
SELECT * FROM my_items WHERE item_name='いちご';



不等号を使う
SELECT * FROM my_items WHERE price<180;



LIKE - 部分検索

  • LIKEは半角空白に続けて検索したい文字を追加します
  • 前後に「%」がついていることに注意
前後をあいまいにした部分検索
SELECT * FROM my_items WHERE keyword LIKE '%甘い%';



後ろのみをあいまいにした部分検索(前方一致)
SELECT * FROM my_items WHERE keyword LIKE '赤い%';



  • 「いちご」だけがヒットします
  • 「りんご」にも「赤い」というキーワードが含まれていますが、検索条件で後ろにしか「%」がついていないため、これは先頭が「赤い」というキーワードを検索するという条件になっています

AND、OR - 複数の検索を組み合わせて使う

複数の条件をすべて満たすデータの検索
  • 「AND」で複数の条件をつなぐと「かつ」「さらに」といった条件を加えることができます
SELECT * FROM my_items WHERE price>=50 AND price<150;



複数の条件をどれかを満たすデータの検索
  • 「OR」は、「または」といった条件を加えることができます
SELECT * FROM my_items WHERE id=2 OR id=4;



複雑な条件での検索
SELECT * FROM my_items WHERE (id=2 OR id=4) AND price<150 AND keyword LIKE '%甘い%';



OR条件を使う時の注意

  • 「OR」と「AND」を同時に使う場合「()」で条件を囲まなければ正常に動作しません
SELECT * FROM my_items WHERE id=2 OR id=4 AND price<150 AND keyword LIKE '%甘い%';


これは以下のような条件になってしまっています。

id=2 
OR 
id=4 AND price<150 AND keyword LIKE '%甘い%';


つまり、id=2の商品が必ずヒットしてしまいます。