「スッキリわかるSQL入門」読書会レポート vol.1

株式会社リゾーム 技術部 システム開発 第4グループの平松です。 「Linux標準教科書」読書会が終わり少し間が空きましたが今回も社内で有志を募り読書会を始めました。 その内容をレポートにしていきたいと思います。

読書会の題材

題材として選んだのは、スッキリわかるSQL入門 第3版 ドリル256問付き! スッキリわかるシリーズです。

SQLの基礎からDB設計までを体系的に学べることができるかと思い、この本を選びました。

読書会の進め方

読書会の進め方はリゾームのテックブログで投稿している他の読書会記事と同じです。

  1. 読書会当日までに指定の章を事前に読んでおく
  2. 感想や疑問点をまとめて、Yammerにアウトプットする
  3. 当日、感想をそれぞれ発表して意見交換を行う

他の読書会記事はこちら

「現場で役立つシステム設計の原則」読書会レポート vol.1 - リゾームのテックブログ
「入門 監視」読書会レポート vol.1 - リゾームのテックブログ
「Linux標準教科書」読書会レポート vol.1 - リゾームのテックブログ

1回目レポート

初回は第1章「はじめてのSQL」のレポートになります。参加者は7名でした。

それぞれの感想・意見交換

データベースとは

  • リゾームでは使用しているRDBMSとしてPostgreSQL, MySQL, SQLite, SQL Serverがある
  • 担当製品で使用しているRDBMS以外は画面を見たことすらない
  • SQLが何の略かを書いていないのはなぜだろう?
    • 現在、ISOの規格ではSQLを何かの略語として扱っていないらしい
  • 列のことはカラムと呼ぶが行のことをロウって呼ぶ人は全然いない
  • どのDBMS製品でも基本は同じと書いてあるが、どの製品も色々と拡張しているイメージの方が強い

はじめてのSQL

  • SQLで何かするときはSELECTを使うことがほとんど
    • INSERT, UPDATE, DELETEはあまり使ったことがない
  • テストデータの作成でINSERT, UPDATEを使用することがある
  • 動作している環境に対して更新系のSQLを実行したことはない
    • アプリケーションの制約の手の届かないところでデータを変更してしまうとデータの整合性が取れなくなってしまう場合があるため
  • PaaSのHerokuにはDataClipsというSQLを実行できる環境があるため、データ抽出する際はそこから操作している
  • テストチームで最初に渡されたクエリが「SELECT * FROM テーブル名 WHERE なんとかかんとか」だった
  • dokoQL はおもしろい。環境用意しなくてもSQLを試せるのはいい
    • いつでも初期状態に戻せるので、安心してUPDATEやらDELETEやらできそう
  • テーブルやカラムの名前をつけるのは割と難しい
    • テーブル名が英語の場合は複数形にするか単数形にするかという問題がある
    • ローマ字表記の場合はヘボン式で統一するのも大事
  • SQLを書くとき、フォーマットどうするの?という問題もある
    • 一般的なプログラミング言語だと自動フォーマットがかなり普及しているけど、SQLは人によって書き方がバラバラな印象
      • カンマの位置とかインデントとか
    • 使ったことないけど、SQLFluffというlinterがあるみたい
  • 初めて触った時はエクセルとか表計算ソフトみたいだなと感じた
  • 同じDBMSでもバージョンで挙動が違う事が多いため検索などする際は注意
  • UPDATE、DELETE等で既存のレコードを変更する際には、WHERE句の指定が合っているかチェックするためにまずSELECTで対象を確認してから流すようにしている
  • 業務を通してSQLを学んだので改めて書籍で体系だった知識を身につけたい
  • RailsだとActiveRecord経由でデータの操作をするため、直接SQLを書くことは少ない

まとめ

SQL自体の説明からSQLでどのようなことができるかなど基礎的な説明がほとんどでしたが、 それぞれの担当製品で使用しているRDMBSについての話やどのような場面でSQLを使用することがあるかなど業務内容に沿った話を多くすることができたと思います。 次章は「基本文法と4大命令」で、文法の内容に入っていきます。ここでも業務や経験と絡めた感想を共有していきたいと思います。