SQL「StructuredQueryLanguage」
RDBの操作を行う言語です。
データベースに対して命令(クエリ)を行います。
SQL(エスキューエル)とはクエリを書くための言語とも言えます。
命令は大きく以下の3つです。
データを定義する「DDL(Data Definition Language)」
データを操作する「DML(Data Manipulation Language)」
データを制御する「DCL (Data Control Language)」
DDL
データを定義するSQLです。以下のような作成/更新/削除などの命令文があります。
命令 | 機能 |
---|---|
CREATE | データベースやテーブルの作成 |
ALTER | データベースやテーブルの更新 |
DROP | データベースやテーブルの削除 |
DML
データを操作するSQLです。以下のような登録/更新/削除/検索などの命令文があります。
命令 | 機能 |
---|---|
INSERT | データの登録 |
UPDATE | データの更新 |
DELETE | データの削除 |
SELECT | データの検索 |
SELECT, FROM
「SELECT」は「どのカラム(縦の列)を取得するか」を指定します。
SELECT name「nameカラムのデータを取得」
「FROM」は「どのテーブルから取得するか」を指定します。
FROM users 「usersテーブルからデータを取得」
SELECT name, email 「複数カラムの指定」はカンマで区切ります。
SELECT * 「全てのカラム指定」にはアスタリスクを用います。
WHERE
「WHERE」「どのレコード(横の行)を取得するか」
WHERE name = "鈴木"; 「usersテーブル、nameカラム,、鈴木レコード」
文の最後はセミコロンをつけてください。
SQLでも演算子が、下記2文のように使えます。
WHERE price >= 100 「値段が1000以上」
WHERE created_at <= "2020-04-15" 「2020年4月15日以前」
特定の文字を含むデータを取得したい場合は、「〜のような」という意味を持つ「LIKE演算子」を使います。
「ワイルドカード」とは、どんな文字列にも一致することを指す記号です。LIKE演算子では「%」をワイルドカードとして扱います。
WHERE name LIKE "%鈴木%"; 「鈴木が文字列内に含まれるデータを取得」
WHERE name LIKE "鈴木%"; 「鈴木で始まるデータを取得」 前方一致
WHERE name LIKE "%鈴木"; 「鈴木で終わるデータを取得」 後方一致
「NOT演算子」は「NOT」を置くことで、指定の条件を満たさないデータを取得することが可能です。
WHERE NOT name = "鈴木"; 「スズキではないデータを取得」
WHERE NOT name LIKE "%鈴木%"; 「鈴木を含まないデータを取得」
「IS NULL」「カラム名 IS NULL」で、 「指定したカラムがNULLであるデータ」を取得する
「NULLではないデータ」を取得する場合は「IS NOT NULL」を用います。「カラム名 IS NOT NULL」
WHERE name is NULL; 「nameカラムがnullのレコードを取得」
WHERE name is NOT NULL; 「nameカラムがnullではないレコードを取得」
AND演算子 WHEREに複数の条件を指定することができます。「WHERE 条件1 AND 条件2」のようにすることで、条件1と条件2を共に満たすデータを検索することができます。
WHERE name = "鈴木"
AND age = 17;
OR演算子は、AND演算子と同様に、複数の条件を扱います。「WHERE 条件1 OR 条件2」のようにすることで、条件1または条件2のどちらかを満たすデータを検索することができます。
WHERE name = "鈴木"
OR age = 17;