如何用 oracle 创建一个带有小字符的表?
Posted
技术标签:
【中文标题】如何用 oracle 创建一个带有小字符的表?【英文标题】:How I can create a table with oracle but with small characters? 【发布时间】:2012-10-31 18:50:49 【问题描述】:如何使用 oracle 创建一个带有小字符的表格,当我创建一个带有小字符的表格时,它会将自动转换为大写字符。
【问题讨论】:
你想做什么?请给我们更多信息 记录转换为大写或表格列转换为小写? 当我执行这个查询“create table t (a number, b varchar2(10))” 表名和列名变成大写而不是小写 我使用 Oracle SQL Developer 数据建模器 【参考方案1】:ANSI SQL 标准要求将(不带引号的)表名折叠为大写。
您可以使用带引号的标识符创建具有小写名称的表(和列)(这再次遵循 SQL 标准):
CREATE TABLE "foo"
(
"id" integer,
"SomeColumn" varchar(100)
);
不过,我强烈建议您不要那样做。
以这种方式创建表后,您必须始终使用双引号,因为任何未加引号的名称将(遵循 SQL 标识符的规则)再次折叠为大写,因此与存储在系统目录中的名称不匹配。
因此,以下语句将不起作用:
SELECT id, somecolumn FROM foo;
您必须使用带引号的标识符:
SELECT "id", "SomeColumn" FROM "foo";
有关(引用)标识符的更多详细信息,请阅读手册中的 Database Object Naming Rules 章节。
【讨论】:
同意一匹没有名字的马'我已经看到并且不得不调试使用它的生产代码,因为编写该应用程序的人是 Java 开发人员,出于某种原因喜欢使用骆驼案例表和列名,因为这是他们在 Java 中键入标识符的方式。在 oracle 中维护它绝对是一场噩梦。当您看到数百个视图都包含大小写混合的列 + 视图名称并且被要求针对它们调整一些 sql 时,您几乎想通过监视器扔键盘。 同意,很好的解释 - 简短而甜美,直截了当!【参考方案2】:用引号将表名括起来 ("
)。也像这样创建你的表
create table "t" ( a number, b varchar2(10) );
现在您的表名是小写的t
。当您访问您的表格时,您必须始终使用引号。例如
select * from "t";
您可以对其他对象(列、索引等)使用相同的构造。
无论如何,SQL 是不区分大小写的,你需要一个充分的理由来使用大小写相关的对象名称。
【讨论】:
以上是关于如何用 oracle 创建一个带有小字符的表?的主要内容,如果未能解决你的问题,请参考以下文章
如何用PowerDesigner逆向工程导出ORACLE数据库表结构