在本节中,无涯教程将了解 PostgreSQL varchar数据类型的工作原理,该数据类型使无涯教程可以存储长度不受限制的字符。
在 PostgreSQL 中,Varchar数据类型用于保留无限长的字符。它可以容纳最大长度为 65,535 个字节的字符串。
PostgreSQL Varchar数据类型的语法如下:
variable_name VARCHAR(n)
无涯教程将使用 CREATE 命令在 Organization 数据库中创建 Varchar_demo 表:
CREATE TABLE Varchar_demo ( Id serial PRIMARY KEY, P VARCHAR(1), Q VARCHAR(10) );
成功执行上述命令后,已创建 Varchar_demo 表,如下图所示:
一旦生成 varchar_demo 表,无涯教程将使用插入命令将某些值插入其中。
INSERT INTO Varchar_demo (P, Q) VALUES ('Learnfk', 'It is a demo for Varchar' );
执行完上述命令后,无涯教程将获得以下输出,PostgreSQL将发出一个错误:" value too long for type character varying(1)"。
这意味着 P 列的数据类型为 VARCHAR(1),在这里无涯教程尝试在特定列中插入一个包含三个字符的字符串,正如无涯教程在下面的截图:
要解决以上错误,无涯教程将使用以下命令,如下所示:
INSERT INTO Varchar_demo (P, Q) VALUES ('J', 'It is a demo for Varchar' );
执行上述命令时,PostgreSQL为 Q 列重新发出类似的错误,这意味着 Q 列的数据类型为 VARCHAR(10) 。相反,输入的字符数多于10 ,如下面的屏幕截图所示:
因此,要解决上述错误,无涯教程将使用以下命令:
INSERT INTO Varchar_demo (P, Q) VALUES ('J', 'Learnfk' );
执行上述命令后,无涯教程将得到以下结果:该值已成功插入到 Varchar_demo 表中。
如上图所示,无涯教程成功插入了 P和Q 列的值。
创建并插入 Varchar_demo 表的值后,无涯教程将使用 SELECT命令 返回所有行表的 Varchar_demo :
SELECT * FROM Varchar_demo;
实施上述命令后,无涯教程将获得以下结果,可以看到 P列和Q列的值已成功输入到 Varchar_demo 表。
让无涯教程再看一个示例,以详细了解Varchar数据类型。在CREATE命令的帮助下,将创建一个新表 Varchar_demo2 ,并使用INSERT命令插入一些值。无涯教程将使用 CREATE 命令将 Varchar_demo2 创建到与上述 Organization 类似的数据库中:
CREATE TABLE Varchar_demo2 ( Id SERIAL PRIMARY KEY, Name VARCHAR(5) NOT NULL );
执行上述命令后,已成功创建 Varchar_demo2 表,如以下屏幕截图所示:
生成 Varchar_demo2 表后,无涯教程可以使用INSERT命令在其中插入一些值。
INSERT INTO Varchar_demo2(Name) VALUES ('Mike Ross');
实现上述命令后。 postgreSQL给出错误消息"value too long for type character varying(5)"。输出更清楚地解释了它。
PostgreSQL在存储时不扩展varchar值的空间,并且PostgreSQL在存储或恢复Varchar值时也使用尾随空格。
为此,无涯教程将在下面的示例中通过 Insert 命令理解它,并在 Varchar_demo2 的 Name 列中添加值。在上例中创建的 表:
INSERT INTO Varchar_demo2(Name) VALUES ('Noah ');
执行上述命令后,无涯教程将得到以下结果:该值已成功插入到 Varchar_demo2 表中。
创建并插入 Varchar_demo2 表的值之后,无涯教程将使用 SELECT 命令从Varchar_demo2表中检索值:
SELECT Id, Name, length(Name) FROM Varchar_demo2;
实施上述命令后,无涯教程将得到以下结果,其中 PostgreSQL 在长度计数中包含尾随空格,因为它不会增加列的长度。
如果无涯教程尝试插入的Varchar值的尾部空格超过列的长度,则PostgreSQL将截断尾部空格。另外,PostgreSQL提出了一个警告。如下面的示例所示:
INSERT INTO Varchar_demo2(Name) VALUES ('Emily ');
执行上面的命令后,无涯教程将得到以下结果:
在上面的命令中,插入的值长度为六个字节进入 name 列。该值仍然插入列中。但是,PostgreSQL在添加该值之前会切断尾随空间。
无涯教程可以在以下命令的帮助下进行检查,其中成功添加了Insert命令。
SELECT Id, Name, length(Name) FROM Varchar_demo2;
实施上述命令后,无涯教程仍将获得以下输出。
PostgreSQL CHAR和VARCHAR数据类型均遵循 ASCII字符。它们实际上是相似的,但是在从数据库存储和获取数据方面有所不同。
下表突出显示 char和varchar数据类型之间的基本差异:
CHAR数据类型 | VARCHAR数据类型 |
---|---|
PostgreSQL支持为 Char 数据类型分配静态内存。 | PostgreSQL支持为Varchar数据类型动态分配内存。 |
字符数据类型也称为字符。 | Varchar 数据类型也称为 Variable 字符。 |
char数据类型不能容纳超过 255 个字符。 | Varchar 数据类型最多可容纳 65535 个字符。 |
Char 数据类型以固定长度存储值,这些值在创建表时表示。 | Varchar 数据类型将值存储在长度为一字节或两字节的可变长度字符串中。 |
可以填充带有尾随空格以包含指定的长度。 | 存储时,不能用任何字符和空格填充。 |
祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)