2013-08-16 5 views
25

in MySQL erstellen Sie die Tabellendefinition (Spalten mit ihren Datentypen usw.) mit show create table table_name sehen können.`show table` Äquivalent in Oracle SQL

Gibt es eine ähnliche Funktionalität für Oracle SQL?

Antwort

31

Wenn Sie über SQL * fragen Plus-Befehle (show create table table_name erscheint nicht als eine SQL-Anweisung zu sein), können Sie den desc Befehl

SQL> desc emp 
Name          Null? Type 
----------------------------------------- -------- ---------------------------- 
EMPNO          NOT NULL NUMBER(4) 
ENAME            VARCHAR2(10) 
JOB            VARCHAR2(9) 
MGR            NUMBER(4) 
HIREDATE           DATE 
SAL            NUMBER(7,2) 
COMM            NUMBER(7,2) 
DEPTNO            NUMBER(2) 

Wenn Sie wirklich eine SQL-Anweisung möchten, können Sie verwenden dbms_metadata das Paket

1 select dbms_metadata.get_ddl('TABLE', 'EMP', 'SCOTT') 
    2* from dual 
SQL>/

DBMS_METADATA.GET_DDL('TABLE','EMP','SCOTT') 
-------------------------------------------------------------------------------- 

    CREATE TABLE "SCOTT"."EMP" 
    ( "EMPNO" NUMBER(4,0), 
     "ENAME" VARCHAR2(10), 
     "JOB" VARCHAR2(9), 
     "MGR" NUMBER(4,0), 
     "HIREDATE" DATE, 
     "SAL" NUMBER(7,2), 
     "COMM" NUMBER(7,2), 
     "DEPTNO" NUMBER(2,0), 
     CONSTRAINT "PK_EMP" PRIMARY KEY ("EMPNO") 
    USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS 
    STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 
    PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DE 
FAULT CELL_FLASH_CACHE DEFAULT) 
    TABLESPACE "USERS" 
    ALTER INDEX "SCOTT"."PK_EMP" UNUSABLE ENABLE, 
     CONSTRAINT "FK_DEPTNO" FOREIGN KEY ("DEPTNO") 
      REFERENCES "SCOTT"."DEPT" ("DEPTNO") ENABLE 
    ) SEGMENT CREATION IMMEDIATE 
    PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING 
    STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 
    PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DE 
FAULT CELL_FLASH_CACHE DEFAULT) 
    TABLESPACE "USERS" 
    CACHE 

Je nach Werkzeug, das Sie verwenden, müssen Sie set long 10000 zuerst laufen, das SQL * plus-erzählt die ersten 10.000 Bytes jeden LOB anzuzeigen, die ausgewählt wird. Wenn Ihre DDL länger ist, legen Sie einen größeren Wert fest.

5

Verwendung DESC:

DESC mytable 

Werden Sie die Spalten, aber leider Aussage der erstellen ist Standard Oracle-Tools nicht zur Verfügung.

+2

desc Befehl – nightograph

+0

@nightograph Frage stellen keine Einschränkungen und Schlüssel nicht zeigen Einschränkungen und Schlüssel und Indizes sein; sie fragt nur nach * der Tabellendefinition (Spalten mit ihren Datentypen usw.) * – Bohemian

+3

die Frage nach Äquivalent von „show create table“ in Oracle fragt, DESC ist nicht gleichwertig, da „Show erstellen“ zeigt Tasten Indizes und DESC nicht – nightograph

5

SQL> gesetzt lange 1000

SQL> 0 gesetzt Seitengrße

SQL> wählen DBMS_METADATA.GET_DDL ('TABLE', 'TABLE NAME' [, 'SCHEMA']) von DUAL

3

Wenn Sie PL/SQL Developer verwenden; Klicken Sie mit der rechten Maustaste auf die Tabelle und wählen Sie Ansicht. Klicken Sie rechts unten im Ansichtsfenster auf "SQL anzeigen".

0

DDL ist für mich arbeiten und einfacher alles, was Sie brauchen, ist DDL (SCHEMA_OWNER).(TABLE_NAME) zu schreiben ... zum Beispiel ddl HR.LOCATIONS; .... HR ist das Schema und LOCATION ist Tabellenname ... stellen Sie sicher, Sie schreiben sowohl die SCHEMA Namen und Tabelle NAME hier Kapital wird der Ausgang

