此问题基于this answer。
以下句子是什么意思?
最后,不要使用混合大小写 身份标识。把一切都做成小写, 所以你不必引用它们。
这是否意味着我应该将诸如CREATE TABLE,USER_ID和NOT NULL之类的命令更改为小写? - 它不能,因为它会违反常见的命名约定。
答案 0 :(得分:3)
在PostgreSQL
中,不带引号的标识符将转换为小写:
CREATE TABLE "MYTABLE" (id INT NOT NULL);
CREATE TABLE "mytable" (id INT NOT NULL);
INSERT
INTO "MYTABLE"
VALUES (1);
INSERT
INTO "mytable"
VALUES (2);
SELECT *
FROM mytable;
---
2
SELECT *
FROM MYTABLE;
---
2
两个查询都会返回2
,因为它们是针对"mytable"
发出的,而不是"MYTABLE"
。
要返回1
(即针对"MYTABLE"
而不是"mytable"
发出查询),您需要引用它:
SELECT *
FROM "MYTABLE";
---
1
CREATE TABLE
等不是标识符,它们是保留字。
您可以在任何情况下使用它们。
答案 1 :(得分:2)
不,我认为这位先生提到使用所有小写标识符,例如表,列等名称。这应该对您使用的CREATE TABLE等命令没有影响。
马克
答案 2 :(得分:1)
我不知道他为什么这么说。至少在SQL Server中,标识符的大小写无关紧要。也许在其他DBMS系统中呢?