SQL分の基礎
まずログインします。
solaris(SPARC)にインストールされたoracle10g(ver.10.2.0.1)に対して
クライアント側からOracleInstantClientでログインします。
http://www24.atwiki.jp/adsl243/editx/13.html
今回はoracle10g(R10.2)がトライアル版の為OracleInstantClientを使用しています。
ダウンロードはOTNのtopページから
「ダウンロード⇒ページ上のDatabaseの中にあるInstant Client」で
該当のOSを選んでダウンロードして下さい。
OracleInstantClientのインストール方法は
ここを参考にしてください。
OracleInstantClientからのログイン手順
1.[Windows+R]でコマンドラインを起動しcmdとタイプします。
2.以下コマンドを入力しログインします。
書式 | sqlplus system/passwd@oracleサーバーのURL:ポート番号/Oracle_SID
正常にログインされればプロンプトの表示が
SQL>
になります。
必ずsystemユーザーでログインしてください。
一般ユーザーはデフォルトだとロックが掛かっている可能性が高いです。
ログインできない場合のエラーに対しての対処
①リスナーが起動しているか下記コマンドで確認する。
lsnrctl status
ステータスが停止だった場合は下記コマンドでリスナーを起動してください。
lsnrctl start
②$ORACLE_HOME/network/admin/tnsnames.oraの記述が間違っていないか確認する
select文
表から列を選択するのに使います。
if.EMP表を全て出力したい場合。
例)
select * from emp;
書式 | select <列名> from <表名>
- *は全ての列を指定しています。
- 式の終わりには「;」セミコロンが必要です。
ユーザーの作成
書式 | create user <ユーザー名> idetified by <password>
例)create user hanako identified by neko
書式 | create user <ユーザー名> idetified by <password>
書式 | default tablespace <デフォルト表領域> temporary tablespace <一時表領域>;
例)
create user yamada identified by taro
default tablespace users temporary tablespace temp;
書式 | quota <割り当てサイズ> on <表領域>
例)
quota 10m on users;
※割り当てサイズを無制限にする場合はunlimitedを指定する。
例)
quota unlimited on users;
書式 | ater user <作成するユーザー名> identyfied by <新しいパスワード> default_tablespace <新しいデフォルト表領域> temporary_tablespace <一時表領域> quota <割当て制限のサイズ> on <割り当てを与える表領域>
例) 山田のパスワードをtigerに変更
alter user yamada identified by tiger
例) 山田のデフォルト表領域を20mに変更
alter user yamada quota 20m on users
表の作成
書式 | create table <表名>(<列の名前> <列のデータ型> <列の制約>,<列の名前> <列のデータ型> <列の制約 constraint <表の制約>);
例)
create table department(
deptno NUMBER(2) NOT NULL, dname VARCHAR2(14), loc VARCHAR2(13),
constraint dept_primary_key primary key (deptno)
);
データの入力
insert into department(<入力する列名>) values(入力するデータ);
例)
insert into department(deptno, dname, loc) values(10, '開発', '赤坂');
※すべての列に値を入れる場合。
insert into <表名> values(入力するデータ);
例)
insedrt into department values(70, '開発', '池袋');
データの修正
update <変更する表> set <変更する列> = <変更する値> where <変更する行の条件>
※whereを省略すると表の全体を表示する。
例)
update department set loc = '上野' where dname = '開発'
※開発部の場所が上野に変更になった。
すべての列を削除
truncate table <削除する表名>
truncate table department
deleteとの主な違いは列を切り捨てた後に自動でコミットされる。
よって文字通り元に戻せない。
書式 | select * from <検索する表名> where <対象の列名> = <列の値> for update;
例)
select * from department where deptno = 20 for update
ロックをかけられなかった場合エラーを返す。
書式 | select * from <検索する表名> where <対象の列名> = <列の値> for update nowait;
例)
select * from department where deptno = 30 for update nowait
※エラーの出力例
行1でエラーが発生しました。:
ORA-00054: リソース・ビジー、NOWAITが指定されていました。
ユーザー削除(DROP USER権限が必要)
- systemユーザーでログインする。
- 他のユーザーが削除するユーザーでログインしている場合削除できない。
drop user <ユーザー名> cascade
例)
drop user yamada cascade
誰がデータベースにアクセスしているか確認
select sid, serial#, username, machine, program from v$session;
データベースの停止/開始
shutdown immediate
※強制停止(DBに接続しているユーザーがいても有無を言わさず停止)
shutdown normal
※通常停止(DBに接続しているユーザが接続を切るまで待機し切ったら停止)
startup
データディクショナリのリストを取得
select table_name from dict where table_name like '%TABLE%'
- データディクショナリuser_tablesの簡単な説明
select * from dict where table_name='USER_TABLES'
ユーザー山田の表領域確認
select username, default_tablespace, temporary_tablespace
from dba_users where username = 'YAMADA'
select username, tablespace_name, max_bytes from dba_ts_quotas where username = 'YAMADA'
ユーザーの権限確認
select * from user_sys_privs;
一度与えたユーザー権限の取り消し
書式 | revoke <システム権限の名前> from <ユーザーの名前>
例) ユーザー山田のCREATE USER権限取り消し
revoke create user from yamada
例)全てのユーザーでscottのemp表を検索されないようにする。
revoke all on scott.emp from public;
ロールの作成
例)
create role ap1_user
書式 | drop role <削除するロールの名前>
例)
drop role ap1_user
表の追加
書式 | alter table <表の名前> add ( <名前> <データ型>);
例)
alter table del_me add ( col timestamp(3) with time zone );
書式 | alter table dell_me drop (削除対象名) CASCADE CONSTRAINTS;
例)
alter table dell_me drop (id) CASCADE CONSTRAINTS;
最終更新:2009年12月10日 17:25