小さい頃はエラ呼吸

いつのまにやら肺で呼吸をしています。


Oracle 11g XEでユーザ登録からテーブル作成までをやってみた。

はじめに

Windows7にOracle Database 11g Express Edtion(XE)をインストールして、テーブル作成、ユーザ登録、データの取得までをやってみました。


機能で学ぶOracle Datebase入門 (DB Selection)
一志 達也
翔泳社
売り上げランキング: 210964

テーブルの作成

はじめに、サンプルで使用するテーブルを作成します。

1.sysユーザでログインします。

connect / as sysdba

2.create table文を実行して、テーブルを作成します。ここでは3つの情報(主キーであるid、名前、ふりがな)をもつテーブルを作ってみます。

create table table01
(
  id number,
  name varchar(50),
  furigana varchar(50),
  primary key( id )
);

3.試しに以下のSQLを実行して、データ件数を取得してみます。まだデータを挿入していないので、件数0が取得できます。

select count(id) from table01;

 COUNT(ID)
----------
         0
作成したテーブルを操作するためのユーザを作成する

sysユーザでもtable01テーブルを操作できるのですが、通常はテーブルを操作するための専用ユーザを作成し、必要な権限のみを与えます。
1.create user文を実行して、あたらしくユーザを作成します。

-- CREATE USER ユーザ名 IDENTIFIED BY パスワード;
CREATE USER hoge IDENTIFIED BY hoge_pwd;

2.作成したhogeユーザは、この状態だとログインすらできないので、ログインする権限を与えます。

GRANT CONNECT TO hoge;

3.hogeユーザにさきほど作成したtable01テーブルへの操作権限を与えます。これでhogeユーザはtable01テーブルに対してデータの検索、挿入、更新、削除ができるようになります。

GRANT select,insert,update,delete ON table01 TO hoge;
hogeユーザでtable01テーブルを操作してみる

1.hogeユーザでログインしなおします。

connect hoge/hoge_pwd

2.table01テーブルの件数を取得してみる

select count(id) from table01;
>select count(id) from table01
>                      *
>行1でエラーが発生しました。:
>ORA-00942: 表またはビューが存在しません。

table01というテーブルが見つからないため、ORA-00942のエラーになりました。table01はsysユーザで作成したテーブルなので、以下のようにします。

select count(id) from sys.table01;

 COUNT(ID)
----------
         0
テーブルに別名を与えるシノニム

テーブル名を指定するのに、テーブル作成者を意識しないと使えないのは非常に不便です。そのため、シノニムという機能を使います。シノニムとは、オブジェクトに別の名前を付けて、その名前で使えるようにする機能のことです。

connect / as sysdba
create public synonym table01 for sys.table01;
>シノニムが作成されました。

この状態で、再度さきほどのSQLを流すとシノニムを介して、目的のテーブルを操作することができます。

SQL> connect hoge/hoge_pwd
接続されました。
SQL> select count(id) from table01;

 COUNT(ID)
----------
         0