Oracle建表规范
一、oracle建表时表名和字段名推荐做法是不要加引号,且名称大写。(执行sql语句时,oracle会将名称转为大写,这点可以从视图/函数/建表数据字典中看出)。
二、加上引号支持大小写,但容易被人所忽略,反而造成许多不必要麻烦。
如下图:
- C1和C2建表时加了"",区分大小写,所以"test"和"Test"是不同表。
- C3和C4建表时不加"",不区分大小写,所以C4建名称为test的表时报错。
- 执行查询sql时,也需要根据情况看是否加上"",S2和S3查的不是同一个表。(这样容易造成不必要麻烦)
尽管Oracle是支持大小写的对象名称,但是不推荐使用这种做法,理由很简单:
1.操作太麻烦,每次使用都要加“”。
2.容易混淆,从而导致某些不安全因素。
如果使用powerdesigner,建议通过设置把引号都去掉。
数据库->Edit Current DBMS->General->Script->Format->CaseSensitivityUsingQuote。
1、命名规范
表名和列名:
- 必须以字母开头
- 必须在 1–30 个字符之间
- 必须只能包含 A–Z, a–z, 0–9, _, $, 和 #
- 必须不能和用户定义的其他对象重名
- 必须不能是Oracle 的保留字(所有的保留字:select * from v$reserved_words order by keyword asc;)
- Oracle默认存储是都存为大写
SQL:
为了构建易读易编的有效语句,其规则和准则如下:
- SQL语句是不区分大小写的
- SQL语句可以是一行,也可以是多行
- 关键字不能在两行之间一分为二或缩写
- 子句通常放在单独的行中,这样可以增强可读性并且易于编辑
- 合理使用缩进 ( 为了增强可读性)
2、数据类型
字段类型 |
中文说明 |
限制条件 |
其它 |
CHAR |
固定长度字符串 |
最大长度2000 bytes |
|
VARCHAR2 |
可变长度的字符串 |
最大长度4000 bytes |
varchar2中文占2字节,英文占1字节。 |
NVARCHAR2 |
根据字符集而定的可变长度字符串 |
最大长度4000 bytes |
Nvarchar2中英文占一样的字节,具体占多少字节因字符集而定。 |
DATE |
日期(日-月-年),时间可有可无 |
YYYY-MM-DD(HH24:MI:SS) |
|
TIMESTAMP(6) |
时间戳 (年月日时分秒毫秒) |
YYYY-MM-DD HH24:MI:SS.ff |
与DATE数据类型相比,TIMESTAMP类型可以精确到微秒,微秒的精确范围为0-9,默认为6 |
LONG |
超长字符串 |
最大长度2G |
足够存储大部分著作 |
RAW |
固定长度的二进制数据 |
最大长度2000 bytes |
可存放多媒体图象声音等 |
LONG RAW |
可变长度的二进制数据 |
最大长度2G |
同上 |
BLOB |
二进制数据 |
最大长度4G |
|
CLOB |
大字符数据 |
最大长度4G |
保存单字节或多字节字符数据,最大值为4G |
NCLOB |
根据字符集而定的字符数据 |
最大长度4G |
保存Unicode编码字符数据,最大值为4G。 |
BFILE |
存放在数据库外的二进制数据 |
最大长度4G |
|
NUMBER(P,S) |
数字类型 |
P为所有有效数字的位数,S为小数位 |
oracle底层只有number为类型并没有decimal和integer这两个类型 |
DECIMAL(P,S) |
数字类型 |
P为所有有效数字的位数,S为小数位 |
|
INTEGER |
整数类型 |
小的整数 |
|
FLOAT |
浮点数类型 |
NUMBER(38),双精度 |
存储近似值 |
REAL |
实数类型 |
NUMBER(63),精度更高 |
存储近似值 |
Note:绿色是常用的