Oracleテーブルの構造

表の管理

新しい表

文法

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 '学生年龄';
注释已创建。
  • テーブルの上にコメント:キーワードそのテーブルのメモ
  • 列にコメント:キーワード欄のコメント

テーブルをコピーします

コピーテーブル構造、データが含まれていません

コピーテーブル構造、データが含まれておらず、インデックス、制約、コメントが含まれていません。

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;

表已创建。

新しいパーティションテーブル

  • 原理をゾーニング:データの量が2000Wを超えると、パーティションテーブルを使用することを検討してください
パーティションの種類 タイプ説明
範囲: レンジ・パーティションをよれば、通常、印加時間などの時間フィールドパーティションに従って、エントリー時間
リスト: そのようなアイデンティティカード番号などのパーティションの分布、最後によると、
ハッシュ: パーティションを割り当てられたハッシュ値に応じて、均一な分布を保証するものではありません。

レンジ・パーティションの例

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  );

表已创建。
キーワード 説明
パーティションにより、 パーティションテーブルが指定された範囲の分割モードが決定され、join_date区分化キーは、テーブルでなければなりません
パーティション パーティション名に続いて、パーティション名を繰り返すことはできません、独自のライブラリ全体でなければなりません
値未満 値が小さい後続のデータのパーティションキー値より大きい場合、すなわち、パーティション内に収まっ
MAXVALUE 最大パーティション

データを挿入するときjoin_date日時は、P1にパーティションが20未満され
た日付と時刻がP_MAXに22より大きい場合

リスト・パーティション化の例

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  );

表已创建。
キーワード 説明
値: その値は、パーティション・キー値は、後続のデータ・パーティション内にある値を表す場合0です。
デフォルト: キー、デフォルト値、値がパーティション・キーの前のパーティション値内にない場合、データがパーティション内に収まっ

各パーティションの照会データ

文法

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';

削除テーブル

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の数(6)

SQL> alter table student_6 modify s_id number(6);

表已更改。

ユニークな、s_name提供空でないにs_mpnoセット

SQL> alter table student_6
  2  modify(s_mpno number(6) unique,
  3  s_name varchar2(50) not null);

表已更改。

既存のデータの下で、変更が列のプロパティ

VARCHAR2の数によって列プロパティstu_info stu_noテーブル

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

第二工程、変形のタイプ

SQL> alter table stu_info modify stu_no varchar(10);

表已更改。

第三段階、データ復旧、削除と追加行

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);

表已更改。

おすすめ

転載: www.cnblogs.com/inmeditation/p/11957359.html
おすすめ