#A5:SQL Mk-2(A5M2)の概要
DB参照、更新用のソフトで、僕が愛用しておすすめしているのは「A5:SQL Mk-2」です。
https://a5m2.mmatsubara.com/
読みは「エーファイブ・エスキューエル・マークツー」で、A5M2「エー・ゴ・エム・ツー」と呼んでいます。
公式にも「高機能かつ軽量な汎用SQL開発ツール / ER図ツール / フリーソフト」と書かれておりますが、まさにその通り。
ちょこっとした作業を行うにはもってこいのソフトです。
DBツールは、重いソフトが多くて起動にストレスがかかるのも多い中、A5M2ではそのストレスはほぼありませんね。
で、このソフトで非常に有用で便利な機能が5つあります。
- テーブルからSQLを生成
- INSERT文/UPDATE文の出力
- テーブル定義書出力
- 複数のSELECT結果のExcel出力
- SQLの比較実行
下記で1つずつ詳しく解説しますね。
テーブルから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
あっという間にSQLのテンプレートが出来上がりました。
実際に使用する場合は、必要なSQLタイプだけ出力すればいいでしょう。
INSERT文/UPDATE文の出力
次は、INSERT文とUPDATE文の出力です。
これも手書きでやると非常に面倒ですが、ツールを使えばすぐに出すことが可能です。
◆出力したい行を選択→右クリック→レコードコピー→INSERT文 or UPDATE文
クリップボードにコピーされるので、適用な場所に貼り付ければ完成です。
- 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文を作成してくれる機能は意外と無くて、これは重宝しますよ。
昔はSQLの結果をExcelに貼り付けて、関数orマクロ使ってINSERT文作ったりしていましたが、この機能が実装されてからは使うことがなくなりました。
テーブル定義書出力
次はテーブル定義書の出力です。
独自のテーブル定義書のフォーマットを作る会社が多いと思いますが、独自に定義すると管理コストが増加します。ツールのフォーマットに合わせてしまいましょう。
◆出力対象のデータベースを選択→右クリック→テーブル定義
書作成
◆出力対象のデータベースを選択→右クリック→テーブル定義書作成
しばらく待てばテーブル定義書を出力されます。
フォーマットは以下のような感じです。
業務でも十分使えるものなので、一度お試しあれ。
複数のSELECT結果のExcel出力
テーブルのデータやSELECT結果をExcelに出力することができます。
SELECT結果を出力する場合、単数の実行結果はもちろん、複数の実行結果を同一のExcelに出力することも可能です。
その際、シートごとに分ける方が見やすいので、設定を先に変えておきます。
出力結果は以下のようなイメージです。
SQLの比較実行
同一のSQLを2回実行したときの差分内容を出力します。
1回SELECT文を実行し、データを変更、そしてもう1回SELECT文を実行する流れです。
◆デーブルデータを更新する
データに何かしらの変更を加える。
差分内容が一目瞭然のスグレモノですよ!
また、差分内容をクリップボードにコピーしたり、Excelに出力したりもできます。
最後に:A5:SQL Mk-2はコスパ良しの神ソフト
データベースを扱うフリーソフト、「A5:SQL Mk-2」についてまとめてみました。
本ソフトはWindowsユーザで業務系、Web系のシステム開発を行う人にとっては定番で、非常に使い勝手が良い最強のソフトです。
エンジニアの人は、自分のお気に入りのソフトがあると思いますが、記事で紹介した内容が良いと思ったらぜひ使ってみてください。
作業が捗ること間違いなし。