oracleテーブル構造
7251 ワード
テーブル管理
新規テーブル
構文 を接続する.テーブル名は、データベース内で一意である必要があります.重複するとエラーが発生します. 列名:英語の単語の略語で構成され、長さは30ビットを超えず、数字、下線または特殊文字で始まることはできない.単語間は以下の線で接続する. かっこの後、セミコロンで終わる必要があります.
コメントの追加コメントon table:キーワード、すなわちテーブルのコメント comment on column:キーワード、列のコメント テーブルのコピー
データを含まないテーブル構造のコピー
データを含まないテーブル構造のコピー、インデックス、制約、コメントを含まない
データを含むテーブル構造のコピー
テーブル構造をコピーし、データは含まれますが、インデックス、制約、コメントは含まれません.
新規パーティション表パーティションの原則:データ量が2000 Wを超える場合、パーティションテーブル の使用を考慮することができる.
パーティションのタイプ
タイプの説明
range:
範囲別パーティションは、通常、申請時間、入社時間などの時間フィールド別にパーティション化されます.
list:
ID番号の最下位など、分散パーティションに従って
hash:
hash値に従ってパーティションを割り当て、均一な割り当てを保証しない
rangeパーティションの例
キーワード
説明
partition by
パーティションテーブルであることを示し、rangeはパーティション方式を決定し、join_dateはパーティションキーであり、テーブルの列でなければならない
partition
後にパーティション名を付けます.パーティション名は全ライブラリで一意でなければなりません.繰り返してはいけません.
values less than
すなわち、パーティションキーの値がその後の値より小さい場合、データが本パーティションに落ちる
maxvalue
最大パーティション用
データのjoin_を挿入するとdate時間日付が20日未満、p 1パーティションに入れる時間日付が22より大きい場合P_を入れるMAX
リストパーティションの例
キーワード
説明
values:
すなわち値は.パーティションキーの値が後の値である場合、データが本パーティションに落ちることを示す
default:
キーワード、デフォルト値、パーティションキーの値が以前のパーティション値内にない場合、データはこのパーティションに落ちます.
各パーティションのデータの問合せ
構文
ゾーン構築
テンポラリ・テーブル
oracleのテンポラリ・テーブルの作成が完了すると、毎回作成する必要はありません.
1削除データの送信
構文
例
2ウィンドウを閉じてデータを削除
構文
例
テーブルの削除
列を追加
列を増やす
複数列の追加
テーブル列の名前と属性の変更
テーブル名とカラム名の変更
テーブル名の変更
列名の変更
列のプロパティの変更
s_idのnumberをnumber(6)に変更
s_mpnoがユニークに設定され、s_nameが空でないように設定
データがある場合は、カラムのプロパティを変更します.
stu_infoテーブルのstu_No列プロパティnumberからvarchar 2に変更
メソッド1、stu_No列を空にし、タイプを変更し、最後にデータ・リカバリ
最初のステップでは、データを空にしますが、データを失うことはできません.
ステップ2、タイプの変更
ステップ3では、データをリカバリし、新しいカラムを削除します.
列の削除
単一列の削除
複数列の削除
新規テーブル
構文
create table
(
1 ( ),
2 ( ),
3 ( )
);
create table
:キーワード、表を建てた後に新しい表の表名と、表名の長さに制限があり、32ビットを超えず、英語の単語または略語で構成され、単語の間に下線でSQL> create table stu_test
2 (
3 stu_id number(6),
4 stu_name varchar2(50),
5 stu_age number(3)
6 );
。
コメントの追加
SQL> comment on table stu_test is ' ';
。
SQL> comment on column stu_test.stu_id is ' ';
。
SQL> comment on column stu_test.stu_name is ' ';
。
SQL> comment on column stu_test.stu_age is ' ';
。
データを含まないテーブル構造のコピー
データを含まないテーブル構造のコピー、インデックス、制約、コメントを含まない
SQL> create table stu_test1 as
2 select stu_id,stu_name from stu_test
3 where 1=2;
。
データを含むテーブル構造のコピー
テーブル構造をコピーし、データは含まれますが、インデックス、制約、コメントは含まれません.
SQL> create table stu_test2 as
2 select stu_id,stu_name from stu_test
3 where 1=1;
。
新規パーティション表
パーティションのタイプ
タイプの説明
range:
範囲別パーティションは、通常、申請時間、入社時間などの時間フィールド別にパーティション化されます.
list:
ID番号の最下位など、分散パーティションに従って
hash:
hash値に従ってパーティションを割り当て、均一な割り当てを保証しない
rangeパーティションの例
SQL> create table emp_info
2 (
3 emp_no number(10),
4 join_date date
5 )
6 partition by range(join_date)
7 (
8 partition P1 values less than(to_date('20191120','YYYYMMDD')),
9 partition P2 values less than(to_date('20191121','YYYYMMDD')),
10 partition P3 values less than(to_date('20191122','YYYYMMDD')),
11 partition P_MAX values less than(maxvalue)
12 );
。
キーワード
説明
partition by
パーティションテーブルであることを示し、rangeはパーティション方式を決定し、join_dateはパーティションキーであり、テーブルの列でなければならない
partition
後にパーティション名を付けます.パーティション名は全ライブラリで一意でなければなりません.繰り返してはいけません.
values less than
すなわち、パーティションキーの値がその後の値より小さい場合、データが本パーティションに落ちる
maxvalue
最大パーティション用
データのjoin_を挿入するとdate時間日付が20日未満、p 1パーティションに入れる時間日付が22より大きい場合P_を入れるMAX
リストパーティションの例
SQL> create table LIST_TAB_TEST
2 (
3 id_no number(10),
4 partition_id varchar2(2)
5 )
6 partition by list(partition_id)
7 (
8 partition P_0 values('0'),
9 partition P_1 values('1'),
10 partition P_2 values('2'),
11 partition P_default values(default)
12 );
。
キーワード
説明
values:
すなわち値は.パーティションキーの値が後の値である場合、データが本パーティションに落ちることを示す
default:
キーワード、デフォルト値、パーティションキーの値が以前のパーティション値内にない場合、データはこのパーティションに落ちます.
各パーティションのデータの問合せ
構文
select * from partition( );
SQL> insert into emp_info
2 values(1,sysdate);
1 。
SQL> select * from emp_info partition(p3);
EMP_NO JOIN_DATE
---------- --------------
1 21-11 -19
SQL> insert into list_tab_test
2 values(1,6);
1 。
SQL> select * from list_tab_test partition(P_default);
ID_NO PART
---------- ----
1 6
ゾーン構築
select * from dba_part_key_columns where owner='SCOTT';
の表示テンポラリ・テーブル
oracleのテンポラリ・テーブルの作成が完了すると、毎回作成する必要はありません.
1削除データの送信
構文
create global temporary table
(
1 ( ),
2 ( ),
3 ( )
) on commit delete rows;
例
SQL> create global temporary table temp_tab1
2 (
3 colu_1 number(5),
4 colu_2 date
5 ) on commit delete rows;
。
SQL> insert into temp_tab1 values(1,sysdate);
1 。
SQL> select * from temp_tab1;
COLU_1 COLU_2
---------- --------------
1 25-11 -19
SQL> commit;
。
SQL> select * from temp_tab1;
2ウィンドウを閉じてデータを削除
構文
create global temporary table
(
1 ( ),
2 ( ),
3 ( )
) on commmit preserve rows;
例
SQL> create global temporary table temp_tab2
2 (
3 colu_1 date,
4 colu_2 varchar2(10)
5 ) on commit preserve rows;
。
SQL> insert into temp_tab2 values(sysdate,'logs');
1 。
SQL> commit;
。
SQL> select * from temp_tab2;
COLU_1 COLU_2
-------------- --------------------
25-11 -19 logs
SQL> conn scott/scott;
。
SQL> select * from temp_tab2;
テーブルの削除
SQL> drop table emp_info;
。
SQL> drop table list_tab_test;
。
列を追加
SQL> create table student6
2 (
3 id number primary key
4 );
。
列を増やす
SQL> alter table student6
2 add s_mpno number(6);
。
複数列の追加
SQL> alter table student6
2 add(s_name varchar2(50),s_deptno number(2));
。
テーブル列の名前と属性の変更
テーブル名とカラム名の変更
テーブル名の変更
SQL> alter table student6 rename to student_6;
。
列名の変更
SQL> alter table student_6 rename column id to s_id;
。
列のプロパティの変更
s_idのnumberをnumber(6)に変更
SQL> alter table student_6 modify s_id number(6);
。
s_mpnoがユニークに設定され、s_nameが空でないように設定
SQL> alter table student_6
2 modify(s_mpno number(6) unique,
3 s_name varchar2(50) not null);
。
データがある場合は、カラムのプロパティを変更します.
stu_infoテーブルのstu_No列プロパティnumberからvarchar 2に変更
SQL> select * from stu_info;
STU_NO STU_NAME STU_AGE
------- -------- ---
1 50
2 50
3 51
メソッド1、stu_No列を空にし、タイプを変更し、最後にデータ・リカバリ
最初のステップでは、データを空にしますが、データを失うことはできません.
SQL> alter table stu_info add stu_no1 number(20);
。
SQL> update stu_info set stu_no1=stu_no;
3 。
SQL> update stu_info set stu_no=null;
3 。
SQL> commit;
。
SQL> select * from stu_info;
STU_NO STU_NAME STU_AGE STU_NO1
---------- -------------- -------------- ----------
50 1
50 2
51 3
ステップ2、タイプの変更
SQL> alter table stu_info modify stu_no varchar(10);
。
ステップ3では、データをリカバリし、新しいカラムを削除します.
SQL> update stu_info set stu_no=stu_no1;
3 。
SQL> alter table stu_info drop column stu_no1;
。
列の削除
単一列の削除
SQL> alter table stu_info drop column stu_no;
。
複数列の削除
SQL> alter table student_6 drop(s_mpno,s_deptno);
。