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

qcbq4gxm  于 2022-12-17  发布在  Mysql
关注(0)|答案(2)|浏览(179)

我们可以在Postgres/ MySQL中创建两个(或更多)名称相同但大小写不同的列吗?例如,列名是否区分大小写?
例如,一个表是否可以包含两个名称分别为COLcol的列?
链接帖子:can we create two columns with same name in database?只讨论相同的名称,但不考虑大小写。

z31licg0

z31licg01#

我们可以在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:

SELECT 
     id as "id",
     ID1 as "ID"
 FROM test;

输出:

id  ID
1   2
yqyhoc1h

yqyhoc1h2#

在标准SQL中,带引号的标识符区分大小写,Postgres遵循该标准。
因此,如下所示:

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

或者作为表的一部分

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

这是两个不同的名称,因为它们由于使用了双引号而变得区分大小写。
但我强烈建议不要这么做,这很可能会造成混乱和问题。
我 * 认为 * 这也应该适用于MySQL,但由于它传统上不关心遵循SQL标准,我不知道。

相关问题