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整形機能のメニュー名は「書式」