oracleテーブル構造

7251 ワード

テーブル管理
新規テーブル
構文
create table   
(
      1   (  ),
      2   (  ),
      3   (  )
);
  • create table:キーワード、表を建てた後に新しい表の表名と、表名の長さに制限があり、32ビットを超えず、英語の単語または略語で構成され、単語の間に下線で
  • を接続する.
  • テーブル名は、データベース内で一意である必要があります.重複するとエラーが発生します.
  • 列名:英語の単語の略語で構成され、長さは30ビットを超えず、数字、下線または特殊文字で始まることはできない.単語間は以下の線で接続する.
  • かっこの後、セミコロンで終わる必要があります.
  • 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 '    ';
         。
  • コメントon table:キーワード、すなわちテーブルのコメント
  • comment on column:キーワード、列のコメント
  • テーブルのコピー
    データを含まないテーブル構造のコピー
    データを含まないテーブル構造のコピー、インデックス、制約、コメントを含まない
    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;
    
        。

    新規パーティション表
  • パーティションの原則:データ量が2000 Wを超える場合、パーティションテーブル
  • の使用を考慮することができる.
    パーティションのタイプ
    タイプの説明
    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);
    
        。