8tako8tako8’s blog

ソフトウェアエンジニア

【感想】「スッキリわかるSQL入門」を読んで

概要

SQLはバックエンドエンジニアに必須スキルであり、今回は知識の再確認のため、ミック本の次のステップとして有名な「スッキリわかるSQL入門」を読んだ感想です。

良かったところ

  • 基礎知識が整理できた
  • 一部知らないことを知れたこと

学んだこと

サブクエリをINSERT文で利用する

あまり使う機会はなさそうですが、サブクエリを用いてデータ追加する方法です。

# 平均所有ポイントより高いユーザーを高ポイントテーブルに追加
insert into high_point_users (id, name, point)
select id, name, point
from users
where point > (select avg(point) from users);

他のテーブルに登場する行のみ抽出したい

これは頻繁に使うパターンです。

# 高ポイントテーブルに登場するユーザーのみ抽出
select name
from users u
where exists
(
  select *
  from high_points_users hpu
  where u.id = hpu.id
);

truncatedeleteより高速

定番の知識ではありますが、テーブルの全件を削除したい時には、truncatedeleteより高速です。 今回はその理由をちゃんと理解することができました。

  • truncate:記録を残さずに全行削除するため高速(しかし、ロールバックできない)
  • delete:行ごとにログ記録が行われるため、大量のデータを削除する際にはパフォーマンスが低下する

まとめ

SQLの基礎知識を改めて整理するために、「スッキリわかるSQL入門」を読んだ感想を簡単にまとめました。新しく知られた知識はほとんどなかったですが、知識の再確認ができたことにより、確実に身についているとわかり自信が持てました。今後も、新しい知識だけでなく、既に知っていることの再確認は定期的にやっていこうと思います!