Oracle 表名称:引号的意义
Oracle 数据库管理中的一个常见问题涉及在表名周围使用双引号。 虽然看似简单,但理解它们的功能对于避免常见错误至关重要。
Oracle 的默认行为是不区分大小写的标识符处理。 这意味着 MyTable
、mytable
和 MYTABLE
都被视为同一个表。 但是,将表名括在双引号中会改变这一点。
双引号强制区分大小写。 "MyTable"
与 "mytable"
或 "MYTABLE"
不同。 如果使用引号创建,则表 必须 使用完全相同的大小写和引号进行引用。
考虑这些例子:
SELECT * FROM mytable WHERE id = 1; -- Works (case-insensitive)
由于 Oracle 默认不区分大小写匹配,该查询成功。 但这失败了:
SELECT * FROM "mytable" WHERE id = 1; -- Fails (case-sensitive)
出现此错误是因为 "mytable"
被定义为区分大小写。查询需要准确的大小写和引号。
Oracle内部使用区分大小写的比较,但它在比较之前将未加引号的标识符大写。 引用绕过了这个。
创建带引号的表格:
CREATE TABLE "my_data"(col1 NUMBER, col2 VARCHAR2(255));
这些查询有效:
SELECT * FROM "my_data"; SELECT * FROM "MY_DATA"; SELECT * FROM "My_Data";
然而,这将会失败:
SELECT * FROM my_data;
相反,创建不带引号的表格:
CREATE TABLE my_other_data(col1 NUMBER, col2 VARCHAR2(255));
这些查询都是不正确的:
SELECT * FROM My_Other_Data; SELECT * FROM "my_other_data"; SELECT * FROM "MY_OTHER_DATA";
只有这个有效:
SELECT * FROM my_other_data;
掌握区分大小写(带引号)和不区分大小写(不带引号)标识符之间的区别以及双引号的作用对于有效的 Oracle 数据库管理和查询编写至关重要。
以上是引号如何影响 Oracle 中的表名称?的详细内容。更多信息请关注PHP中文网其他相关文章!