PostgreSQL已创建表新增列名自动小写问题及VARCHAR长度疑问
问题解答
列名变为rightname的原因
- 多数关系型数据库对未加双引号的标识符(表名、列名这类)会自动统一大小写:比如PostgreSQL、MySQL默认转小写,Oracle默认转大写。
- 你创建表时用
test."persons",通过双引号强制保留了表名的大小写;但新增列时写的RightName没加双引号,数据库就自动把它转成了小写的rightname。 - 要是想保留
RightName的大小写,给列名加上双引号就行,语句改成这样:ALTER TABLE test."persons" ADD COLUMN "RightName" VARCHAR(150);
VARCHAR列是否必须指定长度
这个得看你用的数据库:
- MySQL/MariaDB:必须指定长度,不写的话会直接报错,比如得写成
VARCHAR(150)。 - PostgreSQL:可以不指定长度,直接写
VARCHAR,效果和TEXT一样,能存任意长度的字符串(只要不超过数据库行大小限制)。 - Oracle:必须指定长度,而且Oracle推荐用
VARCHAR2代替VARCHAR,同样得明确长度,不然语法不通过。 - SQL Server:不指定长度的话默认是1,但实际开发里建议显式写清楚长度,避免出现意料之外的问题。
内容的提问来源于stack exchange,提问作者Pinky
相关产品推荐
相关产品推荐

