DBeaver使い方メモ

DBeaverの使い方を忘れないようにメモしておく。

:::note
関連記事
[DBeaverでフォントを変更する設定のメモ](https://qiita.com/12345/items/fe68c08bbae4b4b37d90)
[DBeaverでのER図表示に関するメモ](https://qiita.com/12345/items/0094b039628d15250086)
:::

# DBeaverとは
[DBeaverのサイト](https://dbeaver.io/)のトップに書いてある説明によると、

> 開発者、データベース管理者、アナリスト、およびデータベースを操作する必要があるすべての人々のための無料のマルチプラットフォームデータベースツール。 MySQL、PostgreSQL、SQLite、Oracle、DB2、SQL Server、Sybase、MS Access、Teradata、Firebird、Apache Hive、Phoenix、Prestoなど、一般的なすべてのデータベースをサポート

Windows版・MacOSX版・Linux版の他、Eclipseのplugin版もある。

# よいと思ったところ
- 様々なDBMSに対応している。
- 月イチくらいのペースで結構頻繁にバージョンアップされている。
- UIがEclipseと同じなので、Eclipseの操作に慣れていると同じ感覚で操作できる。
- 重いSQLを投げてDBeaverのウィンドウを非アクティブにして別の作業をしていると、SQLが終了した通知をWindowsに投げてくれる。
- データのリレーションをクリックで辿れる。
- ER図を作ってくれる。
- いろいろ機能が豊富（過ぎてまだ把握しきれていない）

# インストール
Windows版はインストーラ版とzip版があり、さらには[Microsoft Store](https://www.microsoft.com/store/apps/9PNKDR50694P)や[Chocolatey](https://chocolatey.org/packages/dbeaver)からもインストールができるらしい。

実行するにはJREが必要。なお、インストーラ版のほうにはJREが付いていてzip版のほうには付いていない。

zip版を初めてインストールするときは普通に解凍して好きなところにフォルダを配置すれば使える。新しいバージョンを上書きする際は、旧バージョンのフォルダの中身を一旦全部消して、そこに新しいバージョンの中身をごそっとコピーする。設定情報は[別の場所に保持されている](https://github.com/dbeaver/dbeaver/wiki/Installation#zip-archive)らしい。

インストーラ版のアップデートは新しいバージョンのインストーラをそのまま実行するだけでよいらしい。

# 使い方
## DBの接続
新規にDBに接続するには、メニューバーの **[データベース]** の **[新しい接続]**、または **データベースナビゲーター** のコンセントのアイコンを押す。

接続したいDBの製品をクリックして **[次へ]** を押す。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/181011/6edbcd09-5265-0c6a-c070-46e08e94f0b4.png)
各DBごとの接続設定情報を設定する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/181011/af783276-6726-aee0-9f12-779865d3f38d.png)
**[テスト接続]** ボタンを押すと接続のテストができる。
**[終了]** ボタンを押すと接続が行われる。JDBCドライバは適当なものを自動的にダウンロードしてくれる。もしJDBCドライバも指定したい場合は接続設定画面の **[Edit Driver Settings]** で設定する。

## データベースの作成
使用するDBMSによっては、DBeaverのGUIで新規にデータベースを作成することができる（ちなみにPostgreSQLの場合はできたがSQL Serverの場合はできなかった）。**データベースナビゲータ** で対象のインスタンスを右クリックして **[作る]** の下に **[データベース]** があれば作れる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/181011/6e84ebaa-66ea-40a1-574e-c388d8cf0688.png)
GUIで作成できない場合でもSQLエディタで`CREATE DATABASE`すればよい。

## DBオブジェクトの参照
DBが接続されたら、**データベースナビゲータ** のインスタンスのツリービューを展開していくと定義済みの各DBオブジェクトを参照できる。DBオブジェクトの構成は使用するDBMSによって異なる。下の画像はSQLServerに接続した例。SQLServerの場合はスキーマという概念があるのでツリービューにもSchemas階層が表示される。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/181011/331da28b-285e-ea30-c74f-25ce44bbc727.png)
オブジェクト名を部分的に入力して表示対象を絞り込むこともできる。オブジェクトの数が多い時に便利。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/181011/adee9af6-9893-e652-8bfa-32d6baa157bf.png)
DBオブジェクトをダブルクリックすると横に情報が表示される。
例）SQL Serverに接続してdboスキーマを開いたところ。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/181011/eda43354-0c4d-ec4e-40c8-e260cb006aee.png)

## ER図の表示
ツリービューの **[Tables]** をクリックし **[ER図]** タブに切り替えるとテーブルのER図が表示される。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/181011/f6af72db-9a33-e743-d9ad-c2436a918183.png)
ER図の表示については関連記事（本記事冒頭のリンク）も参照。

