ORACLE-テーブルのコピー

2115 ワード

コピーフォーム:AS SELECT
新しいテーブルを作成するときは、既存のテーブル値を使用して書き込みます.
empテーブルをコピーしてmy empというテーブルにするには、次の手順に従います.
  • 表のすべての内容をコピーします:*
  • SQL> CREATE TABLE my_emp
      2  AS SELECT * FROM emp;
    希望するコラム
  • のみをコピー
    SQL> CREATE TABLE my_emp
      2  AS SELECT empno, ename, sal, deptno FROM emp;
  • テーブルをコピーすると、すべての構造とデータがコピーされますが、制約はコピーされず、
  • を個別に作成する必要があります.
    +)条件セクションがFALSEの場合は、でテーブルを作成します.
    ------>テーブルの構造のみをコピーし、データはコピーしません
    ex)
    SQL> CREATE TABLE my_emp
     2  AS SELECT * FROM emp WHERE 1=2;
    WHERE 1=2はFALSEなので行が選択されていないのでデータはインポートされません
        SQL> select * from my_emp;
        선택된 레코드가 없습니다.
    作成したテーブルに別のテーブルの値を入れるとき.
    :INSERT INTOではなくSELECTを挿入する->VALES
    SQL> INSERT INTO my_dept
      2  SELECT * FROM dept;
    -->表のように直接SELECTのコラムをコピーすることはできません
    ->()内に該当するコラム名を明記し、SELECT!
    SQL> INSERT INTO my_dept
      2  (deptno, dname)
      3  SELECT deptno, dname FROM dept;
    テスト
    1.deptテーブルの構造とデータをコピーし、my deptテーブルを作成します.
    SQL> CREATE TABLE my_dept
      2  AS SELECT * FROM dept;
    (中間検査DESC)
    primary keyという制約をdeptnoに追加します.
    SQL> ALTER TABLE my_dept
      2  ADD CONSTRAINT my_dept_deptno_pk PRIMARY KEY(deptno);
    
    dnameにnotnullという制約を追加します.
    NOT NULL:ADD CONTRAINTじゃない!!MODIFY !!!
    SQL> ALTER TABLE my_dept
      2  MODIFY dname CONSTRAINT my_dept_dname_nn NOT NULL;
  • empテーブルの構造とデータをコピーし、my empテーブルを作成します.
    SQL> CREATE TABLE my_emp
    2 AS SELECT * FROM emp;
  • empnoにprimary keyという制約を追加します.
    SQL> ALTER TABLE my_emp
      2  ADD CONSTRAINT my_emp_empno_pk PRIMARY KEY(empno);
    my deptテーブルを参照するdetpnoコラムの外部キー制約条件をdeptnoに追加してください.
    SQL> ALTER TABLE my_emp
      2  ADD CONSTRAINT my_emp_deptno_fk FOREIGN KEY(deptno) REFERENCES my_dept(deptno);