SQL Developer から Oracle Database に接続し、この教材で使う学習用のユーザー dbapp を作ります。あわせて、SQL Developer で SQL を実行する2つの方法と、SQL を書くときの基本の決まりを学びます。ここで作る接続を、最後の章まで使い続けます。
この章で学ぶこと
- SQL Developer で接続を作り、データベースに接続する方法
- 学習用のユーザー(スキーマ)を作る
CREATE USERとGRANT - 「文の実行」と「スクリプトの実行」の違い
- SQL を書くときの基本の決まり(
;、大文字と小文字、空白、コメント)
2.1 この章の全体像
「開発環境の準備」でインストールした Oracle Database には、最初から system という管理者用のユーザーが用意されています。しかし、管理者ユーザーで学習用のテーブルを作るのは好ましくありません。何でもできてしまうため、操作を間違えたときの影響が大きいからです。
そこでこの章では、管理者ユーザーで 学習用のユーザー dbapp を作り、以降の章ではそのユーザーで接続してテーブルを作ります。
【知識メモ】ユーザーとスキーマ
Oracle では、ユーザーを作ると、そのユーザーが所有するテーブルなどを入れる領域が同時にできます。この領域を スキーマ といい、名前はユーザー名と同じです。dbapp ユーザーで作ったテーブルは、dbapp スキーマに入ります。別のユーザー(たとえば Spring入門の empapp)が同じ名前のテーブルを作っても、スキーマが違うので別のテーブルとして区別されます。
2.2 system ユーザーで接続する
まず、管理者の system ユーザーでデータベースに接続します。
接続する前に、SQL Developer の日付の表示とワークシートの設定が済んでいることを確かめてください。設定は 「開発環境の準備」の「SQL Developer の設定を変える」 で説明しています。まだの場合は、先に設定してから接続します。日付書式の設定は接続したときに読み込まれるので、接続してワークシートを開いたあとで設定を変えた場合は、SQL Developer をいったん終了し、もう一度起動してから接続し直してください。
【知識メモ】mac で取り組んでいる場合の XEPDB1
この教材のデータベース(PDB)の名前は、Windows の Oracle Database 21c XE では XEPDB1 です。mac の Oracle AI Database 26ai Free では FREEPDB1 になります。mac では、この教材に出てくる XEPDB1 を、すべて FREEPDB1 に読み替えてください(「開発環境の準備(macOS版)」の「CDB と PDB」)。接続するときに気を付けることは、2.3 の「mac で取り組んでいる場合」 にまとめています。
-
SQL Developer を起動します(「開発環境の準備」で展開したフォルダーの
sqldeveloper.exeをダブルクリック)。 -
画面左の「接続」パネルにある緑色の 「+」 ボタン(新規データベース接続)をクリックします。マウスを重ねると「接続の作成...」と表示されます。
-
「データベース接続の作成/選択」ダイアログが表示されるので、次のとおり入力します。
項目 入力する値 Name(接続名) XE_SYSTEMユーザー名 systemパスワード system(「開発環境の準備」のインストール時に設定したパスワード)パスワードの保存 チェックを入れる 接続タイプ 基本 ホスト名 localhostポート 1521SID / サービス名 「サービス名」 を選び、 XEPDB1と入力 -
「テスト」 ボタンをクリックします。ダイアログ左下に 「ステータス:成功」 と表示されれば、入力内容は正しいです。

図2-3 XE_SYSTEM の接続設定(「サービス名」を選び、「テスト」で「ステータス:成功」を確認して「保存」)サービス名は
XEPDB1と大文字で入力します。「SID」の欄にxeが灰色で残っていても、「サービス名」が選ばれていれば問題ありません。 -
「保存」 ボタンをクリックします。入力した接続の設定が保存され、「接続」パネルに XE_SYSTEM が追加されます。入力した設定を確実に残すため、「接続」の前に必ず「保存」を押してください。
-
「接続」 ボタンをクリックします。右側に SQL を入力する ワークシート が開きます。
【ご注意】「SID」ではなく「サービス名」を選ぶ
初期状態では「SID」が選ばれていて、値に xe と入っていることがあります。SID の xe で接続すると、全体を管理する CDB につながってしまい、この後のユーザー作成がエラーになります。必ず 「サービス名」 を選び、XEPDB1 と入力してください。
【ご注意】「テスト」でエラーになったら
- ORA-01017(ユーザー名/パスワードが無効です)… パスワードの入力ミスです。大文字・小文字も区別されます
- ORA-12514(リスナーは接続記述子でリクエストされたサービスを現在認識していません)… サービス名の入力ミスか、「SID」が選ばれたままになっています
- IO エラー/接続が拒否されました … Oracle Database が起動していない可能性があります。「開発環境の準備」の「Oracle が動いていることを確認する」を見直してください
接続のエラーは、付録B「接続のエラー」 にもまとめています。
ワークシートに行番号を表示するなど、ほかの便利な設定は 付録C「SQL Developer を使いやすくする設定」 にまとめています。
2.3 学習用のユーザーを作る
system で接続したワークシートに、次の SQL を入力します。これが、この教材で最初に入力する SQL です。
-- 学習用のユーザー dbapp を作成する
CREATE USER dbapp IDENTIFIED BY dbapp;
-- dbapp にすべての権限を与える(学習用)
GRANT ALL PRIVILEGES TO dbapp;
SQL を実行する
SQL Developer のワークシートには、SQL を実行する方法が2つあります。
| 実行方法 | 操作 | 動き |
|---|---|---|
| 文の実行 | ツールバーの緑の三角ボタン、または Ctrl + Enter | カーソルがある位置の 1つの SQL だけ を実行する。SELECT の結果は「問合せ結果」タブに 表の形 で表示される |
| スクリプトの実行 | ツールバーの「紙と緑の三角」のボタン、または F5 | ワークシートに書いた すべての SQL を上から順に 実行する。結果は「スクリプト出力」タブに 文字 で表示される |

