【SQL】データベースの基礎① - 基本コマンド, LIKE演算子, ワイルドカード -
データベースとは
情報やデータを整理して保存する仕組みや場所のこと。
データベースにはさまざまな種類があり、ウェブサイトのユーザー情報やオンラインショップの商品情報、ゲームの進行状況など、さまざまなデータを効率的に管理できる。つまりデータベースは情報の整理や検索が得意な「データの保管庫」のようなもの。
データベースの仕組み
データベースは表でデータを整理する仕組み。
-
テーブル(Table):
データベース内には、たくさんのテーブルがあり、情報を並べた表のようなもの。 -
カラム(Column):
テーブル内の縦の列はカラムと呼ばれる。カラムは特定の情報を表します。例えば、レストランのメニューテーブルには「料理名」や「価格」などのカラムがある。 -
レコード(Record):
テーブル内の横の行はレコードと呼ばれる。レコードには実際のデータが格納される。例えば、メニューテーブルの1つのレコードには1つの料理の情報が含まれ、たくさんのレコードがテーブル内に存在する。
以下は例。
メニューテーブル(Menus)
id | name | price | category |
---|---|---|---|
1 | ハンバーガー | 500円 | ファースト |
2 | ピザ | 800円 | イタリアン |
3 | 寿司 | 1,200円 | 和食 |
クエリとは
クエリ(Query)とは、データベースから情報を取得したり、データを操作したりするための命令文やコマンドのこと。
SELECTとは
データベースから情報を取得するためのコマンドのこと。SELECTを使用し、どのデータ(カラム)を取得するかを指定する。
FROMとは
FROMは、データベースの中に複数のテーブルがある場合、どのテーブルからデータを取得するかを指定するコマンド。
コマンド例
以下のように末尾にはセミコロン(;)をつける。
SELECT 列名 FROM テーブル名;
複数のカラムからデータを取得する場合
メニューテーブルを例とする。
コンマ(,)で区切る。
SELECT name, price FROM menus;
すべてのカラムからデータを取得する場合
「*」を使用する。
SELECT * FROM menus;
WHEREとは
WHEREを使うことで、データベースから条件に合ったレコード(横の行)を取得することができる。
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を使うことで、「○○を含む」という条件になる。
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; |
続きは以下。
スクール期間中、息子の2度目のコロナ感染から、俺も再度感染など、体調不良が続き更新が止まってしまっていました💦
また今日から更新していきます!
Discussion