はじめに

エンジニア、非エンジニアを問わず、これからのデータ時代を生き抜くにはデータを自在に扱えるようになる必要があります。そしてデータを扱う上で避けて通れないのが今回解説するSQL(エスキューエル)です。

データの取り扱いがエンジニアに限られていた以前までと違い、部署や職種の区別なくデータの利活用が求められる現在では、非エンジニアの人にとってもSQLについての理解を深めることは大きなメリットがあります。ひとつずつ理解していきましょう。

SQLとは?

多くのサイトでSQLについて解説されているように、SQLを一言で表すなら「データベースを操作するための言語」です。特にExcelシートのような表形式になっているデータベースの管理システム(RDBMS)の操作に使用します。

従来はいわゆるデータエンジニアと呼ばれるデータの取り扱いに特化したエンジニアを中心に利用されてきましたが、現代のWebアプリケーションはWebサーバ、アプリケーションサーバ、データベースサーバの三層構造で構成されることがほとんどで、データベースの利用は既にデータエンジニアだけのものではありません。また後述するようにセールスやマーケティングなどエンジニアリング以外の分野においても大規模なデータが利用されるようになり、それらのデータを処理するためにSQLが活用されつつあります。

SQLで何ができる?

SQLを使わなくとも、普段から私たちはExcelや、Google SpreadSheetsなどの表計算ソフトを利用してデータを取り扱っています。例えばExcelのシート上である行を選択してその行を削除、あるいはその行の上下に新しい行を挿入するなど、ソフトの機能によってデータの操作が可能です。データの検索や置換、関数を用いた計算など誰でも高度なデータ操作が出来るようになりました。

しかし、表計算ソフトで処理できるデータの件数には限りがあり、それを上回る膨大な件数のデータに対しては同様の処理をしようとしてもソフトが停止して処理できないという経験がある方もいるのではないでしょうか。

表計算ソフトは操作の手軽さや自由度と引き換えに大規模なデータを高速で操作するには向いていないという点が弱点の一つです。このようなケースでは別途膨大なデータも高速で処理できるデータベースツールを利用するというのが対策になります。

MySQLやPostgreSQL、Oracle databaseといったデータベース、Google BigQueryやAmazon Redshift、SnowflakeといったDWH(データウェアハウス)がこれに該当しますが、これらのツールに対してデータの処理内容を文字で命令するのがSQLです。データベースツールの操作を通じて、大規模なデータも高速で処理できるようになるという点がSQLの最大のメリットです。

またデータベースのツールだけでなく、Salesforceにおいてオブジェクトのデータ取得に特化したSQLベースのSOQL(Salesforce Object Query Language)が使用されるなど、データベースツールだけでなく、膨大なデータを取り扱い、複雑な条件でのデータ抽出や大規模なデータ操作が求められるようなサービスではSQLそのもの、あるいはSQLをベースにしてそのサービスに最適化された言語が使用できることが多いです。

このように近年はセールス、マーケティング関連のツールにおいてもSQLの利用が進んでおり、これが全ての人にとってSQLの学習メリットが大きいとされる点です。

SQLの習得

言語の習得というとJavaやC+といったいわゆるプログラミング言語がイメージされますが、SQLの習得はそれらの言語の習得と比べそこまで難度が高いものではなく、また基本的な概念は表計算ソフトの拡張と捉えればよいので、既にEXCELやGoogle SpreadSheetsの利用経験があれば十分に習得可能です。

具体的には入門的な書籍で基本的な構文を学びつつ、実際に手を動かしてサンプルのデータを操作してみるのが良いでしょう。

なかでも「スッキリわかるSQL入門 第3版 ドリル256問付き! (スッキリわかる入門シリーズ) 中山 清喬  (著), 飯田 理恵子 (著), 株式会社フレアリンク (監修)」は初心者エンジニア、あるいはITに強くなりたい学習者向けの工夫が多く、おすすめ出来る書籍です。

こちらの書籍はWebブラウザで動作する仮想のSQL環境を用意しており、「とりあえず触ってみたい」というユーザーにとってハードルの高い環境構築が必要ありません。また学習用のデータを前もって用意する必要もなく、この点もおすすめできる点のひとつです。

先述のSalesforceのようにSQLを利用するツールが既に身近にあれば、学習したことを用いて実際に手を動かしてデータを操作してみるとなお定着が進みます。

また自分が書いているSQLがどのように動作するかイメージがつきにくい人は、常に頭の中に大きなEXCELシートをイメージし、そのシートに対する操作をまずはEXCELでやるならどうやるか、次にそれをSQLで記述するならどう書くかというイメージを持つことで頭の中のやりたいこととSQLの記述が一致してきます。

