38
50

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

WindowsのDBツール「A5:SQL Mk-2」5つの便利機能

Last updated at Posted at 2020-08-15

#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の生成から。
短文なら手入力もありですが、カラムが多い場合は自動で生成してもらいましょう。

以下は手順

◆テーブル選択→右クリック→SQLの生成
image.png

◆生成するSQLにチェック→OK
image.png

--*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文の出力です。
これも手書きでやると非常に面倒ですが、ツールを使えばすぐに出すことが可能です。

◆テーブルのデータを表示する
image.png

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

◆OKボタンを押す
image.png

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

  • 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文のみ)
image.png

SELECTの結果からINSERT文を作成してくれる機能は意外と無くて、これは重宝しますよ。
昔はSQLの結果をExcelに貼り付けて、関数orマクロ使ってINSERT文作ったりしていましたが、この機能が実装されてからは使うことがなくなりました。

テーブル定義書出力

次はテーブル定義書の出力です。

独自のテーブル定義書のフォーマットを作る会社が多いと思いますが、独自に定義すると管理コストが増加します。ツールのフォーマットに合わせてしまいましょう。

◆出力対象のデータベースを選択→右クリック→テーブル定義
image.png
書作成

◆出力対象のデータベースを選択→右クリック→テーブル定義書作成
image.png

しばらく待てばテーブル定義書を出力されます。
フォーマットは以下のような感じです。
業務でも十分使えるものなので、一度お試しあれ。

  • 一覧
    image.png

  • 各テーブル
    image.png

複数のSELECT結果のExcel出力

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

SELECT結果を出力する場合、単数の実行結果はもちろん、複数の実行結果を同一のExcelに出力することも可能です。
その際、シートごとに分ける方が見やすいので、設定を先に変えておきます。

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

◆複数のSELECTを実行→Excel出力(ALL)
image.png

出力結果は以下のようなイメージです。

image.png

SQLの比較実行

同一のSQLを2回実行したときの差分内容を出力します。
1回SELECT文を実行し、データを変更、そしてもう1回SELECT文を実行する流れです。

◆任意のSELECT文を実行
image.png

◆デーブルデータを更新する
データに何かしらの変更を加える。

◆「A:B」を押す
image.png

◆実行(比較)を押す
image.png

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

差分内容が一目瞭然のスグレモノですよ! 
また、差分内容をクリップボードにコピーしたり、Excelに出力したりもできます。

最後に:A5:SQL Mk-2はコスパ良しの神ソフト

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

本ソフトはWindowsユーザで業務系、Web系のシステム開発を行う人にとっては定番で、非常に使い勝手が良い最強のソフトです。

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

38
50
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
38
50

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?