SQLが実践で使えるレベルとは?
2021/11/03
現在、データベースにはNoSQL形式のデータベースも使用され始めましたが、リレーショナルデータベースの人気は相変わらず高く、まだまだNoSQL形式のデータベース以上の勢力となっています。
そのリレーショナルデータベースを操作する言語形式がSQLです。Oracleだろうがdb2だろうが、ほぼ全てのリレーショナルデータベースはSQLを使います。勿論SQLサーバーもです。
今回は業務レベルでSQLが使えるようにすれば、どの位のレベルが必要になるかを解説していきたいと思います。
そもそもなぜリレーショナルデータベースの方が優勢なのか
理由としてはリレーショナルデータベースの方が格納されているデータの正確性が高いからです。
NoSQLは処理スピードを優先するために、データの正確性を犠牲にしました。(しょっちゅうデータの不整合が起こるわけではないとはいえ。)
よって、ネットゲームなどでは重宝されますが、データの高い正確性が求められる金融系やメーカー系のシステムにはあまり向いていません。
業務で使用するからには処理が多少遅くても、より正確なデータを算出できる方が需要が高いです。
業務で求められる事
この章では実際の業務ではSQLを使用してどのような事を求められるかを解説していきたいと思います。
もしよくわからない、と言う知識がある場合は改めて勉強しなおしましょう。SQLは英語に似ている文法ですし、学習した事がそのまま業務に生きる事も少なくないので、学習量に対する収入へのコスパが高いです。
データの抽出
言うまでも無く、ある特定の条件のデータを抽出できなければデータベースの意味はありません。
そもそもデータベースとはある一定の条件下で集められたデータの塊を言います。であればそこからまたある特定の条件のデータで抽出する事は想像に難くないと思います。
SQLで言う所のSELECTとWHEREです。これが最も基本的な言語であり、最も頻繁に使うSQLのコードです。データの検索や表示などで使います。
データの更新
データを検索するだけでなく、最新の状態に合わせて更新したり修正したりする事でデータを更に有効に使えます。
実際に業務で考えても、昇進したら部署の更新が必要ですし、結婚したら女性は苗字を更新しなければなりません。資格を取得したら資格手当をつけるために給与の更新も必要です。
SQLではUPDATEとSELECTを使用します。
データの追加
データと言う物は更新するだけでなく、新しく追加する事も多いです。
1レコードだけでリレーショナルデータベースを運用する等あり得ません。普通のノートで言うと、一行だけで全てのデータを何とかしようとするような物なので、無理がありますよね。
新しい顧客を獲得したなら顧客リストに加える必要がありますし、新入社員が入ったなら社員表に新規で追加しなければなりません。
SQLで言うと、INSERTとWHEREです。ちゃんとWHEREに適切なカラムと条件を入れないと、本来更新してはいけないデータまで更新してしまい、会社や現場を大混乱にしてしまうかもしれないので、注意しましょう。
データの削除
特に社員表などがそうですが、データは必要に応じて削除する必要があります。
データベースのレコードが多すぎると、検索処理に時間がかかるようになりますし、AWSのようなクラウドを使用している場合は費用も掛かります。
また、社員表や顧客リストのような個人情報をいつまでも格納しておくのは情報セキュリティの面から見ても好ましくはありません。
SQLで言うとDELETEとWHEREです。UPDATEと同じくWHEREに適切なカラムと条件を入れないと、本来削除してはいけないデータまで削除してしまいます。
関数の仕様
Excelと同様、リレーショナルデータベースも関数を使う事でより用途が広がります。(Excelも一種のデータベースなので当たり前ではあるのですが。)
平均値を求めたり部署のグループの人数を求める事で、状況がより詳細までわかるようになります。
SQLで言うとAVGやGROP BYなどです。特にこの二つの使用頻度が高いです。
結合
詳しくは後述しますが、普通データベースと言うのは一つの表に何でもかんでも詰め込むのではなく、幾つかの表に分けます。
そして、2つの表を照らし合わせて情報を更新したり検索する事があります。これを結合と言いSQLで言うと、UNIONとかJOINとかになります。
結合といっても様々な種類があり、例えば単純に営業部と総務部の人数を足し合わせるために使ったり、社員表と給与明細が格納された表を結合して社員個人個人の給与を問い合わせるために使います。
必要ない知識
嬉しい事に、SQLの場合、覚えといて損だったとか、全然使わなかった、と言うような物は無いと思います。
と言うのも上記に上げたような物以外でも、データを消したから復元したいとか、元の状態に戻したいなどと言う状況はそこまで珍しくないからです。
より高みに行くための
SQLから少し話がそれますが、データベース関連の業務でより高みに行くための技術も紹介したいと思います。
以下の二つの知識を覚えていれば、より上流の工程に進むことが出来ます。
データの正規化
前の章でも書きましたが、データベースと言うのは普通複数の表にデータを分けておきます。
1つの表に何でもかんでも詰め込むと、似たようなデータを詰め込んでいるカラムが散見したり、カラムのルールがばらけて保守性が著しく落ちます。
また、検索スピードも落ちるので、1つのテーブルに何でもかんでも詰め込むのは百害あって一利なしです。(実際には悲しい事に備考1、備考2とか謎且つ無駄なカラムを設定しているシステムは沢山あります。)
しかし、データを会社のニーズや一定のルールに分けるというのも意外に難しい物なので、覚えておくと会社で、特にゼロからシステムを開発する際は頼りにされます。
アップデート方法
データベースもOSやソフトウェアと同様にアップデートがあります。
アップデートをすると新機能などが使えるようになる代わりに、データの移行などが非常にめんどくさいですし、そもそもバージョンによってはストレートにアップデート出来ない場合もあり得ます。
OSのアップデートのように待てばよい、と言う物ではないのです。(OSにしても業務レベルで使う場合はアップデートも慎重な運用が求められますが。)
データベースのアップデートで指揮を取れる人間はそれほど多くありませんし。そもそもそれ自体が一代プロジェクトにもなります。アップデート方法に熟知していればそのプロジェクトで核の人材にに成れます。
SQLは学習効率が良い
SQLは英語に似た文法なので、取っつきやすく暗記もしやすいので、コスパが非常に良いです。
初心者の場合、SQLだけでも詳しくなればテスターなどで早くから活躍できる可能性もあります。
IT初心者はまずSQLから勉強するのもおすすめです。勿論ある程度サーバーサイド言語に熟知しているエンジニアもSQLを覚えておけばさらに良い現場に行くことが出来ます。
もしSQLやデータベースの勉強で悩んでいる、と言う方でも是非一度ご相談頂ければ幸いです!