要在SQL / DDL查询中理解有关该案例的句子

时间:2009-07-29 12:23:32

标签: sql database ddl

此问题基于this answer

以下句子是什么意思?

  

最后,不要使用混合大小写   身份标识。把一切都做成小写,   所以你不必引用它们。

这是否意味着我应该将诸如CREATE TABLE,USER_ID和NOT NULL之类的命令更改为小写? - 它不能,因为它会违反常见的命名约定。

3 个答案:

答案 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系统中呢?