## テーブル定義/データの参照・更新
テーブルの定義を参照したり更新したりする場合は **データベースナビゲータ** や **ER図** でテーブル名をダブルクリックすると **データエディタ** が開き、テーブル定義の参照や更新が行える。**[データ]** タブに切り替えると **データビュー** が表示されデータの参照・更新ができる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/181011/d5a7347a-a7d9-ef11-25a0-34bc3f2464b2.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/181011/39106239-07c2-d4f5-50d5-877ad9df6108.png)
## データビューの操作
### 検索
各カラムのヘッダ部右端にある矢印アイコンをクリックするとソート設定をトグル操作で指定できる（昇順→降順→解除）。複数項目のソート指定も可。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/181011/ad4b0ade-9bd8-db3c-eb3f-38676c009f6f.png)
各カラムのヘッダ部右端の漏斗のアイコンをクリックすると値を絞り込むフィルタが設定できる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/181011/bd1e5430-fcdd-f92d-4e24-727c6d54cd5e.png)
絞り込みたい値がグリッド上に表示されている場合はその値をクリックして選択した状態で`Ctrl`+`F11`を押すと、その値がチェックされた状態でダイアログが表示される。
上記の方法の場合は一致条件しか指定できないが、値を選択した状態で`F11`を押して **[Cell value]** を選択すると、`=` `<>` `>` `<` `LIKE`が選べる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/181011/065df8a1-025a-0f2b-eb8f-244c7fbefd81.png)
[Cell value]ではなく **[Clipboard]** を選択すると、クリップボードの値を条件に指定することができる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/181011/84ac1353-174b-f303-504c-fe24e9ed936e.png)
ただしこの[Clipboard]はクリップボードが空の時は表示されない。またデータ型が一致しない場合も表示されない(例えば数値型カラムに対してはクリップボードの値が数値として扱える文字列である必要がある)。
**[Custom]** を選択した場合は、条件を指定した後、値を編集するダイアログが表示される。ここで **[Clipboard]** ボタンを押してクリップボードから値をコピーすることも可能。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/181011/9cb45a1e-185c-9636-1e28-e09f5c523f24.png)
タブ上部の入力エリアにwhere句の内容を記述するとその条件で絞り込みができる。`Ctrl`+`Space`でカラム名の入力補完もできる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/181011/366cc112-5ab0-fbe2-e33d-805b42cc8542.png)
ソート/フィルターをすべてクリアしたい場合は入力エリアの右横の消しゴムアイコンをクリックする。
漏斗アイコンの右隣のアイコンをクリックするとカスタムフィルタのダイアログが開き、カラム表示設定・ソート順指定・絞り込み条件をまとめて指定できる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/181011/74f430c9-fd72-80e7-b9a5-b53da2dd7009.png)
特定の値の行の色を変えることもできる。グリッドの適当な場所で右クリックして **[View/Format]-[Row Colors...]** を選択するとダイアログが表示される。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/181011/1af4ad9d-21e6-2daf-04a1-74d2e6b56e99.png)
左側でカラムを選び、右上で **[+]** を押し、**[Value(s)]** に値を指定し、**[Background]/[Foreground]** で色を選んで **[OK]** を押す。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/181011/c8cbf088-902f-b5ab-e88a-8d7be1e8420e.png)
**[Apply colors to this column only]** にチェックを入れると行全体ではなくそのカラムのみ色が変わる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/181011/488730f7-ba69-f882-ca65-9db9584e7a59.png)
**[Range/gradient]** にチェックを入れると値の範囲指定が可能になる。この場合は色の指定も２箇所行う必要がある。この２箇所に異なる色を指定した場合は値に応じて色がグラデーションになる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/181011/fd45dbe9-aeb1-136a-c84a-7b7b00e94474.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/181011/9bc60ef7-91d1-35ae-9bbe-1bf5e94fe2a3.png)
この色設定は自動的に保存されるので、データビューを開き直してもDBeaverを再起動してもリセットされずに保持されている。

値の右横に斜め矢印のアイコンがある場合はそれをクリックするとリレーション先のデータにジャンプできる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/181011/58d74b3c-82e2-ade3-5a0f-f0344bffe4a6.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/181011/734f3d65-91bd-e95f-3500-462db6e8733b.png)
１つ前の条件検索や１つ前のリレーションに戻りたい場合は、右端にある緑の矢印アイコンを押すか`Alt`+`←`を押す。`Alt`+`→`も使うと行ったり来たりもできる。

表示方法は **[グリッド]** か **[テキスト]** かを選べる。
**[グリッド]** はスプレッドシート形式のGUI。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/181011/4139d6ea-00ed-a27f-a33f-f4604ae0ef3b.png)
マウスで任意のセル範囲を範囲を選択したりクリップボードにコピーしたりできる。
**[テキスト]** はそのままのテキスト形式。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/181011/3d212920-2e75-3d83-a311-7546ab4186a0.png)
テキストの場合は好きな範囲を **文字単位** で矩形選択でき、それをクリップボードへコピーできる。
**[Record]** をクリックすると１レコード表示モードになる。１レコード表示はグリッド形式でもテキスト形式でも表示できる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/181011/387c0c7e-89e9-9c0e-6923-ab22e6952aa4.png)

### 編集
 

## SQL操作
SQL文を実行するには **SQLエディタ** を開く。SQLエディタを開くには、

- `Ctrl`+`]`を押す。
- 対象テーブルの **データエディタ** を開いた状態で右上のテーブル名を`Ctrl`+クリックする。この場合、その時点で指定していたソートや絞り込み条件が反映されたSELECT文がデフォルトで表示される(検索はされない)。
- **データーベースナビゲータ** でテーブル名を右クリックして **[SQLコンソールでデータを読み込む]** を選ぶと、フル検索のSELECT文が作成されその条件で検索が行われる。

SQLエディタでは`Ctrl`+`Space`でSQLキーワードやテーブル名・カラム名の入力補完ができる。
`Ctrl`+`Enter`を押すとカーソル付近のSQL文が実行される。
エディタ内のすべてのSQLを連続して実行したい場合は`Alt`+`X`を押す。
実行結果はSQLエディタの下に **データビュー** で表示される。