SQLとは
- データベース上の操作を行うのが目的な「データベース言語」
- 例えば生徒名簿(データベース)から特定の生徒を抽出したり、生徒を増やしたりできる
- 基本の抽出方法は5種類
- SELECT
- WHERE(AS,ORDER BY,GROUP BY)
- INSERT
- UPDATE
- DELETE
- データベース同士を結合してデータを取り出せたりもする
- INNER JOIN
- LEFT OUTER JOIN(RIGHT OUTER JOIN)
SELECT
- 列(表の縦列)から抽出する
- SELECT 列名 FROM テーブル名
- 列名は複数選択できる。その際は「,」で区切る
- SELECT 名前 FROM 生徒名簿;
WHERE
- SELECTからさらに条件を付けて絞り込みができる
- WHERE 列名 条件式 値
- SELECT * FROM 生徒名簿 WHERE 生徒No <= 13;
- 様々な演算子が使える
- AND → 左辺かつ右辺
- OR → 左辺または右辺
- BETWEEN a AND b → a以上b以下
- IN → いずれかを含む
- LIKE → 文字列の一部を含む
- IS NULL → NULL値のフィールド
- IS NOT NULL → 値のあるフィールド
AS
- 列に別の名前を付けて抽出できる
- SELECT 商品名,税抜き価格*1.10 AS 税込み価格 FROM 商品;
ORDER BY
- 抽出結果を並び替えられる
- 「ASC」が昇順(1...10)、「DESC」が降順(10...1)
- SELECT * FROM 生徒名簿 ORDER BY ASC;
GROUP BY
- データをグループ化(一括に)できる
- 日付が10/1に集金した学費の合計を出したいなど(日付をグループ化している)
- SELECT SUM(学費),日付 FROM 学費の集金 GROUP BY 日付;
INSERT
- データを追加できる
- 1行だけでなく複数行も可
- INSERT INTO テーブル名(列名A,列名B,…) VALUE(値A,値B,…);
UPDATE
- 既存のデータを更新できる
- UPDATE テーブル名 SET 更新内容
- UPDATE 生徒名簿 SET 年齢 = 10 WHERE 生徒名='佐藤’;
DELETE
- データを削除できる
- 複数、全てのデータの削除が可
- リスクが高く注意が必要
- DELETE FROM テーブル名; でテーブル自体を削除
- DELETE FROM 生徒名簿 WHERE 出席番号 = NULL;
INNER JOIN
- 内部結合できる
- 内部結合は、それぞれのテーブルの指定した列の値が一致するものだけを結合すること
- 内部結合は、ベースとなるテーブルから、条件にマッチするレコードがないものは削除される
- SELECT 列名1, 列名2, ... FROM テーブル名1 INNER JOIN テーブル名2 ON 結合の条件;
- SELECT * FROM students INNER JOIN parents ON students.parent_id = parent.id;
LEFT OUTER JOIN(RIGHT OUTER JOIN)
- 外部結合できる
- 内部結合のようにそれぞれのテーブルの指定したカラムの値が一致するものを結合するのに加え、どちらかのテーブルにしか存在しないものに関しても取得する
- LEFT OUTER JOINは左側のテーブルを軸にする、RIGHT OUTER JOINは右側のテーブルを軸にする
- SELECT 列名1, 列名2, ...,FROM テーブル名1 LEFT(RIGHT) OUTER JOIN テーブル名2 ON 結合の条件;
- SELECT * FROM students LEFT OUTER JOIN parents ON students.parent_id = parent.id;