次回の案件からSQLを使用することになったので、改めてSQLのクエリ操作について学びなおそうと思います。
SQLはテストをするにも開発をするにも、使用することになるので基礎的な部分はしっかりとわかりやすくまとめます。
【初心者用】SQLのクエリ操作基礎1
1. SQLでのクエリ操作について
データベースはリレーショナルデータベース型の表で管理しています。
データベースの表のことを「テーブル」縦の列のことを「カラム」、横の行のことを「レコード」と呼びます。
また、データベースは必要に応じて複数のテーブルを作成することが可能となっています。
データベースからデータを取得するには「データを取得してください」というデータベースに送る命令(クエリ)が必要になります。
SQLはその命令(クエリ)を書くための言語
クライアント →クエリ→ DB
←データ←
データベースからデータを取得する為に、「SELECT」を使用します。
この「SELECT」を用いて{どのカラムのデータを取得するか」を選びます。
例
SELECT name←カラム名(列名)
データベースには複数のテーブルが存在する場合があり、そのため「FROM」を用いて制御します。
SELECT で選んだカラムが「どのテーブルのカラム」かを指定する必要があります。
例
SELECT name ←どのカラムデータを取得するか
FROM purchases ← どのテーブルから取得するか
最後に「どこまでがクエリか」ということをデータベースに伝えるため、「セミコロン(;)」を使用します。
クエリは1行で記述することができますが、わかりやすいように開業します。
また、SQLは大文字と小文字を区別しないので、小文字で記述しても問題ありません。
例
SELECT name
FROM purchases;←ここまでがクエリとなります。
purcharsesテーブルからpriceカラムのデータを取得
例
SELECT price FROM purchases;
複数のカラムからデータを取得する場合
複数のカラムからデータを取得する場合は、カラム名に「コンマ(、)」で区切ります。
例
SELECT name,price ←name,priceのカラム列からデータを取得
全てのカラムからデータを取得する場合は
例
SELECT id,name,price FROM purchases;
↓
SELECT * FROM purchases;←*ですべてのカラムを指定できる。
1-1. WHERE
取得したテーブルから特定のデータを取得する場合、特定のデータを取得するためには、「どこの」という意味を持つ「WHERE」を使用します。
「SELECT」、「FROM]で特定のテーブルのどこのカラムデータを取得するかを決めています。
ですので、「WHERE」では「どこのレコード(行)を取得するか」を指定します。
例
データにはデータ型があり、今回指定する「雑費」のようなテキストは、「””(ダブルクォーテーション)」で囲む必要があります。
データ型には文字列型や数値型など様々な型があります。
例
「SELECT」、「FROM]で特定のテーブルのどこのカラムデータを取得するかを決めています。
ですので、「WHERE」では「どこのレコード(行)を取得するか」を指定します。
・WHEREの使用
「どこのレコードのデータを取得するか」を指定する為に、「=」を使用して「**カラムが**であるレコード」といった意味になるように条件を指定します。例
WHERE category = 〇〇 ←特定のワード
◆「WHERE」を使用して特定のデータの取得をする
今回は「WHERE category = "雑費"」のような条件で、categoryというカラムから「雑費」というデータを取得する場合の具体例をあげます。データにはデータ型があり、今回指定する「雑費」のようなテキストは、「””(ダブルクォーテーション)」で囲む必要があります。
データ型には文字列型や数値型など様々な型があります。
例
SERECT * FROM purchases
WHERE category = ”雑費”;←セミコロンでクエリの終了
1-2. データ型について
データベースに保存されているデータには、「データ型」と呼ばれるルールがあります。
「データ型」とは、テキストデータや数値データ、さらには日付データといったように「データ種類」を示すものとなります。
例
例えば、「商品の値段が1000円であるでデータ」を取得する場合は、「priceカラム」に「数値データ」が保存されているため、クォーテーションでかっ込まなくて大丈夫です。
「データ型」とは、テキストデータや数値データ、さらには日付データといったように「データ種類」を示すものとなります。
例
id=数値 、 name=テキスト 、 price=数値
例えば、「商品の値段が1000円であるでデータ」を取得する場合は、「priceカラム」に「数値データ」が保存されているため、クォーテーションでかっ込まなくて大丈夫です。
◆SERECT * FROM purchases
WHERE price = 1000;←ダブルクォーテーションで囲まない
1-3. 日付データを取得する場合
次に日付が「2023-07-15」のデータを取得する場合は、日付を示す「カラム」に「日付のデータ」が保存されています。
日付データは「ダブルクォーテーション」または「シングルクォーテーション」で囲む必要があります。
例
日付データは「ダブルクォーテーション」または「シングルクォーテーション」で囲む必要があります。
例
SELECT * FROM データがあるテーブル
WHERE 日付データがあるカラム="2023-07-15";
1-4. 今回使用したデータ型
◆テキスト
・ダブルクォーテーション又はシングルクォーテーションで囲む
例 "テキスト"
◆数値
・整数値で表示
例 10
◆日付
・ダブルクォーテーション又はシングルクォーテーションで囲んだ日付
例 "2023-07-15"
1-5. 比較演算子を使用した取得
・比較演算子
例
日付データを使用する際には、データ型に気を付けてダブルクォーテーション又はシングルクォーテーションを使用する必要があります。
例
◆種類
a < b : aがbより小さいデータを検索
a <= b : aがbより小さいまたはaがbと等しいデータを検索
a > b : aがbより大きいデータを検索
a >= b : aがbより大きいまたはaがbと等しいデータを検索
例
SELECT * FROM テーブル名 WHERE カラム名 >= 1000;
◆日付の比較
値段のような数値データ以外にも、日付データにも比較演算子を使用することが可能です。日付データを使用する際には、データ型に気を付けてダブルクォーテーション又はシングルクォーテーションを使用する必要があります。
例
SELECT * FROM テーブル名 WHERE 日付カラム <= "2023-07-15";
1-6. LIKE演算子
「ある文字を含むデータ」を取得したい場合は、~のようなという意味を持つ「LIKE演算子」を使用します。
LIKE演算子を使用することで「指定したカラムが(特定の文字)を含むレコード」を取得するという条件になります。
例
ITの世界で「ワイルドカード」とは「どんな文字列にも一致することを指す記号」となります。
LIKE演算子では「%」をワイルドカードとして使用し、これにより特定の文字を含むデータをすべて取得できます。
例
※特定の文字の前後に「%」をつけることで、特定の文字を含んだすべてのデータを取得します。
例
例
例
LIKE演算子を使用することで「指定したカラムが(特定の文字)を含むレコード」を取得するという条件になります。
例
SELECT * FROM テーブル名 WHERE カラム名 LIKE 特定の文字;
◆ワイルドカード
LIKE演算子を使用する際に覚えておく必要があることで、「ワイルドカード」というものがあります。ITの世界で「ワイルドカード」とは「どんな文字列にも一致することを指す記号」となります。
LIKE演算子では「%」をワイルドカードとして使用し、これにより特定の文字を含むデータをすべて取得できます。
例
SELECT *(取得するカラム全て選択) FROM テーブル名 WHERE カラム名 LIKE "%特定の文字%";
※特定の文字の前後に「%」をつけることで、特定の文字を含んだすべてのデータを取得します。
例
SELECT * FROM テーブル名 WHERE カラム名 LIKE %特定の文字%;
◆前方一致
ワイルドカードを前後どちらかに置くことで、特定の文字が前か後ろかにつく文字を検索できます。例
SELECT * FROM テーブル名 WHERE カラム名 LIKE "特定の文字%";
◆後方一致
後方一致では最後に特定の文字で終わるデータを取得します。例
SELECT * FROM テーブル名 WHERE カラム名 LIKE "%特定の文字"
2. まとめ
今回のクエリ操作は以下の
■クエリ操作について
■SELECT,FROM,WHEREについて
■データ型、比較演算子、LIKE演算子
などを学びました。
こちらはクエリ操作の基礎のなので、初心者は覚えておく必要があります。