SQL文とは
SQLはデータベース言語の一つで、データベースの定義や操作を行うことができます。
SQLはISO(国際標準化機構)で規格が標準化されており、一度学習すればほかのデータベースでもほぼ同じように操作可能です。
SQL文は大きく分けて3種類の言語から構成されています。データベースを制御したり操作したりする際に使い分けられ、すべて命令文で動詞と目的語を組み合わせた構文です。
- データ定義言語(Data Definition Language)
データ定義言語はDDLと略され、RDBMSで扱うオブジェクト(テーブルやインデックスなど)の構造や、オブジェクト同士の関係を定義する構文です。
<DDLの命令文>
CREATE: 新しいデータベースやテーブルなどのオブジェクトを定義する
JOIN:テーブル同士を結合する
DROP:定義したオブジェクトを削除する
ALTER:定義したオブジェクトの内容を変更する
TRUNCATE:データをすべて削除する
-
データ操作言語(Data Manipulation Language)
データ操作言語はDMLと略され、データベースを操作するための構文です。目的語やさまざまな条件を示すキーワードと組み合わせて使われ、多くのパターンがあります。目的語には「~以上」「~以下」などの条件をつけることもでき、SQL関数と呼ばれる関数を使用することもできます。
<DMLの命令文>
SELECT:データベースを検索する
INSERT:データを挿入する
DELETE:データを削除する
UPDATE:データを更新する -
データ制御言語(Data Control Language)
データ制御言語はDCLと略され、データへのアクセスを制御する構文です。トランザクションやシステムを管理したり、ユーザーのアクセス権を制御したりするために使われます。
<DMLの命令文>
GRANT:ユーザー権限を付与する
REVOKE:ユーザー権限を削除する
BEGIN:トランザクションを開始する
COMMIT:トランザクションを確定する
ROLLBACK:トランザクションを取り消す
使い方
SELECT(どのカラムから)
SELECT name
FROM(どのテーブルから)
SELECT name
FROM shoppinglist;
複数のカラムからデータを取得
SELECT name
FROM shoppinglist;
WHERE(特定のレコードを取得)
SELECT *
FROM shoppinglist
WHERE price = 100;
データ型
データベースに保存するデータには「データ型」というルールがある。それぞれテキストや数値、日付など「データの種類」を示す。
比較演算子の一覧
- LIKE演算子(ある文字を含むデータを取得)
SELECT *
FROM shoppinglist
WHERE name LIKE "%魚%";
- ワイルドカード
SELECT *
FROM shoppinglist
WHERE name LIKE "%納豆%";
- 前方一致
SELECT *
FROM shoppinglist
WHERE name LIKE "トマト%";
- NOT演算子
SELECT *
FROM shoppinglist
WHERE NOT price = 100;
- NULLのデータを取得
SELECT *
FROM shoppinglist
WHERE NOT price = 100;
- AND演算子
SELECT * FROM shoppinglist
WHERE name = "鶏肉"
AND price = 300;
- OR演算子
SELECT * FROM shoppinglist
WHERE name = "鶏肉"
OR name = "もやし";
- ORDER BY
SELECT * FROM shoppinglist
ORDER BY price DESC;
- 「ORDER BY」と「WHERE」の併用
SELECT * FROM shoppinglist
WHERE name = "鶏肉"
ORDER BY price ASC;
- LIMIT
最大で何件取得するか
SELECT * FROM shoppinglist
LIMIT 3;
- DISTINCT(重複データを省く)
SELECT DISTINCT(name)
FROM shoppinglist;
- 四則演算
足す(+)、引く(-)、かける(*)、割る(/)ができる。
例えば、買い物リストの各商品に消費税を入れる。↓
SELECT name,price * 1.08
FROM shoppinglist;
- SUM関数
SELECT SUN(price)
FROM shoppinglist;
- AVG関数
SELECT AVG(price)
FROM shoppinglist;
- COUNT関数
↓カラム指定
SELECT COUNT(name)
FROM shoppinglist;
↓全てのカラム
SELECT COUNT(*)
FROM shoppinglist;
- MAX・MIN関数
SELECT name,MAX(price)
FROM shoppinglist;
- GROUP BY(グループ化をする)
GROUP BYを用いると、データをグループ化することができます。例えば図のように「GROUP BY カラム名」とすることで、指定したカラムで、完全に同一のデータを持つレコードどうしが同じグループとなる。
SELECT SUM(price),date
FROM shoppinglist
GROUP BY date;
- HAVING(グループ化したデータを絞り込む)
SELECT SUM(price),date
FROM shoppinglist
GROUP BY date
HAVING SUN(price)>500;
※HAVINGはグループ化された後のテーブルから検索するため、条件文で使うカラムは必ずグループ化されたテーブルのカラムを使う。