SQLの書き方イメージ

最終的にはやりたいことがダイレクトにSQLで記述できるようになっていきます。

発展的な学習へ向けて

入門的なSQLの学習を終え、基本的な構文が扱えるようになった方向けにステップアップをいくつか書いておきます。

表計算ソフトへの応用

先ほどEXCELやGoogle Spreadsheetsは大規模なデータの処理には向いていないという旨を取り上げました。ただし、例えばGoogle SpreadsheetsではSQLライクなQUERY関数を使用することで画面上の操作よりも高速なデータの検索・抽出が可能です。またデータベースをGoogle SpreadsheetsからGoogle CloudSQLやGoogle BigQueryといったよりエンジニアに近いツールに移行することで扱えるデータのキャパシティを大幅に底上げすることが可能です。

正規表現の学習

データの取り扱いの中でも重要な点の一つがデータを漏れなく、より簡単に検索することです。そしてこのデータの検索に大きな強みを発揮するのが正規表現です。

正規表現についての詳細な説明は割愛しますが、端的に言うなら表記揺れ・バリエーションを抱えた文字列のまとまりを一つの表現で検索するための概念です。例えばある文字列から郵便番号のデータを検索しようとしても一つの検索でヒットする郵便番号は一つのみです。ですが郵便番号の「半角数字3桁 + ‘-‘ + 半角数字4桁」という構造に注目してこれを正規表現で表すと「^[0-9]{3}-[0-9]{4}$」という検索で全ての郵便番号を検索することが可能になります。

SQLを学習し、データベースの利用を進めていくなかで同時に正規表現についても触れておくと役立つ場面があると思います。また正規表現もSQL同様特定のツールでのみ動作するものではなく、Wordのような文書ソフトやテキストエディターなど文字列の検索が必要になるツールでは大抵使用できるという汎用性の高い概念です。

SQLの命令の種類

最後にSQLの代表的な命令を載せておきます。

SQLは命令型の言語です。データベースに対して命令文を送り、クエリ(問い合わせ)を行うことでデータベースを操作します。SQLにおける命令は、大きく4つに分類されます。

DDL (Data Definition Language)

データベースを定義する命令です。テーブルなどのデータベースオブジェクトの作成・削除・結合などが含まれます。

  • CREATE文
    • データベースやテーブルの作成
  • DROP文
    • データベースやテーブルの削除
  • ALTER文
    • データベースやテーブルの定義変更

DML(Data Manipulation Language)

データを操作する命令です。レコードの取得・追加・削除・更新などが該当します。

  • SELECT文
    • データベースから特定のデータを取得
  • INSERT文
    • データベースに対して新たなデータを追加
  • UPDATE文
    • データベース上のデータに対して更新を走らせる
  • DELETE文
    • データベースから特定のデータを削除

DCL(Data Control Language)

データの利用を制御する命令です。データやテーブルに対する権限の制御がこれにあたります。

  • GRANT文
    • データベースにアクセスしたいユーザーにアクセス権を付与
  • REVOKE文
    • データベースにアクセスしているユーザーから権限を剥奪

TCL(Transaction Control Language)

トランザクションの開始や終了に関する命令がこれにあたります。一部のDBMSでは、DCLに分類される場合もあります。

  • COMMIT文
    • トランザクション(データベースに対する一連の処理)を確定
  • ROLLBACK文
    • トランザクションを破棄して、トランザクション実行前の状態にロールバックさせる

まとめ

SQLは非エンジニアの方にも習得メリットが大きいことがおわかりいただけたかと思います。SQLはその規格が標準化されてから既に30年以上が経過し、何度かのアップデートが加えられていますが利用される場面は増え続けています。ぜひSQLを習得してデータ活用の幅を広げていきましょう。

また弊社が提供するデータ分析基盤構築サービスtrocco®においてもデータマートの定義やdbt連携機能でSQLが利用されており、SQLを記述することでさらに高度なデータパイプライン(収集されたデータがデータ分析にかけられるまでのデータの流れ)を容易に構築可能です。

もちろんSQLをほとんど利用せずデータ分析基盤を構築することも可能なので、興味がある方はぜひご検討ください。

データ分析基盤構築サービスtrocco
hirokazu.kobayashi

慶應義塾大学卒業後、2014年より株式会社リブセンスへ入社。データエンジニアとして同社分析基盤立ち上げをリードする。2017年より現職primeNumberに入社。自社プロダクト「systemN」におけるSpark/Redshift活用等のデータエンジニアリング業務を行うかたわら、データ統合業務における工数削減が課題だと感じ、データ統合を自動化するサービス「trocco®」を立ち上げる。