図2-4 SQL を入力したワークシート(赤枠が「スクリプトの実行」ボタン。その左の緑の三角が「文の実行」ボタン)
ここでは2つの SQL をまとめて実行したいので、F5(スクリプトの実行)を押します。ワークシートのタブと右上に XE_SYSTEM と表示されていることも確認しておきましょう(どの接続で SQL を実行するかを表しています)。
画面下の 「スクリプト出力」 タブに、「User DBAPPは作成されました。」と「Grantが正常に実行されました。」が表示されれば成功です。

図2-5 ユーザー作成の SQL を実行したあと(下の「スクリプト出力」に結果が表示される)
【知識メモ】メッセージの表記について
SQL Developer のバージョンによって、メッセージの表記が少し異なることがあります(英語で「User DBAPP created.」と表示される場合もあります)。エラー(ORA- で始まるメッセージ)が出ていなければ問題ありません。
【ご注意】「ORA-65096: 共通ユーザーまたはロール名が無効です」と表示されたら
この教材で使う XEPDB1 ではなく、全体を管理する CDB に接続しています。CDB では、C## で始まる名前のユーザーしか作れないため、このエラーになります。

図2-6 間違った設定の例(「SID」に xe が指定されている)
「接続」パネルで XE_SYSTEM を右クリック → プロパティ を開き、「サービス名」 が選ばれていて値が XEPDB1 になっているか確認してください(「SID」の xe になっていたら直します)。「テスト」で成功したら「保存」して接続し直し、もう一度 SQL を実行します。
どちらに接続しているかは、ワークシートで次の SQL を実行すると確かめられます。XEPDB1 と表示されれば正しい接続です。
SELECT SYS_CONTEXT('USERENV', 'CON_NAME') FROM DUAL;
【ご注意】mac で取り組んでいる場合
mac の Oracle(OrbStack で動かす Oracle AI Database 26ai Free)では、上のエラーは表示されません。接続の「サービス名」には、XEPDB1 ではなく FREEPDB1 と入力します(「開発環境の準備(macOS版)」の「CDB と PDB」)。
- 「SID」が
xeのままだと、「テスト」を押した時点で「ORA-12505: … SID xe is not registered with the listener …」と表示され、接続できません。「サービス名」を選んでFREEPDB1と入力し直してください。 - サービス名に
FREEと入力すると、全体を管理する CDB に接続できてしまいます。このまま CREATE USER を実行すると、エラーにならずにユーザーが作られてしまいます。
mac では、接続したら必ず上の SQL を実行し、FREEPDB1 と表示されることを確かめてから、ユーザーを作ってください。
SQL の意味
| 記述 | 意味 |
|---|---|
CREATE USER dbapp |
dbapp という名前のユーザーを作る |
IDENTIFIED BY dbapp |
パスワードを dbapp にする |
GRANT ALL PRIVILEGES TO dbapp |
dbapp に、データベースのすべての権限をまとめて与える |
ユーザーを作っただけでは、そのユーザーは接続もテーブルの作成もできません。何ができるかは 権限 で決まり、GRANT で権限を与えます。
【ご注意】権限の与え方について
この教材は入門編のため、権限でつまずかないように、dbapp に すべての権限をまとめて 与えています。
すべての権限を持つユーザーは、他のユーザーのデータを読んだり消したりすることもできてしまいます。実際のシステム開発の現場では、セキュリティのリスクを考慮して、必要な権限だけを与える のが原則です。現場で権限を付与するときは、どの権限が必要かを必ず確認してから行ってください。
【ご注意】パスワードについて
この教材では覚えやすさを優先して、ユーザー名とパスワードを同じ dbapp にしています。実際のシステムでは、推測されにくいパスワードを設定してください。
2.4 dbapp ユーザーで接続する
作成した dbapp ユーザーで接続し直します。ここからの作業は、すべて dbapp で行います。
-
「接続」パネルの緑色の 「+」 ボタンをクリックします。
-
次のとおり入力します。
項目 入力する値 Name(接続名) XE_DBAPPユーザー名 dbappパスワード dbappパスワードの保存 チェックを入れる 接続タイプ 基本 ホスト名 localhostポート 1521SID / サービス名 「サービス名」を選び、 XEPDB1 -
「テスト」 で「ステータス:成功」になることを確認し、「保存」 をクリックしてから、「接続」 をクリックします。
-
XE_DBAPP のワークシートが新しいタブで開きます。ワークシートのタブに XE_DBAPP と表示されていることを確認してください。
【再確認】どのユーザーのワークシートかを必ず確認する
ワークシートは接続ごとに開きます。XE_SYSTEM のワークシートでテーブルを作ってしまうと、テーブルが system のスキーマにできてしまい、この教材の説明と合わなくなります。SQL を実行する前に、タブの名前が XE_DBAPP になっていることを確認する習慣をつけましょう。
XE_SYSTEM のワークシートは、もう使わないので閉じておきましょう。
最初の SELECT 文
SELECT は、データを取り出す SQL 文です。第1章で学んだ CRUD の R(Read:読み取り) にあたります。詳しい書き方は第5章で学びます。
接続できたことを確かめるために、XE_DBAPP のワークシートで最初の SELECT 文を実行してみましょう。次の SQL を入力し、その行にカーソルを置いて Ctrl + Enter(文の実行)を押します。
SELECT USER FROM DUAL;
画面下の 「問合せ結果」 タブに、次のように表示されます。
| USER |
|---|
| DBAPP |

