気になった用語等をまとめる(第Ⅲ部以降を中心に、細かい所はきる)
導入
学んだこと
select xxx from xxx where xxx ~ 正規表現 # ~がポイント
0章
学んだこと
- 特になし
第Ⅰ部 SQLを始めよう
1章 はじめてのSQL
学んだこと
3命令 | 意味 |
---|---|
select | その行の内容を取得する |
update | その行の内容を更新する |
delete | その行を削除する |
insert | その行のデータを追加する |
2章 基本文法と4大命令
学んだこと
- 1章参照
3章 操作する行の絞り込み
学んだこと
- where句には条件を書く(TRUEとなる行だけが選ばれる)
- nullとは何も格納されていないもの(ゼロや空白とは異なる)
4章 検索結果の加工
学んだこと
- distinctは必ずselect文の最初に書く
- unionなどを使う際は必ず対象テーブルの列数とデータ型を一致させる
第Ⅱ部 SQLを使いこなそう
5章 式と関数
学んだこと
- ストアドプロシージャとは複数のSQL文をまとめたもの
- 関数は()を付けるのがポイント
- coalesceはnullの代替値を決定できる
select coalesce(メモ, 'メモはNULLです') as メモ from ...
6章 集計とグループ化
学んだこと
- 集計関数の結果は必ず一行
- 集計関数はselectかhavingで書く
- nullを含む計算や比較は基本的に結果はnull、一方で集計関数はnullは無視される
- groupbyの際にselectに書けるのはgroupbyで指定したカラムか集計関数のみ
7章 副問い合わせ
学んだこと
- 一行一列、多行一列、多行多列の三パターン
- 多行一列はinでよく使う
- inは列挙されたいずれかの値と等しければTRUE(nullを無視する)
- not inは列挙された値のどれとも一致しなければTRUE(nullがあれば全体の結果がnullとなる)
- fromのサブクエリはasで別名を付けると速度が早くなる可能性あり
- 相関サブクエリとはサブクエリからメインクエリの表や列を利用するもの
-- 他のテーブルの値が登場する行のみ抽出(existsを使った典型的なパターン) -- 繰り返しサブクエリを実行するため負荷大 select * from A where exists (select * from B where A.列 = B.列)
8章 複数テーブルの結合
学んだこと
- 繋ぐべき右表の行が複数ある時左表の行を複製して結合する
- 自己結合により行間比較を可能にする
第Ⅲ部 データベースの知識を深めよう
9章 トランザクション
学んだこと
トランザクションの指示(これで一つのトランザクションを表す) begin xxx commit -- 変更を確定 xxx ------------ begin xxx rollback -- 変更を取り消し xxx
- ②はロックにより成り立つ
- 正確なデータ操作とパフォーマンスは相反するため許容できる分離レベルを決定する
- ロックの対象は行だけでなくテーブルやDBまで及ぶ
- デットロックとはトランザクションの処理が途中で永久に止まること
- 対策1: トランザクションの時間を短くする
- 対策2: 同じ順番でロックする
10章 テーブルの作成
学んだこと
- テーブルへの権限を付与するgrant文、剥奪するrevoke文
- 人為的ミスを避けるためにはcreate table文に様々な制約を付ける(一貫性)
- 主キーが果たす二つの責任は「非null、重複なし」
11章 さまざまな支援機能
学んだこと
- 検索を早くするには指定列にインデックスを張る
- ビューはselect文を保存する
- バックアップ(永続性)
第Ⅳ部 データベースの知識を深めよう
12章 テーブルの設計
学んだこと
- 概念設計での情報の塊をエンティティと言い複数の属性を持つ
- エンティティはテーブル、属性はカラムのイメージ
- 概念設計はER図で表す(エンティティ、属性、リレーションを俯瞰して見る)
- 論理設計では正規化(矛盾したデータを格納できないようにテーブルを分割する)を行う
ステップ | 要件 |
---|---|
第1正規形 | テーブルの全ての行の全ての列に一つずつ値が入っているべきである。よって「繰り返しの列」や「セルの結合」が現れてはならない |
第2正規形 | 複合主キーを持つテーブルの場合、非キー列は複合主キーの全体に関数従属すべきである。よって「複合主キーの一部の列に対してのみ関数従属する列」が含まれてはならない |
第3正規形 | テーブルの非キー列は主キーに直接関数従属すべきである。よって「主キーに関数従属する列にさらに関数従属する列」は存在してはならない |
- 物理設計ではDBMSの選定、テーブルや列名、型等を決定する
最後に
良かったところ
わかりやすい
悪かったところ(もしあれば)
なし
学んだこと
基本的なSQLの文法や考え方
難しかったこと
なし
参考文献
スッキリわかるSQL入門
中山 清喬, 飯田 理恵子/株式会社インプレス/2018
キノコード / プログラミング学習チャンネル, SQL超入門コース 合併版|SQLの超基本的な部分をたった2時間半で学べます【SQL初心者向け入門講座】(2023/9/14取得).