是否可以创建一个列名包含空格的表?如果是这样,我该如何创建和使用它?
问问题
80548 次
6 回答
41
这是可能的,但不建议这样做。您需要用双引号将列名括起来。
create table my_table ("MY COLUMN" number);
但请注意文档中的警告:
注意:Oracle 不建议对数据库对象名称使用带引号的标识符。SQL*Plus 接受这些带引号的标识符,但在使用其他管理数据库对象的工具时它们可能无效。
该名称将区分大小写,并且每次引用该名称时都必须将其括在双引号中:
select "MY COLUMN" from my_table;
所以......不要,这将是我的建议......
于 2012-12-10T09:28:11.013 回答
5
是的,这是可能的。您只需要确保引用列名。例如:
CREATE TABLE Fubar ("Foo Bar" INT);
INSERT INTO Fubar VALUES (1337);
SELECT "Foo Bar" FROM SpaceMonster
尽管有可能,但这并不是一个好主意。如果只是用下划线替换所有空格,您可能会避免很多痛苦。
于 2012-12-10T09:27:42.120 回答
3
可以通过命名两个"
示例之间的列: "My columN" ,列名区分大小写,这意味着。
SELECT "my column" from table; --NOT OK
SELECT "My columN" from table; --OK
于 2012-12-10T09:28:54.943 回答
2
如果您适当地引用这些内容,您可以(参见Oracle 文档)。但是我怀疑这不是一个好主意,因为您必须引用所有内容。通常 db 命名标准/约定(例如here或here)倾向于使用下划线(不需要引用)而不是空格。
于 2012-12-10T09:27:34.367 回答
0
你谷歌了吗?我做到了 - 第 6 个链接是this,我在其中找到以下内容:
create table employee (
"First Name" varchar2(20),
"Last Name" varchar2(20),
Address varchar2(60),
Phone varchar2(15),
Salary number,
EmpID number,
DeptID number
);
...当我在 10g 中尝试时效果很好。
于 2012-12-10T09:28:27.923 回答
-1
这是为 oracle 定义的列规则
列(用于表格)
- 所有列的格式为 {alias}_{colname}。例如 prs_id、prs_name、prs_adr_id、adr_street_name。这保证了列名在模式中是唯一的,但来自另一个表的非规范化列除外,这些列使用触发器或应用程序逻辑填充。
- 所有列都是单数。如果您认为您需要一个列名的复数形式,请三思它是否是正确的设计?通常这意味着您在同一列中包含多个值,应该避免这种情况。
- 所有表都有 {alias}_id 形式的代理主键列,它是表中的第一列。例如,prs_id、mat_id、adr_id。
您始终可以使用“”为列名 bu 设置别名
于 2012-12-10T09:27:38.423 回答