如何用 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 创建一个带有小字符的表?的主要内容,如果未能解决你的问题,请参考以下文章

oracle 如何插入带有引号''和连接符的字符串

如何用sqoop查看oracle的表

如何用PowerDesigner逆向工程导出ORACLE数据库表结构

如何用MySQL创建一个数据库

oracle中如何用delect删除两个关联的表的一条信息,要是用delete不行那应该用啥?

如何用把Oracle中的数据插入到sqlserver中?