表の管理
新しい表
文法
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);
表已更改。