在MySql中,您可以使用show create table table_name
查看表定义(包含其数据类型的列等)。
oracle sql是否有类似的功能?
答案 0 :(得分:32)
如果您询问SQL * Plus命令(show create table table_name
似乎不是SQL语句),您可以使用desc
命令
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)
如果您真的需要SQL语句,可以使用dbms_metadata
包
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
根据您使用的工具,您可能需要首先运行set long 10000
,告诉SQL * Plus显示所选LOB的前10,000个字节。如果您的DDL较长,请设置较大的值。
答案 1 :(得分:6)
答案 2 :(得分:5)
SQL>设置长1000
SQL>设置pagesize 0
SQL>从DUAL中选择DBMS_METADATA.GET_DDL('表'表'表名' [,' SCHEMA'])
答案 3 :(得分:3)
如果您正在使用PL / SQL Developer;右键单击表,选择View,在视图窗口的右下角单击“View SQL”按钮。
答案 4 :(得分:0)
DDL
正在为我工作,更简单您只需要编写DDL (SCHEMA_OWNER).(TABLE_NAME)
...例如ddl HR.LOCATIONS;
.... HR
是架构和{ {1}}是表名...请确保在此处写入LOCATION
名称和表SCHEMA
,输出将为
NAME
答案 5 :(得分:0)
请注意,表名区分大小写,您需要以大写形式传递表名。