はじめに
スッキリわかるSQL入門を読んだので、感想などをまとめてみました。
内容
第1章 はじめてのSQL
第2章 基本文法と4台命令
第3章 操作する行の絞り込み
第4章 検索結果の加工
第5章 式と関数
第6章 集計とグループ化
第7章 副問い合わせ
第8章 複数テーブルの結合
第9章 トランザクション
第10章 テーブルの作成
第11章 さまざまな支援機能
良かったところ
dokoQLというクラウドサービスを使って学習できる為、初心者がつまずきやすい環境構築を行わず、実際に手を動かしながら学習できるので良いと思いました。
章ごとに練習問題が作られており、インプットとアウトプットを交互に行えるので、効率的に学習できました。
学んだこと
SQL
- データーベースに格納されている情報を検索したり、書き換えたりする為に使用される操作言語
RDB(リレーショナルデーターベース)
- 複数の表が入っており、個々の表を
テーブル
と言う - テーブルは、行と列で構成される
4大命令
- SELECT - テーブルから目的のデータを指定して取得する
SELECT 列名...
FROM テーブル名
- UPDATE - テーブルに存在しているデータを書き換える
UPDATE テーブル名
SET 列名1 = 値1, 列名2 = 値2
- DELETE - テーブルに存在している行を削除する
DELETE
FROM テーブル名
- INSERT - 新しいデータを追加する
INSERT INTO テーブル名
(列名1, 列名2, 列名3,)
VALUES (値1, 値2, 値3)
WHERE句
1. 処理対象の行の絞り込みに用いる
2. SELECT、UPDATE、DELETE文で使用可能
3. WHEREの後ろに条件式を記入する
4. WHERE句に記述できるのは結果が必ず真(TRUE)または、偽(FALSE)になる条件式にする
WHERE 条件式
NULL
- 値が不明または、無意味であるためにデータが格納されてない状態を表す
検索結果の加工
- DESTINCT - 重複行を除外する
- ORDER BY - 結果を並び替える
- OFESET-FETCH - 行を限定して取得する
- UNION、EXCEPT/MINUS、INTERSECT - 結果を集合演算する
関数
- 引数に対して決められた処理を行い、戻り値に変換する
- 処理の内容に応じて、文字列関数、算術関数、日付関数、変換関数などに分類される
集計関数
- 検索対象の全行をまとめて、集計処理を行う
- 集計関数の結果は、必ず1行になる
代表的な集計関数
- SUM → 各行の合計値を求める
- MAX → 各行の最大値を求める
- MIN → 各行の最小値を求める
- AVG → 各行の平均値を求める
- COUNT → 行数をカウントする
グループ化
- グループ分けの基準となる列を指定することで、グループ別に集計できる
SELECT グループ化の基準列名, 集計関数
FROM テーブル名
WHERE 絞り込み条件
GROUP BY グループ化の基準名
テーブルの結合
- テーブルを分割しデータを安全、確実、高速に取り扱うために行う
SELECT 選択列リスト
FROM テーブルA
JOIN テーブルB
ON 両テーブルの結合条件
トランザクション
- 複数のSQL文を1つの命令として扱うことができる
- DNBSは、トランザクションに含まれるすべてのSQL文について、必ず「すべての実行が完了している」か「1つも実行されていない」かのどちらかの状態になるようにする
テーブルの作成
CREATE TABLE テーブル名 (
列名1 列1の型名,
列名2 列2の型名,
:
列名X 列Xの型名
)
テーブルの削除
DROP TABLE テーブル名
テーブル定義の変更
列の追加
ALTER TABLE テーブル名 ADD 列名 型
列の削除
ALTER TABLE テーブル名 DROP 列名
制約
- テーブル作成時に各列に制約を制定し、予期しない値が格納されないようにする
インデックス
- テーブルの列に対して、索引を作れる
- インデックスが存在する列に対する検索は、高速になる
難しかったこと
テーブル設計の部分は、個人的に難しく、まだまだ理解が浅いなあと感じました。