コスパ最強なデータベース用フリーソフト「A5:SQL Mk-2」(Windows)

[エンジニア] プログラマ

今回はエンジニア向けの話題を1つ。

 

Web系のエンジニアになると、データベースと離れることができません。

僕も、Web系アプリケーションの開発作業、保守作業を中心に行っていることから、データベースを直接参照したり、あるいは更新をかけたりといったことは日常茶飯事です。

 

データベースの参照や更新を行うには、データベース用のソフトを使用します。

有償ソフト、フリーソフト、たくさんのソフトがありますが、僕はあるフリーソフトを好きで使っています。

 

そのソフトとは・・・「A5:SQL Mk-2」です。

というわけで、今回は「A5:SQL Mk-2」の便利な使い方を紹介します。

 

「A5:SQL Mk-2」の概略

「A5:SQL Mk-2 」のホームページは下記です。

A5:SQL Mk-2 - フリーの汎用SQL開発ツール/ER図ツール .. 松原正和

 

読みは「エーファイブ・エスキューエル・マークツー」らしいですが、僕はA5M2「エー・ゴ・エム・ツー」ってよく読んでます。

作成しているのは松原正和さん。1998年から作られている歴史の長いソフトでもあります。

 

高機能かつ軽量な汎用SQL開発ツール / ER図ツール / フリーソフト」と書かれておりますが、まさにその通りで、ちょこちょこっとした作業を行うにはもってこいのソフトです。

データベースを扱うソフトとなると、重いソフトが多くて起動するのに躊躇しがちなのですが、A5M2はそういったストレスもありません。

 

「A5:SQL Mk-2」の便利な活用方法

このソフトで便利だなと思うのは以下の点です。

  • テーブルからSQLを生成
  • INSERT文/UPDATE文の出力
  • 複数のSELECT結果のExcel出力
  • SQLの比較実行

 

テーブルからSQLを生成

まずは何といってもSQLの生成から。短文なら手入力もありですが、カラムが多い場合は自動で生成してもらいましょう。

 

テーブル選択→右クリック→SQLの生成

 

生成するSQLにチェック→OK

 

はい、あっという間にSQLのテンプレートが出来上がりました。

実際に使用する場合は、必要なSQLタイプだけ出力すればいいでしょう。

--*DataTitle "invoices"
--*CaptionFromComment
SELECT
  "InvoiceId"                                     -- InvoiceId
  , "CustomerId"                                  -- CustomerId
  , "InvoiceDate"                                 -- InvoiceDate
  , "BillingAddress"                              -- BillingAddress
  , "BillingCity"                                 -- BillingCity
  , "BillingState"                                -- BillingState
  , "BillingCountry"                              -- BillingCountry
  , "BillingPostalCode"                           -- BillingPostalCode
  , "Total"                                       -- Total
FROM
  "invoices" 
WHERE
  "CustomerId" = :CustomerId 
ORDER BY
  "CustomerId"; 

INSERT 
INTO "invoices" ( 
  "InvoiceId"
  , "CustomerId"
  , "InvoiceDate"
  , "BillingAddress"
  , "BillingCity"
  , "BillingState"
  , "BillingCountry"
  , "BillingPostalCode"
  , "Total"
) 
VALUES ( 
  :InvoiceId
  , :CustomerId
  , :InvoiceDate
  , :BillingAddress
  , :BillingCity
  , :BillingState
  , :BillingCountry
  , :BillingPostalCode
  , :Total
); 

UPDATE "invoices" 
SET
  "CustomerId" = :CustomerId
  , "InvoiceDate" = :InvoiceDate
  , "BillingAddress" = :BillingAddress
  , "BillingCity" = :BillingCity
  , "BillingState" = :BillingState
  , "BillingCountry" = :BillingCountry
  , "BillingPostalCode" = :BillingPostalCode
  , "Total" = :Total 
WHERE
  "CustomerId" = :CustomerId; 

DELETE 
FROM
  "invoices" 
