我们可以在数据库中创建两个具有相同名称但不同大小写的列吗?



我们可以创建两个(或更多)列在Postgres/MySQL具有相同的名称,但不同的情况?在列名中区分大小写很重要吗?

例如,一个表可以包含两个列,它们的名字分别是COLcol吗?

链接帖子:我们可以在数据库中创建两个相同名称的列吗?只讨论相同的名称,但不讨论大小写敏感性。

我们可以在Postgres/MySQL中创建两个(或更多)列名字只是一个不同的案例?就像区分大小写一样列名?

不可能创建具有相同名称的列-是大小写敏感问题。

MySQL示例:

CREATE TABLE test(
id int,
id int
);

CREATE TABLE test1(
id int,
ID int
);

MySQL的输出:

Schema Error: Error: ER_DUP_FIELDNAME: Duplicate column name 'id'

PostgreSQL的输出:

Schema Error: error: column "id" specified more than once

SELECT语句:

SELECT 
id as "id",
ID1 as "id"
FROM test;
输出:

id
2

区分大小写的选择:

SELECT 
id as "id",
ID1 as "ID"
FROM test;
输出:

id  ID
1   2

在标准SQL中,带引号的标识符是区分大小写的,Postgres遵循这个标准。

所以如下:

select column_one as "COL",
column_two as "col"
from ...

或作为表的一部分

create table dont_do_this
(
"COL" integer,
"col" integer
);

这是两个不同的名称,因为它们由于使用双引号而区分大小写。

但是我强烈建议不要这样做。这很可能会造成混乱和问题。


认为这应该也适用于MySQL,但由于它传统上不关心遵循SQL标准,我不知道。

最新更新