何かやってみるブログ

興味をもったこと、趣味のこと、技術について色々書きます。

SQL 第2版 ゼロからはじめるデータベース操作を読んだ

SQL 第2版 ゼロからはじめるデータベース操作を読んだので備忘録として残します。

SQL 第2版 ゼロからはじめるデータベース操作

SQL 第2版 ゼロからはじめるデータベース操作

  • 作者:ミック
  • 発売日: 2016/07/11
  • メディア: Kindle版

第0章 イントロダクション

  • Postgresqlのインストール

https://www.postgresql.org/download/macosx/

第1章 データベースとSQL

  • SQLはその目的によってDDL、DML、DCLに分類できる。

DDL ( データ定義言語 )

データベースを作成したり削除したりする

CREATE: データベースやテーブルを作成する

DROP: データベースやテーブルを削除する

ALTER: データベースやテーブルの構成を変更する

DML ( データ操作言語 )

テーブルの行を変更したり検索したりする。

SELECT: テーブルから行を検索する

INSERT: テーブルに新規行を追加する

UPDATE: テーブルの行を更新する

DELETE: テーブルの行を削除する

DCL ( データ制御言語 )

データベースに行った変更を確定したり取り消したりする。データベースを使用するユーザーの権限を管理する。

COMMIT: データベースに対して行った変更を確定する

ROLLBACK: データベースに対して行った変更を取り消す

GRANT: ユーザーに操作の権限を与える

REVOKE: ユーザーに操作の権限を奪う


  • ISO) が定めた標準規格に準拠したSQLを標準SQLという。
  • 文字列と日付の定数はシングルクォーテーションで囲む。

データ型の指定

  • INTEGER型  整数
  • CHAR型 固定長文字列の文字列
  • VARCHAR型 可変長文字列
  • DATA型 日付

第2章 検索の基本

  • WHEREで等しくない条件で検索する時は != ではなく<>を使う
  • 複数の検索条件を組み合わせる時は ANDORを使う
  • NULLを検索条件を含める時は IS NULL、含めない時は NOT NULLを使う。

第3章 集約と並び替え

GROUP BYはテーブルをカットするために使う。

集約関数

  • COUNT: テーブルのレコード数を数える
  • SUM: テーブルの数値列のデータを合計する
  • AVG: テーブルの数値列のデータを平均する
  • MAX: テーブルの任意の列のデータの最大値を求める
  • MIN: テーブルの任意の列のデータの最小値を求める

  • 重複値を除外したい時はDISTINCTを使う
  • WHERE句 = 行に対する条件指定、 HAVING句 = グループに対する条件指定
  • ORDER BY句では、SELECT句でつけた別名を利用できる

第4章 データの操作

UPDATE文

UPDATE <テーブル名> SET <列名>= <式> WHERE <条件>
  • トランザクションとは データベースに対する1つ以上の更新をまとめて呼ぶ時の名称
  • トランザクションの開始
-- PostgresSQL, SQL Serverの場合
BEGIN TRANSACTION
-- My SQL の場合
START TRANSACTION

ACID特性

http://e-words.jp/w/ACID特性.html

第5章 複雑な問い合わせ

  • VIEW(ビュー)とはSELECT文の実行結果に名前を付けて、TABLEと同じようにアクセスできるもの
  • サブクエリとは使い捨てのVIEWのこと
  • スカラサブクエリとは戻り値が単一になるサブクエリのこと
  • 相関サブクエリを使うと小分けしたグループ内で比較できる。

https://qiita.com/aki3061/items/736abd6ea883ba647586

第6章 関数、述語、CASE式

関数の種類

  • 算術関数: 数値の計算を行うための関数
  • 文字列関数: 文字列を操作するための関数
  • 日付関数: 日付を操作するための関数
  • 変換関数: データ型や値を変換するための関数
  • 集約関数: データの集計を行うための関数

いろいろある https://www.postgresql.org/docs/12/functions.html


述語

  • LIKE: 文字列部分一致検索
  • BETWEEN: 範囲検索
  • IS NULL、IS NOT NULL: NULLかどうかの判定
  • IN: ORの便利な省略形

第7章 集合演算

  • 集合演算とは、レコードを足したり引いたりすること
  • 集合演算を行うにはUNION(和)、INTERESCT(交差)、EXCEPT(差)などの集合演算子を使う。
  • 集合演算子は重複を排除するが、残すにはALLオプションをつける

  • UNIONなどの演算子によって行を増やすことができるが、列を増やすことが出来ない。列を増やすにはJOINという演算子を使う。
  • 内部結合と外部結合

https://qiita.com/naoki_mochizuki/items/3fda1ad6594c11d7b43c

  • LEFTを使うと左のテーブルをマスタとし、RIGHTを使うと右のテーブルをマスタにする。
  • 3つ以上のテーブルを内部結合する時はINNER JOIN句を使う

第8章 SQLで高度な処理を行う

ウィンドウ関数(OLAP関数)

利用方法 memo

  • 集約関数(SUM、AVG、COUNT、MAX、MIN)をウィンドウ関数として使う.
  • RANK、DENSE_RANK、ROW_NUMBERなどのウィンドウ専用関数を使う。
  • ORDER BYの後ろに範囲指定のキーワードを使用すると集計範囲(フレーム)を指定できる。

ex) PRECEDING、FOLLOWING

Grouping演算子

  • ROLLUP
  • CUBE
  • GROUPING SETS

投げ銭していただける方は以下のボタンからよろしくお願いいたします。

takayaにOFUSEする