WHERE
  "CustomerId" = :CustomerId

 

 

INSERT文/UPDATE文の出力

次は、INSERT文とUPDATE文の出力です。

これも手書きでやると非常に面倒ですが、ツールを使えばすぐに出すことが可能です。

 

テーブルのデータを表示する

 

出力したい行を選択→右クリック→レコードコピー→INSERT文 or UPDATE文

OKボタンを押す

 

クリップボードにコピーされるので、適用な場所に貼り付ければ完成です。

とっても簡単でしょ?

 

<INSERT文>

insert into "sqlite_sequence"("name","seq") values ('genres','25');
insert into "sqlite_sequence"("name","seq") values ('media_types','5');
insert into "sqlite_sequence"("name","seq") values ('artists','275');
insert into "sqlite_sequence"("name","seq") values ('albums','347');
insert into "sqlite_sequence"("name","seq") values ('tracks','3503');
insert into "sqlite_sequence"("name","seq") values ('employees','8');
insert into "sqlite_sequence"("name","seq") values ('customers','59');
insert into "sqlite_sequence"("name","seq") values ('invoices','412');
insert into "sqlite_sequence"("name","seq") values ('invoice_items','2240');
insert into "sqlite_sequence"("name","seq") values ('playlists','18');

 

<UPDATE文>

update "sqlite_sequence" set name = 'genres', seq = '25' where ;
update "sqlite_sequence" set name = 'media_types', seq = '5' where ;
update "sqlite_sequence" set name = 'artists', seq = '275' where ;
update "sqlite_sequence" set name = 'albums', seq = '347' where ;
update "sqlite_sequence" set name = 'tracks', seq = '3503' where ;
update "sqlite_sequence" set name = 'employees', seq = '8' where ;
update "sqlite_sequence" set name = 'customers', seq = '59' where ;
update "sqlite_sequence" set name = 'invoices', seq = '412' where ;
update "sqlite_sequence" set name = 'invoice_items', seq = '2240' where ;
update "sqlite_sequence" set name = 'playlists', seq = '18' where ;

※UPDATE文はWHERE句が不完全なので、適宜修正してください。

 

ちなみに、SELECT文実行後の結果からでも出力できます。(INSERT文のみ)

 

SELECTの結果からINSERT文を作成してくれるのって意外と無かったりするんですよ。

昔はExcelと関数orマクロ使ってINSERT文作ったりしていましたが、この機能が実装されてからは使うことがほぼなくなりました。

 

複数のSELECT結果のExcel出力

テーブルのデータやSELECT結果をExcelに出力することができます。

SELECT結果を出力する場合、複数の実行結果を同一のExcelに出力することも可能です。

その際、シートごとに分ける方が見やすいので、設定を先に変えておきます。

 

設定→オプション→複数結果セットを~にチェック

 

複数のSELECTを実行→Excel出力(ALL)

 

出力結果のサンプルはこちらをご確認ください。

 

SQLの比較実行

同一のSQLを2回実行したときの差分内容を出力します。

流れとしては、1回SELECT文を実行し、データを変更、そしてもう1回SELECT文を実行する流れです。

 

任意のSELECT文を実行

 

デーブルデータを更新する

データに何かしらの変更を加える。

 

「A:B」を押す

 

実行(比較)を押す

 

下記のように結果セットの比較画面が出ます。

差分内容がすぐに分かるスグレモノですよ!

 

また、差分内容をクリップボードにコピーしたり、Excelに出力したりもできます。

 

まとめ

データベースを扱うフリーソフト、「A5:SQL Mk-2」について記事にしました。

エンジニアの皆さんは、自分のお気に入りのソフトがあると思いますが、記事で紹介した内容が良いと思ったら、ぜひ使ってみてください。

作業が捗ること間違いなしです。

 

また、「このソフトのこの使い方がいいよ!」というものがあれば、ぜひ教えて頂きたいなと思います。

A5:SQL Mk-2 - フリーの汎用SQL開発ツール/ER図ツール .. 松原正和

コメント