如何在Oracle数据库中小写对象?

Any*_*are -1 sql oracle orm entity-framework naming-conventions

有没有办法Oracle DB用小写字母命名我的表格,列?

我搜索了很多,一些建议说我应该在创建中使用双引号,如下所示:

CREATE TABLE "test" (a number); 
Run Code Online (Sandbox Code Playgroud)

这里的问题是:

它迫使我double quotes通过查询来装饰我的所有桌子!

如果我写:

SELECT * FROM test ;  
Run Code Online (Sandbox Code Playgroud)

我会得到语法错误.

我想将我的所有表,字段命名为小写,因为我将在我的模型中使用这个ORM(实体框架)使用(Pluralization and Singularization)功能,所以如果我有这样的表:

CITY 根据Oracle惯例.

等效的将是CITY实体和复数,因为导航属性将是CITies!!

MT0*_*MT0 5

[TL; DR]最简单的方法是永远不要在对象名称周围使用双引号,只让oracle以默认方式管理区分大小写.

默认情况下,Oracle数据库区分大小写; 但是,默认情况下,它们还会将所有内容转换为大写字母,以便从用户那里抽象出区分大小写.

CREATE TABLE tEsT ( column_name NUMBER );
Run Code Online (Sandbox Code Playgroud)

然后:

SELECT COUNT(*) FROM test;
SELECT COUNT(*) FROM Test;
SELECT COUNT(*) FROM TEST;
SELECT COUNT(*) FROM tEsT;
Run Code Online (Sandbox Code Playgroud)

将所有人都提供相同的输出和:

SELECT * FROM USER_TABLES;
Run Code Online (Sandbox Code Playgroud)

输出:

TABLE_NAME
----------
TEST 
Run Code Online (Sandbox Code Playgroud)

(注意表名是大写的).

如果你使用双引号,那么oracle将尊重你在表名中使用case:

CREATE TABLE "tEsT" ( column_name NUMBER );
Run Code Online (Sandbox Code Playgroud)

和:

SELECT * FROM USER_TABLES;
Run Code Online (Sandbox Code Playgroud)

输出:

TABLE_NAME
----------
TEST 
tEsT
Run Code Online (Sandbox Code Playgroud)

(注意:现在有两个表命名TEST,tEsT而oracle已经尊重了第二个表的区分大小写).