CREATE TABLE "HR"."LOCATIONS" 
( "LOCATION_ID" NUMBER(4,0), 
"STREET_ADDRESS" VARCHAR2(40), 
"POSTAL_CODE" VARCHAR2(12), 
"CITY" VARCHAR2(30) CONSTRAINT "LOC_CITY_NN" NOT NULL ENABLE, 
"STATE_PROVINCE" VARCHAR2(25), 
"COUNTRY_ID" CHAR(2), 
CONSTRAINT "LOC_ID_PK" PRIMARY KEY ("LOCATION_ID") 
USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 NOLOGGING COMPUTE 
STATISTICS 
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT 
FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) 
TABLESPACE "EXAMPLE" ENABLE, 
CONSTRAINT "LOC_C_ID_FK" FOREIGN KEY ("COUNTRY_ID") 
    REFERENCES "HR"."COUNTRIES" ("COUNTRY_ID") ENABLE 
) SEGMENT CREATION IMMEDIATE 
PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS NOLOGGING 
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT 
FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) 
TABLESPACE "EXAMPLE" ; 
COMMENT ON COLUMN "HR"."LOCATIONS"."LOCATION_ID" IS 'Primary key of 
locations table'; 
COMMENT ON COLUMN "HR"."LOCATIONS"."STREET_ADDRESS" IS 'Street address 
of an office, warehouse, or production site of a company. 
Contains building number and street name'; 
COMMENT ON COLUMN "HR"."LOCATIONS"."POSTAL_CODE" IS 'Postal code of 
the 
location of an office, warehouse, or production site 
of a company. '; 
COMMENT ON COLUMN "HR"."LOCATIONS"."CITY" IS 'A not null column that 
shows city where an office, warehouse, or 
production site of a company is located. '; 
COMMENT ON COLUMN "HR"."LOCATIONS"."STATE_PROVINCE" IS 'State or 
Province where an office, warehouse, or production site of a 
company is located.'; 
COMMENT ON COLUMN "HR"."LOCATIONS"."COUNTRY_ID" IS 'Country where an 
office, warehouse, or production site of a company is 
located. Foreign key to country_id column of the countries table.'; 
COMMENT ON TABLE "HR"."LOCATIONS" IS 'Locations table that contains 
specific address of a specific office, 
warehouse, and/or production site of a company. Does not store 
addresses/
locations of customers. Contains 23 rows; references with the 
departments and countries tables. '; 
CREATE INDEX "HR"."LOC_CITY_IX" ON "HR"."LOCATIONS" ("CITY") 
PCTFREE 10 INITRANS 2 MAXTRANS 255 NOLOGGING COMPUTE STATISTICS 
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT 
FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) 
TABLESPACE "EXAMPLE" ; 
CREATE INDEX "HR"."LOC_COUNTRY_IX" ON "HR"."LOCATIONS" ("COUNTRY_ID") 
PCTFREE 10 INITRANS 2 MAXTRANS 255 NOLOGGING COMPUTE STATISTICS 
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT 
FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) 
TABLESPACE "EXAMPLE" ; 
CREATE INDEX "HR"."LOC_STATE_PROVINCE_IX" ON "HR"."LOCATIONS" 
("STATE_PROVINCE") 
PCTFREE 10 INITRANS 2 MAXTRANS 255 NOLOGGING COMPUTE STATISTICS 
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT 
FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) 
TABLESPACE "EXAMPLE" ; 
+0

Unbekannter Befehl, dies funktioniert bei Oracle nicht. – jDub9

+0

geben Sie diesen Befehl in SQL Developer ein? oder SQL plus ... beachten Sie auch, haben Sie die Schemanamen mit Punkt eingeben und dann die Tabellennamen ... zum Beispiel 'DDL HR.EMPLOYEES;' sicherstellen, dass die Schemanamen und die Tabelle in Großbuchstaben sind. –

+0

SQL Developer und sie waren in Großbuchstaben, aber es könnte sein, dass meine Tabellen unterhalb eines von 30 in der ‚andere Benutzer‘ Abschnitt unter dem Schema erstellt. – jDub9