図2-9 Ctrl + Enter で実行すると、「問合せ結果」タブに表で表示される
USER は、今接続しているユーザーの名前を返します。DBAPP と表示されれば、dbapp ユーザーで接続できています。DUAL は、Oracle に最初から用意されている1行だけの表で、テーブルのデータとは関係のない値を SELECT で表示したいときに使います(第8章)。
【知識メモ】結果が大文字で表示される理由
CREATE USER dbapp と小文字で書いたのに、結果は DBAPP と大文字で表示されました。Oracle は、ユーザー名・テーブル名・列名などの名前を、" で囲まない限り すべて大文字に変換して保存する ためです。この教材では、ユーザー名は dbapp と小文字で書き、Oracle が表示するメッセージや結果は実物どおり大文字のまま載せます。
2.5 SQL を書くときの決まり
ここまでに3つの SQL 文を実行しました。次の章から本格的に SQL を書いていく前に、SQL の書き方の基本の決まりをまとめておきます。
-- 今接続しているユーザーの名前を表示する
SELECT USER
FROM DUAL;
| 決まり | 説明 |
|---|---|
文の終わりに ; を付ける |
1つの SQL 文の終わりには ;(セミコロン)を付けます。「スクリプトの実行」では、; で文の区切りを判断します |
| 大文字と小文字は区別されない |
SELECT も select も同じ意味です。この教材では、SQL の言葉(キーワード)とテーブル名・列名を 大文字 で書きます。ユーザー名だけは小文字で書きます。ただし、' で囲んだ文字の値('東京都' など)は、大文字と小文字が区別されます |
| 空白と改行は自由 | 言葉と言葉の間の空白や改行は、いくつあっても同じ意味です。長い SQL は、読みやすいように途中で改行してかまいません。上の例のように、FROM などの区切りで改行し、字下げして書くことが多いです |
| 記号は半角で書く |
;・,・'・(・) などの記号は、すべて 半角 で入力します。特に ' を全角の ‘ ’ で書くと「ORA-00911: 文字が無効です。」、" で囲むと「ORA-00904: … 無効な識別子です。」という、見た目では分かりにくいエラーになります。' と ' の間(文字の値)とコメントの中だけは、全角の文字を自由に書けます |
コメントは --
|
-- から行末までは コメント で、実行されません。何のための SQL かをメモしておけます。複数行のコメントは /* と */ で囲みます |
【便利な使い方】「文の実行」で複数行の SQL を実行する
複数行にわたる SQL も、その SQL のどこかにカーソルを置いて Ctrl + Enter を押せば、空行で区切られた範囲が1つの文として実行されます。ワークシートに複数の SQL を書いておくときは、SQL と SQL の間に 空行 を入れておくと、カーソルを置いた SQL だけを確実に実行できます。
SQL Developer でよく使う操作は、付録C「SQL Developer 操作早見表」 にまとめています。
【便利な使い方】SQL の入力は補完できる
ワークシートで SQL を入力するとき、途中まで打って Ctrl + Space を押すと、続きの候補が表示されます。テーブル名や列名も候補に出るので、つづりの間違いを減らせます。
入力の途中で、自分で押さなくても候補が表示されることがあります。そのときは、キーボードの ↓ ↑ キーで候補を選んで Enter を押すか、そのまま入力を続けます。候補を閉じたいときは Esc キーを押します。
【便利な使い方】コードは自分で入力する
本文のコードは、右上の「コピー」ボタンでコピーすることもできますが、慣れるまでは自分で入力してください。入力するうちに、SQL のキーワードや、カンマ・; の付け方が身に付きます。入力したものがうまく動かないときは、コピーしたコードと見比べると、違うところを見つけやすくなります。
2.6 うまくいかないときは
| 症状 | 考えられる原因と対処 |
|---|---|
| 接続の「テスト」で ORA-01017 になる | ユーザー名かパスワードが違います。system のパスワードは「開発環境の準備」で設定したものです。dbapp のパスワードは dbapp です。 |
| 接続の「テスト」で ORA-12514 になる | 「SID」が選ばれたままか、サービス名の入力ミスです。「サービス名」を選び、XEPDB1 と入力してください。 |
| CREATE USER で ORA-65096 になる | CDB に接続しています。上の囲みのとおり、接続のプロパティでサービス名を XEPDB1 に直してください。 |
| CREATE USER で「ORA-01920: ユーザー名'DBAPP'は他のユーザー名またはロール名と競合しています」になる | すでに dbapp ユーザーがあります。前に作ったものをそのまま使ってかまいません。GRANT だけ実行して、2.4 に進んでください。 |
| dbapp で接続すると「ORA-01045: ユーザーDBAPPにはCREATE SESSION権限がありません。ログオンが拒否されました。」になる |
GRANT が実行されていません。XE_SYSTEM のワークシートで GRANT ALL PRIVILEGES TO dbapp; を実行してください。 |
| SQL を実行しても何も起きない | カーソルが SQL の行に無いか、ワークシートが接続されていません。SQL の行にカーソルを置いて Ctrl + Enter を押してください。 |
ほかのエラーは、付録B「よくあるエラーと対処法」 も参考にしてください。
2.7 まとめと確認問題
まとめ
- SQL Developer では、接続を作ってからワークシートで SQL を実行する。接続先のサービス名は XEPDB1。接続は「テスト」→「保存」→「接続」の順に行う
- 管理者ユーザー(system)で、学習用のユーザー dbapp を
CREATE USERで作成し、GRANTで権限を与えた - Oracle では、ユーザーを作るとそのユーザーの スキーマ ができる。以降の作業はすべて XE_DBAPP で行う
- 「文の実行」(Ctrl + Enter)は1つの SQL を実行して表で表示し、「スクリプトの実行」(F5)はすべての SQL を実行して文字で表示する
- SQL 文の終わりには
;を付ける。大文字と小文字は区別されない。記号は半角で書く。--から行末はコメント
この章で使った SQL は、付録C「SQL 早見表」 にまとめています。
確認問題
問1 SQL Developer で接続を作るとき、「SID」ではなく「サービス名」を選んで何と入力しましたか。
解答を見る
XEPDB1 です。Oracle Database 21c XE に最初から用意されている PDB の名前です。
問2 「スクリプトの実行」(F5)と「文の実行」(Ctrl + Enter)の違いを説明してください。
解答を見る
スクリプトの実行は、ワークシートのすべての SQL を上から順に実行し、結果を文字で表示します。文の実行は、カーソルがある位置の1つの SQL だけを実行し、SELECT の結果を表の形で表示します。
問3 CREATE USER dbapp IDENTIFIED BY dbapp; の後に GRANT ALL PRIVILEGES TO dbapp; を実行するのはなぜですか。
解答を見る
ユーザーを作っただけでは、接続もテーブルの作成もできないためです。何ができるかは権限で決まるので、GRANT で権限を与えます。この教材では学習用としてすべての権限をまとめて与えていますが、現場では必要な権限だけを与えます。
問4 select user from dual; と小文字で書いても実行できますか。
解答を見る
できます。SQL のキーワードやテーブル名は、大文字と小文字が区別されません。ただし、' で囲んだ文字の値は区別されます。
問5 第3章でテーブルを作る前に、ワークシートのタブで何を確認しますか。
解答を見る
タブの名前が XE_DBAPP になっていることです。XE_SYSTEM のワークシートで作ると、テーブルが system のスキーマにできてしまいます。



