OracleでCREATE TABLEでテーブル作成する
OracleでCREATE TABLEでテーブル作成します。
まずCREATE TABLE権限を付与します。その次に表領域作成権限を付与します。
C:\Users\test>sqlplus /nolog SQL*Plus: Release 11.2.0.2.0 Production on 土 9月 3 07:39:40 2016 Copyright (c) 1982, 2010, Oracle. All rights reserved. SQL> conn / as sysdba 接続されました。 SQL> GRANT CREATE ANY TABLE TO USER002; 権限付与が成功しました。 SQL> GRANT CREATE TABLESPACE TO USER002; 権限付与が成功しました。 SQL>
これでCREATE TABLEすると、「ORA-01950: 表領域’SYSTEM’ に対する権限がありません」とエラーが出ます。
以下のように表領域を作成してから、表領域を指定してCREATE TABLEしてみます。
CREATE TABLESPACE SAMPLE_SPACE DATAFILE 'C:\oraclexe\app\oracle\oradata\XE\SAMPLE_SPACE.dbf' SIZE 10M;
以下のようにCREATE TABLEします。
create table sample_table ( no char(4) , name varchar2(10), constraint pk_emp primary key( no ) ) tablespace SAMPLE_SPACE;
次は「ORA-01950: 表領域’SAMPLE_SPACE’に対する権限がありません」とエラーが出ました。
ちょっとわからなかったので以下権限を付与しました。
GRANT UNLIMITED TABLESPACE TO USER002;
これだと表領域を指定しなくてもよさそうなので、表領域を指定せずにCREATE TABLEを再度してみます。
create table sample_table ( no char(4) , name varchar2(10), constraint pk_emp primary key( no ) );
これでテーブルを作成することができました。
ちなみに、作成した表領域は以下SQLで作成されたことを確認できます。
SELECT * FROM dba_tablespaces;
テーブル定義を変更する
テーブル定義を変更するにはALTER TABLE文を使用します。
以下、sample_tableのnoの桁数をchar(4)からchar(10)に変更する例です。
ALTER TABLE SAMPLE_TABLE MODIFY ( NO CHAR(10) );
KHI入社して退社。今はCONFRAGEで正社員です。関西で140-170/80~120万から受け付けております^^
得意技はJS(ES6),Java,AWSの大体のリソースです
コメントはやさしくお願いいたします^^
座右の銘は、「狭き門より入れ」「願わくは、我に七難八苦を与えたまえ」です^^
コメント