oracle建表语句

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle建表语句相关的知识,希望对你有一定的参考价值。

参考技术A oracle建表语法为:
create
table
表名(

列名

数据类型
是否非空
约束信息,
列名

数据类型
是否非空
约束信息,
列名

数据类型
是否非空
约束信息
);
注意事项如下:
1、表名不能为关键字,不能以数字开头,应见名知意,且为复数,表示存储多条数据
2、列名可以为关键字,应见名知意
3、数据类型支持sql的所有类型,但建议使用oracle自己的类型,即数字number、字符(char、varchar2、nchar、nvarchar2)、日期类型(date和timestamp)、LOB大数据类型(BLOB、CLOB、BFILE)
例如:
create table books(
bookId number(5) not null primary key,
bookName varchar2(200) not null,
author varchar2(50) not null,
price number(8,2) default 0,
pubDate date default sysdate
);
参考技术B create
table
usptotest
(
pn
varchar(10)
not
null,
isd
varchar(20)
default
''
not
null
,
title
varchar(150)
default
''
not
null
,
abst
varchar(2000)
default
''
not
null
,
appno
varchar(20)
default
''
not
null
,
appdate
varchar(20)
default
''
not
null
,
inventor
varchar(200)
default
''
not
null
,
assignee_name
varchar(50)
default
''
not
null
,
assignee_country
varchar(20)
default
''
not
null
,
assignee_city
varchar(20)
default
''
not
null
,
assignee_state
varchar(10)
default
''
not
null,
primary
key
(pn)
)
这样就OK了
你写反了
除第一个字段主键外,其它字段可以不输入,而是直接赋值为空
create
table
usptotest
(
pn
varchar(10)
not
null,
isd
varchar(20)
default
''
,
title
varchar(150)
default
''
,
abst
varchar(2000)
default
''
,
appno
varchar(20)
default
'',
appdate
varchar(20)
default
''
,
inventor
varchar(200)
default
''
,
assignee_name
varchar(50)
default
'',
assignee_country
varchar(20)
default
''
,
assignee_city
varchar(20)
default
''
,
assignee_state
varchar(10)
default
''
,
primary
key
(pn)
)
参考技术C ',
assignee_name
varchar(50)
default
',
appdate
varchar(20)
default
',
title
varchar(150)
default
',
assignee_country
varchar(20)
default
'
not
null,
assignee_state
varchar(10)
default
''',
primary
key
(pn)
)
这样就ok了
你写反了
除第一个字段主键外;
not
null
,
assignee_name
varchar(50)
default
',
abst
varchar(2000)
default
',
title
varchar(150)
default
'
;;
,
assignee_city
varchar(20)
default
''
not
null
;
,
appno
varchar(20)
default
',其它字段可以不输入,
isd
varchar(20)
default
',而是直接赋值为空
create
table
usptotest
(
pn
varchar(10)
not
null;'
not
null
;
not
null
;'',
inventor
varchar(200)
default
'''
not
null
,
appdate
varchar(20)
default
'
;'
,
abst
varchar(2000)
default
'
not
null
;;'
,
assignee_city
varchar(20)
default
'
;',
isd
varchar(20)
default
'
,
appno
varchar(20)
default
''
not
null
;''',
assignee_country
varchar(20)
default
''
not
null
,
inventor
varchar(200)
default
'
not
null
;''',
assignee_state
varchar(10)
default
'create
table
usptotest
(
pn
varchar(10)
not
null

oracle 查看建表语句

dbms_metadata.get_ddl(object_type => 'TABLE',name => table_name)

这个语句我会用,但是这个查询出来的create语句有些问题,一是不包含约束,二十多了什么附件信息,比如storage compress等。例子如下:
CREATE TABLE "abc"."AR_TMP"
( "COD_FN_ENT" CHAR(4 CHAR),
"NUM_SEQ_AR" CHAR(17 CHAR) ,
"ID_SP" CHAR(3 CHAR) ,
) 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 "CRS_DATA"

我在aqua data studio里在表上右击可以查询到如下的sql,
CREATE TABLE BDPDCUSER.AR_TMP (
COD_FN_ENT CHAR(4 CHAR) NOT NULL,
NUM_SEQ_AR CHAR(17 CHAR) NOT NULL,
ID_SP CHAR(3 CHAR) NOT NULL,
)
这个包含了null等约束,而且没有附件信息,如果过想获取这个sql,该怎么用sql语句来实现呢?谢谢。
not null 确实显示,但是null不显示。我现在想着用shell脚本加工,但是也有个小问题。
dbms_metadata.get_ddl
本来直接执行输出是这样的
CREATE TABLE "abc"."AR_TMP"
( "COD_FN_ENT" CHAR(4 CHAR),
"NUM_SEQ_AR" CHAR(17 CHAR) ,
"ID_SP" CHAR(3 CHAR) ,
)
但是在shell执行是输出这样的
CREATE TABLE "abc"."AR_TMP"
( "COD_FN_ENT" CHAR(4 CHAR),
"NUM_SEQ_AR" CHAR(17
CHAR) ,
"ID_SP" CHAR(3 CHAR) ,
)
您知道怎么回事吗?谢谢。

参考技术A 在sqlplus中执行以下命令:

set line 200 pages 50000 wrap on long 999999 serveroutput on

EXECUTEDBMS_METADATA.SET_TRANSFORM_PARAM(DBMS_METADATA.SESSION_TRANSFORM,'STORAGE',false);---去除storage等多余参数

select dbms_metadata.get_ddl('TABLE', 表名) from dual;追问

谢谢,不过也没有加上 NULL NOT NULL等限制,AQ右键菜单应该也是执行某条或某些命令吧?您知道吗?

追答

我在本地试过,会显示not null的喔。没有用过AQ,但是这些IDE应该都是调用数据库的命令或函数的。

追问

您知道怎么回事吗?谢谢。这里写了超长,所以补充问题。

追答

您是指“AQ右键菜单应该也是执行某条或某些命令吧?”吗?这个就不太清楚啦。

本回答被提问者采纳

以上是关于oracle建表语句的主要内容,如果未能解决你的问题,请参考以下文章

怎样用oracle查建表语句

oracle建表语句

oracle 查看建表语句

oracle 建表语句

MYSQL建表语句转换成oracle建表语句

在oracle数据库中创建表语句如何写?