Oracle笔记(2):KeyWords关键字和保留字

Oracle关键字

通过PD建模,生成SQL语句导入Oracle中执行,生成表都没有问题。但是在删除,添加记录的过程中老是抛出异常,比如“表或视图不存在”;

这是生成的PL\SQL语句:

View Code
 1 /*==============================================================*/
 2 /* Table: "Branch"                                              */
 3 /*==============================================================*/
 4 create table "Branch" 
 5 (
 6    "Branch_id"          INTEGER              not null,
 7    "Branch_name"        NVARCHAR2(32),
 8    "Type"               NVARCHAR2(32),
 9    Y                    BINARY_DOUBLE,
10    X                    BINARY_DOUBLE,
11    "Mark"               NVARCHAR2(256),
12    constraint PK_BRANCH primary key ("Branch_id")
13 );
14 
15 /*==============================================================*/
16 /* Table: "CurrentBranchStatistic"                              */
17 /*==============================================================*/
18 create table "CurrentBranchStatistic" 
19 (
20    "Branch_id"          INTEGER,
21    "Number"             INTEGER
22 );

可以看到表名和字段名都被加了双引号,而且有些字段还用了关键字,如Number,Type

通过v$reserved_words视图可以查看关键字信息。

以system用户登录:

select * from v$reserved_words ;

可以查询到1700多条记录

字段类型及解释:Column Datatype Description
KEYWORD VARCHAR2(30): Name of the keyword
LENGTH NUMBER: Length of the keyword
RESERVED VARCHAR2(1) :A value of Y means that the keyword cannot be used as an identifier. A value of N means that it is not reserved.

  Y表示该关键字是保留字,不能用作标示符
RES_TYPE VARCHAR2(1) :A value of Y means that the keyword cannot be used as a type name. A value of N means that it is not reserved.
RES_ATTR VARCHAR2(1) :A value of Y means that the keyword cannot be used as an attribute name. A value of N means that it is not reserved.
RES_SEMI VARCHAR2(1) :A value of Y means that the keyword is not allowed as an identifier in certain situations, such as in DML. A value of N means that it is not reserved. 值为Y表示关键字在特定情况下不允许作为标示符,比如DML(数据库操纵语言)
DUPLICATE VARCHAR2(1) :A value of Y means that the keyword is a duplicate of another keyword. A value of N means that it is not a duplicate.

1.Oracle有许多保留字(Reserved Words)和关键字(Keywords),其区别是保留字不可以用来作为标识符, 关键字可以用来作为标识符,但不建议使用。

2.一般保留字不能用做对象名。如果一定要用可以加双引号。


查询:select * from v$reserved_words  where RESERVED='Y';结果如下

   KEYWORDLENGTHRESERVEDRES_TYPERES_ATTRRES_SEMIDUPLICATE
1FLOAT5YNNNN
2TRIGGER7YNNNN
3CHECK5YNNNN
4TABLE5YNNNN
5CONNECT7YNNNN
6SYNONYM7YNNNN
7UNIQUE6YNNNN
8DROP4YNNNN
9ELSE4YNNNN
10SIZE4YNNNN
11IN2YNNNN
12RENAME6YNNNN
13WHERE5YNNNN
14HAVING6YNNNN
15SHARE5YNNNN
16UNION5YNNNN
17/1YNNNN
18SET3YNNNN
19(1YNNNN
20NOCOMPRESS10YNNNN
21VALUES6YNNNN
22|1YNNNN
23REVOKE6YNNNN
24WITH4YNNNN
25NUMBER6YNNNN
26PRIOR5YNNNN
27FROM4YNNNN
28SELECT6YNNNN
29BY2YNNNN
30SMALLINT8YNNNY
31MINUS5YNNNN
32THEN4YNNNN
33VARCHAR28YNNNN
34INTEGER7YNNNY
35ALL3YNNNN
36<1YNNNN
37DELETE6YNNNN
38AS2YNNNN
39PCTFREE7YNNNN
40TO2YNNNN
41ASC3YNNNN
42OPTION6YNNNN
43INTO4YNNNN
44DESC4YNNNN
45CLUSTER7YNNNN
46[1YNNNN
47DEFAULT7YNNNN
48CHAR4YNNNY
49ORDER5YNNNN
50ALTER5YNNNN
51PUBLIC6YNNNN
52NOT3YNNNN
53BETWEEN7YNNNN
54IDENTIFIED10YNNNN
55VARCHAR7YNNNN
56OF2YNNNN
57FOR3YNNNN
58@1YNNNN
59ANY3YNNNN
60INSERT6YNNNN
61^1YNNNN
62!1YNNNN
63-1YNNNN
64DECIMAL7YNNNY
65START5YNNNN
66EXCLUSIVE9YNNNN
67UPDATE6YNNNN
68=1YNNNN
69NOWAIT6YNNNN
70VIEW4YNNNN
71RESOURCE8YNNNN
72MODE4YNNNN
73]1YNNNN
74DATE4YNNNN
75NULL4YNNNN
76>1YNNNN
77&1YNNNN
78LOCK4YNNNN
79RAW3YNNNN
80LIKE4YNNNN
81.1YNNNN
82OR2YNNNN
83,1YNNNN
84GRANT5YNNNN
85*1YNNNN
86INTERSECT9YNNNN
87ON2YNNNN
88EXISTS6YNNNN
89LONG4YNNNN
90+1YNNNN
91COMPRESS8YNNNN
92INDEX5YNNNN
93IS2YNNNN
94CREATE6YNNNN
95DISTINCT8YNNNN
96AND3YNNNN
97)1YNNNN
98GROUP5YNNNN
99:1YNNNN
100 0YNNNN

查询:select * from v$reserved_words  where RES_SEMI='Y';结果如下: 

   KEYWORDLENGTHRESERVEDRES_TYPERES_ATTRRES_SEMIDUPLICATE
1INCREMENT9NNNYN
2SYSDATE7NNNYN
3ONLINE6NNNYN
4VALIDATE8NNNYN
5MODIFY6NNNYN
6MAXEXTENTS10NNNYN
7UID3NNNYN
8USER4NNNYN
9ROW3NNNYN
10ROWS4NNNYN
11SUCCESSFUL10NNNYN
12IMMEDIATE9NNNYN
13MLSLABEL8NNNYN
14COLUMN6NNNYN
15INITIAL7NNNYN
16ROWNUM6NNNYN
17OFFLINE7NNNYN
18WHENEVER8NNNYN
19CURRENT7NNNYN
20SESSION7NNNYN
21PRIVILEGES10NNNYN
22NOAUDIT7NNNYN
23LEVEL5NNNYN
24ACCESS6NNNYN
25AUDIT5NNNYN
26ADD3NNNYN
27FILE4NNNYN
28COMMENT7NNNYN
29ROWID5NNNYN

测试如下代码:

create table MY_BOX

  ID             NUMBER(10) not null,
  COLUMNS        NUMBER(5),
  Rows           NUMBER(5)
)

Rows报错,查询

可以看出ID、COLUMNS、ROWS、NUMBER、TYPE都是关键字,但是NUMBER是保留字,ROWS特定条件下不能做标识符。

 参考文档:

http://air-house.iteye.com/blog/868118

http://blog.sina.com.cn/s/blog_6d6e54f70100tsdw.html

http://database.ctocio.com.cn/tips/210/8033210.shtml

http://yr512656630.iteye.com/blog/1578905

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值