Webサイト制作コースのお申し込みはこちら

SQLの整形についてまとめています

SQLの整形ツールのオンライン版・オフライン版

SQLの整形をおこなうメリット

システム開発時に、SQL文でエラーが発生した場合にSQL文の整形をおこなうとエラーが特定しやすくなります。また、整形することでSQLソースコードの可読性をあげて、バグの発生を防ぐという側面もあります。

しかし、複数人が関わるシステム開発では、インデントにタブを使うか空白を使うか、改行はandやorの前か後か、カンマは行頭か行末かなど、個人によって「正しい整形」は異なります。そこで、開発チーム共通で同一の整形ツールを使用することでSQLの不一致を防ぐことができます。

以下の暗号のような複雑なSQLを整形してみましょう。一見するだけでは、何が何やらわかりませんね。

select i.obj#,i.samplesize,i
.dataobj#,nvl(
i.spare1,i.intcols),i.spare6,dec
ode(i.pctthres$,null,null,mod(trunc(i.pctthres$/25
6),256)),ist.cachedblk,ist.cachehit,ist.logicalrea
d from ind$ i, ind_stats$ ist, (select enabled, mi
n(cols) unicols,min(to_number(bitand(defer,1))) de
ferrable#,min(to_number(bitand(defer,4))) valid# f
rom cdef$ where obj#=:1 and enabled > 1 group by e
nabled) c where i.obj#=c.enabled(+) and i.obj# = i
st.obj#(+) and i.bo#=:1 order by i.obj#

オンラインのSQL整形サイト、Instant SQL Formatterにて整形をおこなうと、以下のようになりました。

SELECT i.obj#,
       i.samplesize,
       i.dataobj#,
       Nvl(i.spare1, i.intcols),
       i.spare6,
       Decode(i.pctthres$, NULL, NULL,
                           MOD(Trunc(i.pctthres$ / 256), 256)),
       ist.cachedblk,
       ist.cachehit,
       ist.logicalread
FROM   ind$ i,
       ind_stats$ ist,
       (SELECT enabled,
               Min(cols)                        unicols,
               Min(To_number(Bitand(defer, 1))) deferrable#,
               Min(To_number(Bitand(defer, 4))) valid#
        FROM   cdef$
        WHERE  obj# = :1
               AND enabled > 1
        GROUP  BY enabled) c
WHERE  i.obj# = c.enabled(+)
       AND i.obj# = ist.obj#(+)
       AND i.bo# = :1
ORDER  BY i.obj#

インデントや適切な箇所に改行が入り見やすくなりました。サブクエリを使ったselect文だったんですね。

SQLの整形版にはウェブで使えるオンライン版と、エディタやDB管理ツールに組み込まれているオフライン版があります。オンライン版・オフライン版ともにメリットとデメリットがあります。

SQLの整形ツールオンライン版

オンライン版のSQL整形ツールのメリットは、こまめに更新されて整形機能が高いことです。デメリットは、インターネットに接続していることが前提なので、インターネットが繋がっていないと使えない点です。

【関連記事】
SQL formatter オンラインで使える無料整形ツール 3選 

2021年時点で特におすすめのオンライン版SQL整形ツールは以下の2つです。

Instant SQL Formatterは、インタフェースが英語表示ですが、整形機能はダントツ。どんなSQLを整形させても文句のない結果を返してきます。好みに応じて改行タイミングなどを変更することも可能です。2019年6月が最終更新日になっていました。

SQLフォーマッター For WEBは日本語インタフェースで、整形機能もInstant SQL Formatterに次ぐ高性能。試した限りでは、1行コメント「//」が行頭始まりと行途中始まりのものが混じっていた場合の扱いがうまくいきませんでした。それでも、普通に使う分には問題ない性能だと思います。最終更新日は2021年3月。今後もメンテされていくようです。

SQLの整形ツールオフライン版

SQL整形ツールのオフライン版のメリットは、ネットに繋がっていなくても使える点。しかし、オンライン版に比べると整形機能は物足りないことが多く、複雑なSQLになるとうまく整形できないこともあります。

