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