💽

【SQL】データベースの基礎① - 基本コマンド, LIKE演算子, ワイルドカード -

2023/09/23に公開

データベースとは

情報やデータを整理して保存する仕組みや場所のこと。
データベースにはさまざまな種類があり、ウェブサイトのユーザー情報やオンラインショップの商品情報、ゲームの進行状況など、さまざまなデータを効率的に管理できる。つまりデータベースは情報の整理や検索が得意な「データの保管庫」のようなもの。

データベースの仕組み

データベースは表でデータを整理する仕組み。

  • テーブル(Table):
    データベース内には、たくさんのテーブルがあり、情報を並べた表のようなもの。

  • カラム(Column):
    テーブル内の縦の列はカラムと呼ばれる。カラムは特定の情報を表します。例えば、レストランのメニューテーブルには「料理名」や「価格」などのカラムがある。

  • レコード(Record):
    テーブル内の横の行はレコードと呼ばれる。レコードには実際のデータが格納される。例えば、メニューテーブルの1つのレコードには1つの料理の情報が含まれ、たくさんのレコードがテーブル内に存在する。

以下は例。

メニューテーブル(Menus)

id name price category
1 ハンバーガー 500円 ファースト
2 ピザ 800円 イタリアン
3 寿司 1,200円 和食

クエリとは

クエリ(Query)とは、データベースから情報を取得したり、データを操作したりするための命令文やコマンドのこと。

SELECTとは

データベースから情報を取得するためのコマンドのこと。SELECTを使用し、どのデータ(カラム)を取得するかを指定する。

FROMとは

FROMは、データベースの中に複数のテーブルがある場合、どのテーブルからデータを取得するかを指定するコマンド。

コマンド例

以下のように末尾にはセミコロン(;)をつける。

sql
SELECT 列名 FROM テーブル名;

複数のカラムからデータを取得する場合

メニューテーブルを例とする。
コンマ(,)で区切る。

sql
SELECT name, price FROM menus;

すべてのカラムからデータを取得する場合

「*」を使用する。

sql
SELECT * FROM menus;

WHEREとは

WHEREを使うことで、データベースから条件に合ったレコード(横の行)を取得することができる。

sql
SELECT * FROM menus WHERE category = "和食";

データ型による取得方法の違いと比較演算子

「WHERE」を使用してデータを取得する際、異なるデータ型を持つカラムを対象とする場合、取得方法に違いがある。

以下の表は、異なるデータ型に基づく「WHERE」句の取得方法の違い。

メニューテーブル(Menus Table):

id name price category date_added
1 ハンバーガー 500円 ファースト 2023-08-15
2 ピザ 800円 イタリアン 2023-08-16
3 寿司 1,200円 和食 2023-08-17
データ型 説明 クエリ例
数値型(整数) price = 800 特定の値に等しい場合 SELECT * FROM Menus WHERE price = 800;
price > 800 特定の値より大きい場合 SELECT * FROM Menus WHERE price > 800;
price < 800 特定の値より小さい場合 SELECT * FROM Menus WHERE price < 800;
price >= 800 特定の値以上の場合 SELECT * FROM Menus WHERE price >= 800;
price <= 800 特定の値以下の場合 SELECT * FROM Menus WHERE price <= 800;
文字列型 category = "イタリアン" 特定の文字列に等しい場合 SELECT * FROM Menus WHERE category = "イタリアン";
日付型 date_added = "2023-09-23" 特定の日付に等しい場合 SELECT * FROM Menus WHERE date_added = "2023-09-23";
date_added > "2023-09-23" 特定の日付より後の場合 SELECT * FROM Menus WHERE date_added > "2023-09-23";
date_added < "2023-09-23" 特定の日付より前の場合 SELECT * FROM Menus WHERE date_added < "2023-09-23";

LIKE演算子とワイルドカードとNULLデータ

LIKE演算子とは

LIKEを使うことで、「○○を含む」という条件になる。

sql
SELECT * FROM menus WHERE name LIKE 文字列;

ワイルドカードとNULLデータ

  • 「ワイルドカード」とは、どんな文字列にも一致することを指す記号のこと。
    「%」をワイルドカードとして扱う。

  • 「NULL」とは何のデータも保存されいないカラム。

それぞれ取得するためには以下の表となる。

条件演算子/ワイルドカード 説明 クエリ例
等しい(Equal) category = "イタリアン" 特定の文字列に等しい場合 SELECT * FROM Menus WHERE category = "イタリアン";
部分一致(Partial Match) category LIKE "ファースト%" 特定のパターンに一致する場合(「ファースト」で始まる) SELECT * FROM Menus WHERE category LIKE "ファースト%";
category LIKE "%ピザ%" どこかに "ピザ" を含む SELECT * FROM Menus WHERE category LIKE "%ピザ%";
category LIKE "%イタリアン" 末尾が "イタリアン" SELECT * FROM Menus WHERE category LIKE "%イタリアン";
category LIKE "カレ_" "カレ" で始まり、次が任意の1文字 SELECT * FROM Menus WHERE category LIKE "カレ_";
特定の文字を含む(Character List) category LIKE "%[ハンバーガーピザ]%" "ハンバーガー" または "ピザ" を含む SELECT * FROM Menus WHERE category LIKE "%[ハンバーガーピザ]%";
特定の文字を含まない(Character List Negation) NOT category LIKE "%寿司%" "寿司" を含まない SELECT * FROM Menus WHERE NOT category LIKE "%寿司%";
文字列の先頭一致(Starts With) name LIKE "ハンバーガー%" "ハンバーガー" で始まる SELECT * FROM Menus WHERE name LIKE "ハンバーガー%";
文字列の末尾一致(Ends With) name LIKE "%ピザ" "ピザ" で終わる SELECT * FROM Menus WHERE name LIKE "%ピザ";
特定の文字列を含む(Contains) name LIKE "%バーガー%" "バーガー" を含む SELECT * FROM Menus WHERE name LIKE "%バーガー%";
任意の文字(Any Character) name LIKE "ピザ_" "ピザ" で始まり、次が任意の1文字 SELECT * FROM Menus WHERE name LIKE "ピザ_";
複数文字のワイルドカード name LIKE "ハ_バ_ガ_" "ハ" で始まり、"バ" が2文字続き、"ガ" で終わる SELECT * FROM Menus WHERE name LIKE "ハ_バ_ガ_";
NULL(値が存在しない) price IS NULL NULL(値が存在しない)をチェック SELECT * FROM Menus WHERE price IS NULL;
NOT NULL(値が存在する) price IS NOT NULL NOT NULL(値が存在する)をチェック SELECT * FROM Menus WHERE price IS NOT NULL;

続きは以下。
https://zenn.dev/ganmo3/articles/163d0a78abce1d


スクール期間中、息子の2度目のコロナ感染から、俺も再度感染など、体調不良が続き更新が止まってしまっていました💦
また今日から更新していきます!

Discussion