Help us understand the problem. What is going on with this article?

JetBrains IDEでデータベースを開発する

More than 1 year has passed since last update.

この記事はJetBrainsIDE Advent Calendarの2日目の記事になりました。

TL;DR

JetBrains IDEはデータベース開発においてもとても便利だったので(ただしUltimateに限る)、ideaを使ったデータベース開発の流れをまとめます。
具体的には、データソースに接続し、クエリを実行する所までを解説します。おまけでDAO開発でも補完を使う方法に触れます。
データベースやテーブルは存在し、SQLを使う前提で話を進めます。

どの辺が便利?

コードだけでなく、テーブル・DB名にも補完が効いたり、複数のDBを切り替えながら開発したり、データベースツールウィンドウを見ながら直観的に開発できるのが便利です。
後、JetBrains IDE全般に言えることですが、これらの機能をプラットフォーム関係なく利用できるのが本当に素晴らしいです。

データソース/データベースへの接続環境を整える

データソースに接続する

View > Tool Windows > Database、もしくは右サイドバーのDatabaseタブを選択し、データベースツールウィンドウを表示します。
スクリーンショット 2018-12-12 12.22.51.png
スクリーンショット 2018-12-12 12.26.19.png
データベースツールウィンドウから左上の+を選び、接続するデータソースを選択します。今回はMySqlを選択します。
スクリーンショット 2018-12-12 12.27.56.png
選択すると以下ようなの設定画面が出るので、適切な情報を設定し、Test Connectionが成功すればデータソースへの接続は完了です。
ここでDatabaseを設定してあると、クエリ実行時に設定したDatabaseがデフォルトでuseされます。
状況に応じてRead-onlyを設定しておくと、データベースに変更を加えたくない時に便利です。
スクリーンショット 2018-12-12 13.00.01.png
この設定はデータベースツールウィンドウの設定ボタンからいつでも変更できます。
スクリーンショット 2018-12-12 13.06.28.png

スキーマを選ぶ

データソースへ接続した後は、使用するdatabaseを設定します。
接続が成功すると、先ほどの設定画面のSchemasタブにデータソースに存在するdatabaseが一覧で表示されるので、利用するものを選択します。
スクリーンショット 2018-12-12 13.04.58.png
ここで選択したDBは、SQLの外部キーをDBを跨いで貼る際の補完や、データベースツールウィンドウへの一覧表示で利用されます。

接続後

接続が完了すると以下のようになります(画像ではデータソースを2つ設定してあります)。右側に出ている「2 of 12」やらの数字はスキーマ内のDB数と先ほど選択したDB数です。
スクリーンショット 2018-12-12 12.53.38.png

クエリを実行する

Diarectを設定する

SQLにはDialect(方言)が多々あるため、IDEに適切なDialectを設定しなければハイライトや補完がうまく機能しません。
ということで、Diarectを先に設定しておくことをお勧めします。
この設定については自分が書いた記事があるので、そちらを参照してください。

クエリを実行する

とりあえずtesttesttest.sqlというファイルを作り、以下のようなクエリを書いてみます。

testtesttest.sql
CREATE TABLE testtesttest(
  id INT UNSIGNED NOT NULL PRIMARY KEY,
  name VARCHAR(255) NOT NULL
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

実行は⌘⏎でできます。
1ファイル内に複数のクエリがある場合は、カーソルの有る部分のクエリを実行するのか、ファイル内のクエリ全体を実行するのかを聞かれます。

データソース/データベースが複数ある場合

データソースが複数ある場合、どのデータソースのコンソールで実行するかを聞かれます。
また、実行するデータソース/データベースは先に設定されているものが使われるので、コンソールの状態は先に確認しておいた方が安全です。
この設定は左側のプロジェクトツールウィンドウの下の方にあるDatabase Consolesからコンソールファイルを開くことで見ることができます。
スクリーンショット 2018-12-12 14.00.01.png
コンソールでどのdatabaseがuseされているかは、コンソールファイルの右上から確認できます。ここを押すことで設定することもできます。
何も設定されていない場合<schema>と表示されます。
スクリーンショット 2018-12-12 14.06.22.png
一度クエリを実行してやると、.sqlファイルの右上にも同じようなメニューが表示されるようになります。<schema>の右側に表示されているのはどのコンソールが選択されているかで、こちらも変更が可能です。
スクリーンショット 2018-12-12 14.14.02.png

DAOでも補完を使う

他言語からDBへアクセスするためにクエリを書くという状況でもJetBrains IDEは便利です。
この記事の中のデータソースとDiarectの設定をし、言語インジェクションを使うことでSQLを補完してもらうことができます。
言語インジェクション関連は公式の解説ページが詳しいです。

終わりに

記事は以上です。JetBrains IDEは神器。

wrongwrong
public class Main { public static void main(String[] args) { console.log("Hello World!"); } } Error: java: シンボルを見つけられません シンボル: 変数 console 場所: クラス com.wrongwrong.Main
https://wrongwrong163377.hatenablog.com/
microad
データとテクノロジーをかけ合わせたマーケティングプラットフォームを提供する会社です。
https://www.microad.co.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした