sql >> データベース >  >> RDS >> Oracle

Oracle Sql Developerを使用してDDLを生成し、外部キーを含めます

    Quick DDLは、いかなる種類の設定も使用しません。適切と思われる方法で使用します。もちろん、これは完全に主観的なものです。

    ただし、ツリー内のオブジェクトのSQLページに移動すると、[設定]>[データベース]>[エクスポート]で設定された設定に従ってDDLが生成されます。

    バージョン4.2の場合、ワークシートでDDLコマンドを使用することもできます。また、SET DDLを使用して、生成するDDLのタイプをオフまたはオンにすることができます。

    SET DDL PRETTY ON;
    SET DDL CONSTRAINTS ON;
    SET DDL REF_CONSTRAINTS ON;
    SET DDL PARTITIONING ON;
    SET DDL TABLESPACE OFF;
    SET DDL SEGMENT_ATTRIBUTES OFF;
    SET DDL STORAGE OFF;
    
    DDL EMPLOYEES
    
    DDL Option CONSTRAINTS on
    DDL Option REF_CONSTRAINTS on
    DDL Option PARTITIONING on
    DDL Option TABLESPACE off
    DDL Option SEGMENT_ATTRIBUTES off
    DDL Option STORAGE off
    DDL Option STORAGE off
      CREATE TABLE "HR"."EMPLOYEES" 
       (    "EMPLOYEE_ID" NUMBER(6,0), 
        "FIRST_NAME" VARCHAR2(20), 
        "LAST_NAME" VARCHAR2(25) CONSTRAINT "EMP_LAST_NAME_NN" NOT NULL ENABLE, 
        "EMAIL" VARCHAR2(25) CONSTRAINT "EMP_EMAIL_NN" NOT NULL ENABLE, 
        "PHONE_NUMBER" VARCHAR2(20), 
        "HIRE_DATE" DATE CONSTRAINT "EMP_HIRE_DATE_NN" NOT NULL ENABLE, 
        "JOB_ID" VARCHAR2(10) CONSTRAINT "EMP_JOB_NN" NOT NULL ENABLE, 
        "SALARY" NUMBER(8,2), 
        "COMMISSION_PCT" NUMBER(2,2), 
        "MANAGER_ID" NUMBER(6,0), 
        "DEPARTMENT_ID" NUMBER(4,0), 
         CONSTRAINT "EMP_SALARY_MIN" CHECK (salary > 0) ENABLE, 
         CONSTRAINT "EMP_EMAIL_UK" UNIQUE ("EMAIL")
      USING INDEX  ENABLE, 
         CONSTRAINT "EMP_EMP_ID_PK" PRIMARY KEY ("EMPLOYEE_ID")
      USING INDEX  ENABLE, 
         CONSTRAINT "EMP_DEPT_FK" FOREIGN KEY ("DEPARTMENT_ID")
          REFERENCES "HR"."DEPARTMENTS" ("DEPARTMENT_ID") ENABLE, 
         CONSTRAINT "EMP_JOB_FK" FOREIGN KEY ("JOB_ID")
          REFERENCES "HR"."JOBS" ("JOB_ID") ENABLE, 
         CONSTRAINT "EMP_MANAGER_FK" FOREIGN KEY ("MANAGER_ID")
          REFERENCES "HR"."EMPLOYEES" ("EMPLOYEE_ID") ENABLE
       ) ;
       COMMENT ON COLUMN "HR"."EMPLOYEES"."EMPLOYEE_ID" IS 'Primary key of employees table.';
       COMMENT ON COLUMN "HR"."EMPLOYEES"."FIRST_NAME" IS 'First name of the employee. A not null column.';
       COMMENT ON COLUMN "HR"."EMPLOYEES"."LAST_NAME" IS 'Last name of the employee. A not null column.';
       COMMENT ON COLUMN "HR"."EMPLOYEES"."EMAIL" IS 'Email id of the employee';
       COMMENT ON COLUMN "HR"."EMPLOYEES"."PHONE_NUMBER" IS 'Phone number of the employee; includes country code and area code';
       COMMENT ON COLUMN "HR"."EMPLOYEES"."HIRE_DATE" IS 'Date when the employee started on this job. A not null column.';
       COMMENT ON COLUMN "HR"."EMPLOYEES"."JOB_ID" IS 'Current job of the employee; foreign key to job_id column of the
    jobs table. A not null column.';
       COMMENT ON COLUMN "HR"."EMPLOYEES"."SALARY" IS 'Monthly salary of the employee. Must be greater
    than zero (enforced by constraint emp_salary_min)';
       COMMENT ON COLUMN "HR"."EMPLOYEES"."COMMISSION_PCT" IS 'Commission percentage of the employee; Only employees in sales
    department elgible for commission percentage';
       COMMENT ON COLUMN "HR"."EMPLOYEES"."MANAGER_ID" IS 'Manager id of the employee; has same domain as manager_id in
    departments table. Foreign key to employee_id column of employees table.
    (useful for reflexive joins and CONNECT BY query)';
       COMMENT ON COLUMN "HR"."EMPLOYEES"."DEPARTMENT_ID" IS 'Department id where employee works; foreign key to department_id
    column of the departments table';
       COMMENT ON TABLE "HR"."EMPLOYEES"  IS 'employees table. Contains 107 rows. References with departments,
    jobs, job_history tables. Contains a self reference.';
      CREATE INDEX "HR"."EMP_DEPARTMENT_IX" ON "HR"."EMPLOYEES" ("DEPARTMENT_ID") 
      ;
      CREATE INDEX "HR"."EMP_JOB_IX" ON "HR"."EMPLOYEES" ("JOB_ID") 
      ;
      CREATE INDEX "HR"."EMP_MANAGER_IX" ON "HR"."EMPLOYEES" ("MANAGER_ID") 
      ;
      CREATE INDEX "HR"."EMP_NAME_IX" ON "HR"."EMPLOYEES" ("LAST_NAME", "FIRST_NAME") 
      ;
      CREATE INDEX "HR"."EMP_NAME_UPPER" ON "HR"."EMPLOYEES" (UPPER("LAST_NAME")) 
      ;
      CREATE OR REPLACE EDITIONABLE TRIGGER "HR"."UPDATE_JOB_HISTORY" 
      AFTER UPDATE OF job_id, department_id ON employees
      FOR EACH ROW
    BEGIN
      add_job_history(:old.employee_id, :old.hire_date, sysdate,
                      :old.job_id, :old.department_id);
    END;
    /
    ALTER TRIGGER "HR"."UPDATE_JOB_HISTORY" DISABLE;
      CREATE OR REPLACE EDITIONABLE TRIGGER "HR"."SECURE_EMPLOYEES" 
      BEFORE INSERT OR UPDATE OR DELETE ON employees
    BEGIN
      secure_dml;
    END secure_employees;
    /
    ALTER TRIGGER "HR"."SECURE_EMPLOYEES" DISABLE;
    



    1. Firebaseの概要

    2. mySQLデータベース用のPHP検索スクリプト、3文字のみが機能

    3. 配列-配列値をmysqlテーブルに挿入します

    4. 単一のクエリで複数の列の数を取得する