Oracleの基礎知識--表の管理
7648 ワード
scottユーザの下のemp,detpなどのいくつかのテーブルを例に,sqlplusで実証した.
1.テーブル構造の表示:
2.既存のテーブルに基づいて新しいテーブルを作成します.
もちろん、ここでselect*from empは柔軟に変更できます.
カラム名を変更するには、次の2つの方法があります.
1).
2).
3.テーブル構造の変更:
1). 列長を変更し、上記t 1表Aの列長を20とする.
カラムの長さを短くする場合は、カラムの値が設定するカラムの長さを超えていないことを確認します.例:
同様に、カラムのタイプを変更する場合は、カラムの値は空にする必要があります.次のようになります.
2). テーブル名の変更:
3.) 列名の変更:
4). 表コメント:
5).列コメント
4.テーブルの削除
実はここでは表を本当に削除していないので、知識はそれを回収ステーションに入れました.以下を確認できます.
original nameは元の名前がt 2であり、回収ステーションの名前はその長い文字列であることがわかります.
ユーザーの既存のテーブルも表示できます.
5.ごみ箱の表を空にする
6.回収局のテーブルを元に戻す
7.現在のユーザーの下にあるrecyclebinを空にする
8.テーブルを削除するときは、完全に削除し、ごみ箱に入れない:
これで回収ステーションは空いていて、テーブルを復元するにはバックアップを取って復元するしかありません...面倒くさいなぁ~
1.テーブル構造の表示:
SQL> desc emp;
2.既存のテーブルに基づいて新しいテーブルを作成します.
SQL> create table t1 as select * from emp;
。
もちろん、ここでselect*from empは柔軟に変更できます.
カラム名を変更するには、次の2つの方法があります.
1).
SQL> create table t1 as select ename a, empno b, sal c from emp;
。
SQL> desc t1;
?
----------------------------------------------------- -------- ------------
A VARCHAR2(10)
B NUMBER(4)
C NUMBER(7,2)
2).
SQL> create table t1(a, b, c) as select ename,empno,sal from emp;
。
SQL> desc t1;
?
----------------------------------------------------- -------- -------------
A VARCHAR2(10)
B NUMBER(4)
C NUMBER(7,2)
3.テーブル構造の変更:
1). 列長を変更し、上記t 1表Aの列長を20とする.
SQL> desc t1;
?
----------------------------------------------------- -------- -------------
A VARCHAR2(10)
B NUMBER(4)
C NUMBER(7,2)
SQL> alter table t1 modify(a varchar2(20));
。
SQL> desc t1;
?
----------------------------------------------------- -------- -------------
A VARCHAR2(20)
B NUMBER(4)
C NUMBER(7,2)
カラムの長さを短くする場合は、カラムの値が設定するカラムの長さを超えていないことを確認します.例:
SQL> alter table t1 modify(a varchar2(10));
。
SQL> alter table t1 modify(a varchar2(2));
alter table t1 modify(a varchar2(2))
*
1 :
ORA-01441: ,
同様に、カラムのタイプを変更する場合は、カラムの値は空にする必要があります.次のようになります.
SQL> alter table t1 modify(a number(10,2));
alter table t1 modify(a number(10,2))
*
1 :
ORA-01439: ,
2). テーブル名の変更:
SQL> rename t1 to t2;
。
SQL> desc t1;
ERROR:
ORA-04043: t1
SQL> desc t2;
?
----------------------------------------- -------- ------------
A VARCHAR2(10)
B NUMBER(4)
C NUMBER(7,2)
3.) 列名の変更:
SQL> desc t2;
?
----------------------------------------- -------- -------------
A VARCHAR2(10)
B NUMBER(4)
C NUMBER(7,2)
SQL> alter table t2 rename column a to d;
。
SQL> desc t2;
?
----------------------------------------- -------- -------------
D VARCHAR2(10)
B NUMBER(4)
C NUMBER(7,2)
4). 表コメント:
SQL> select comments from user_tab_comments where table_name='T2';
COMMENTS
-------------------------------------------------------------------
SQL> comment on table t2 is ' ';
。
SQL> select comments from user_tab_comments where table_name='T2';
COMMENTS
-------------------------------------------------------------------
5).列コメント
SQL> SELECT COMMENTS FROM USER_COL_COMMENTS WHERE TABLE_NAME='T2';
COMMENTS
------------------------------------------------------------------
SQL> COMMENT ON COLUMN T2.D IS ' ';
。
SQL> SELECT COMMENTS FROM USER_COL_COMMENTS WHERE TABLE_NAME='T2';
COMMENTS
------------------------------------------------------------------
4.テーブルの削除
SQL> drop table t2;
。
実はここでは表を本当に削除していないので、知識はそれを回収ステーションに入れました.以下を確認できます.
SQL> show recyclebin;
ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME
---------------- ------------------------------ ------------ -------------------
T2 BIN$l0t3+wZLRb+jDCDBmZ1dhA==$0 TABLE 2011-10-31:20:41:43
original nameは元の名前がt 2であり、回収ステーションの名前はその長い文字列であることがわかります.
ユーザーの既存のテーブルも表示できます.
SQL> select * from tab;
TNAME TABTYPE CLUSTERID
------------------------------ ------- ----------
BIN$l0t3+wZLRb+jDCDBmZ1dhA==$0 TABLE
BONUS TABLE
D TABLE
DEPT TABLE
E TABLE
EMP TABLE
PLAN_TABLE TABLE
SALGRADE TABLE
T3 TABLE
TEST TABLE
5.ごみ箱の表を空にする
SQL> show recyclebin;
ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME
---------------- ------------------------------ ------------ -------------------
T2 BIN$l0t3+wZLRb+jDCDBmZ1dhA==$0 TABLE 2011-10-31:20:41:43
SQL> purge table t2;
。
SQL> show recyclebin;
6.回収局のテーブルを元に戻す
SQL> create table t2 as select * from emp;
。
SQL> drop table t2;
。
SQL> flashback table t2 to before drop;
。
7.現在のユーザーの下にあるrecyclebinを空にする
SQL> purge recyclebin;
。
8.テーブルを削除するときは、完全に削除し、ごみ箱に入れない:
SQL> drop table t2 purge;
。
SQL> show recyclebin;
これで回収ステーションは空いていて、テーブルを復元するにはバックアップを取って復元するしかありません...面倒くさいなぁ~