【関連記事】
SQL 整形ツール 美しいコードが出力できるテキストエディタはどれ? 

情報漏えい等を防ぐために、インターネットからは遮断されている開発環境もありますので、SQL整形ツールはオフライン版をつかわざるを得ないケースもあります。おすすめできるのは、SQL Developer、Visual Studio Code、A5:SQL Mk-2の整形機能。

SQL Developerは、Oracleが提供しているOracle向けのデータベース管理ツールです。SQLの編集や整形、実行だけではなくOracleデータベースの管理機能も備えています。ターゲットになるデータベースがOracleなら検討の価値ありでしょう。整形性能は普通。わざと難解なSQLを投入しなければ、そこそこの形に整形してくれます。

【関連記事】
SQL DeveloperでSQLを見やすく整形する方法を解説! 

Visual Studio Code(VS Code)は、マイクロソフトが無料で提供している開発用エディタ。Windows系システムのプログラムのコーディングに使われることが多いです。対象言語をSQLに切り替えることで、SQLの整形も可能。

関連)Visual Studio Code – コード エディター | Microsoft Azure

開発のエディタとしてVS Codeを使っている場合、SQLの整形のために別ツールを立ち上げなくて良い点がメリット。整形性能は、「そこそこ」です。SQLの整形をおこなうためには、対象言語をSQLに切り替える必要がありますが、そのひと手間をなくすために有志がMODを提供してくれています。

関連)VSCodeでSQLをフォーマットしたいよ – Qiita

A5:SQL Mk-2は、多彩なデータベースに対応するフリーのデータベース管理ツール。USBメモリに入れて持ち歩けるポータブル仕様で、ER図作成機能など高級ソフトなみの高機能を備えています。整形機能は普通で、難解なSQLでなければ整形できます。

関連)A5:SQL Mk-2 – フリーのSQLクライアント/ER図作成ソフト (松原正和)

まとめ

複数人でおこなうシステム開発でSQLを扱う場合、SQL整形ツールを導入するのは必須と言えるでしょう。

ポテパンダの一言メモ
  • SQLの整形ツールにはオンライン版とオフライン版がある
  • オンラインの整形ツールは整形性能が高いが、ネット接続が前提
  • オフライン版の整形ツールはネットに繋がなくても使えるが、整形性能はオンライン版よりも劣る

エンジニアになりたい人に選ばれるプログラミングスクール「ポテパンキャンプ 」

ポテパンキャンプは卒業生の多くがWebエンジニアとして活躍している実践型プログラミングスクールです。 1000名以上が受講しており、その多くが上場企業、ベンチャー企業のWebエンジニアとして活躍しています。

基礎的な学習だけで満足せず、実際にプログラミングを覚えて実践で使えるレベルまで学習したいという方に人気です。 プログラミングを学習し実践で使うには様々な要素が必要です。

それがマルっと詰まっているポテパンキャンプでプログラミングを学習してみませんか?

卒業生の多くがWebエンジニアとして活躍

卒業生の多くがWeb企業で活躍しております。
実践的なカリキュラムをこなしているからこそ現場でも戦力となっております。
活躍する卒業生のインタビューもございますので是非御覧ください。

経験豊富なエンジニア陣が直接指導

実践的なカリキュラムと経験豊富なエンジニアが直接指導にあたります。
有名企業のエンジニアも多数在籍し品質高いWebアプリケーションを作れるようサポートします。

満足度高くコスパの高いプログラミングスクール「ポテパンキャンプ」

運営する株式会社ポテパンは10,000人以上のエンジニアのキャリアサポートを行ってきております。
そのノウハウを活かして実践的なカリキュラムを随時アップデートしております。

代表の宮崎もプログラミングを覚えサイトを作りポテパンを創業しました。
本気でプログラミングを身につけたいという方にコスパ良く受講していただきたいと思っておりますので、気になる方はぜひスクール詳細をのぞいてくださいませ。