SQL Developerは、OracleデータベースでSQLを使うための統合開発環境です。
今回は、SQL DeveloperからMySQLを操作する方法をご紹介します。
SQL Developerのインストール方法については、こちらをご参照ください。
【関連記事】
▶SQL Developerを使ってみよう!資格取得の学習にも使える便利なツール
当記事では、SQL Developer 19.1を前提に解説しています。
目次
SQL Developerから、MySQLを操作するには

デフォルトの状態では、SQL DeveloperはOracleのみ接続可能です。MySQLへ接続するには、以下の設定をおこないます。
MySQLのJDBCドライバをインストール
下記URLより、MySQLのWindows用インストーラーをダウンロードします。
https://dev.mysql.com/downloads/installer/

ファイルは2種類あり、上は分割ダウンロード版、下は一括ダウンロード版です。今回は、一括ダウンロード版を使用します。
JDBCドライバは、Connector/Jという名前でインストーラーに含まれています。

Connector/Jをインストールしましょう。
デフォルトだと、JDBCドライバー本体は以下のフォルダにインストールされます。のちの、接続設定で使用するためインストールパスをメモしておきましょう。
C:\Program Files (x86)\MySQL\Connector J 8.0
MySQLの接続設定
SQL Developerのツール→プリファレンス→データベース→サード・パーティJDBCドライバにて、「エントリの追加」をクリックします。
先ほどメモしたJDBCドライバのインスト―ルパスを設定し、OKをクリックします。

SQL Developerの「接続」タブの「+」アイコンをクリックします。

「データベース接続の作成/選択」ウインドウが表示されます。データベースのタイプに「MySQL」が選択できるようになってます。
Name(設定名)、MySQLのユーザ名、パスワード、ホスト名、ポート番号を設定し、「保存」をクリックします。

timezoneに関するエラーを抑制する方法
MySQLがWindowsサーバの場合、timezoneに関する以下のエラーが出力され、データベースの接続に失敗するケースがあります。
リクエストされた操作の実行中にエラーが発生しました: The server time zone value '□□□ (□□□□□□)' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zone value if you want to utilize time zone support.
データベース接続設定にて、ポート番号の箇所に、以下を設定するとエラーを回避できます。
ポート番号/?serverTimezone=JST#

MySQLのデータベースを操作する
実際に、MySQLのデータベースを操作しましょう。
※あらかじめ、MySQLのサンプルデータベースWorldをインストール済みです。
SQL Developerの接続タブに表示されている接続名(ここではmysql)をダブルクリックします。

データベースに接続され、テーブル名などが表示されます。
ツール→SQLワークシートを選択します。

ワークシートにSQLを入力し、Ctrl+Enterを入力すると、SQLの時刻結果が表示されます。

クエリの実行結果をエクスポートする
SQLの実行結果をエクスポートするには、検索結果の上で右クリック→エクスポートを選択します。

エクスポート・ウィザードでcsvやexcelなどのフォーマットを選びます。別名保存で「クリップボード」を選ぶと、ファイルを介さずにSQLの実行結果をコピペできます。

整形機能の使い方
SQL Developerには、複雑なSQLを見やすく整形する機能があります。
SQLワークシートにSQLを入力し、ワークシート状で右クリック→書式(またはCtrl+F7)を選択します。

以下のSQLを整形してみましょう。複雑なwhere句の条件にサブクエリが組み合わさった難解なSQLです。
select i.obj#,i.samplesize,i.dataobj#,nvl(i.spare1,i.intcols),i.spare6,decode(i.pctthres$,null,null,mod(trunc(i.pctthres$/256),256)),ist.cachedblk,ist.cachehit,ist.logicalread from ind$ i, ind_stats$ ist, (select enabled, min(cols) unicols,min(to_number(bitand(defer,1))) deferrable#,min(to_number(bitand(defer,4))) valid# from cdef$ where obj#=:1 and enabled > 1 group by enabled) c where i.obj#=c.enabled(+) and i.obj# = ist.obj#(+) and i.bo#=:1 order by i.obj#
整形後はこうなります。
SELECT
i.obj#,
i.samplesize,
i.dataobj#,
nvl(i.spare1, i.intcols),
i.spare6,
DECODE(i.pctthres$, NULL, NULL, mod(trunc(i.pctthres$ /256), 256)),
ist.cachedblk,
ist.cachehit,
ist.logicalread
FROM
ind$ i,
ind_stats$ ist,
(
SELECT
enabled,
MIN(cols) unicols,
MIN(to_number(bitand(defer, 1))) deferrable#,
MIN(to_number(bitand(defer, 4))) valid#
FROM
cdef$
WHERE
obj# = :1
AND enabled > 1
GROUP BY
enabled
) c
WHERE
i.obj# = c.enabled (+)
AND i.obj# = ist.obj# (+)
AND i.bo# = :1
ORDER BY
i.obj#
かなり見やすく整形できました。
まとめ

SQL Developerを使ってMySQLに接続・操作する方法をご紹介しました。

- MySQLへはJDBCドライバ経由でアクセス
- timezoneに関するエラーはポート設定で回避可能
- エクスポート機能では、クエリ結果をファイル保存するほか、クリップボードにもコピー可
- SQL整形機能のメニュー名は「書式」