2

查询 Derby 数据库时,我发现对于某些表,我必须将列名双引号并使用表名来限定列名,但对于其他一些表,我不需要。这些表会发生什么情况?如何使所有表都相同,并且可以在没有双引号和表名限定符的情况下查询它们?我正在使用 NetBeans IDE 的 Sql 命令工具。以下是这些不同的查询。

Set schema app;
Select * from table1 where table1.”state” = ‘CA’;
Select * from table2 where state = ‘CA’;
4

1 回答 1

3

将表名或列名放在引号中,有时用术语“分隔标识符”来指代,有两件事:

  1. 允许您使用其他保留关键字的词(例如,将列命名为“WHERE”或“SELECT”)
  2. 指示数据库系统使用区分大小写的规则而不是不区分大小写的规则来处理名称

因此,如果您最初使用 CREATE TABLE 语句创建“table3”,该语句在这样的双引号中指定“table3”,那么您将永远必须使用双引号中的名称来引用它。

select * from table3

将由数据库自动处理,就好像它是

select * from TABLE3

尽管

select * from "table3"

将成功匹配您创建的表create table "table3"

见:http ://db.apache.org/derby/docs/10.9/ref/crefsqlj34834.html

于 2012-08-31T14:32:33.053 回答