更改 SQL 中列的数据类型

2025年3月17日 | 阅读 7 分钟

在 SQL 中,数据类型是我们可以在数据库中存储的数据的类型。数据类型指定了存储在数据库中表的类型和大小。SQL 中使用的不同数据类型基于需求。数据类型有字符数据类型、数字数据类型、布尔数据类型、日期和时间数据类型以及二进制数据类型。

数字数据类型包含 INT、DECIMAL、FLOAT 和 BIGINT。字符数据类型布尔数据类型包含 BOOLEAN。二进制数据类型包含 BINARY、BLOB 和 VARBINARY。日期和时间数据类型包含 TIME、DATE、TIMESTAMP 和 DATETIME。字符数据类型包含 CHAR、TEXT 和 VARCHAR。

有时,我们需要转换数据库中包含的数据类型,这在 MySQL 中可以轻松更改。在本文中,我们将了解在 SQL 中转换数据类型的不同方法,但在此之前,让我们讨论一下为什么我们需要在 SQL 中更改数据类型的一些原因。

需要更改 SQL 中的数据类型

  • 如果您选择合适的数据类型,它将确保数据的完整性和准确性。您可以应用约束并防止存储无效数据。例如,如果一列可以存储数值,那么数值数据类型(例如 INT、BIGINT、FLOAT 等)可确保该列中只保留有效的数值数据。
  • 如果您选择正确的数据类型,它可以帮助优化存储空间。例如,如果您有一个存储小整数的列,您可以使用较小的数据类型,例如 TINYINT 而不是 INT,这可以显著减少存储需求。这对于大型数据库或在存储资源有限的情况下工作很有益。
  • 数据类型的选择会影响查询性能。各种数据类型有各种存储需求,因此选择合适的数据类型至关重要,这可以提高查询性能。例如,对于具有连续长度值的列使用固定长度数据类型(如 CHAR)可能比使用可变长度数据类型(如 VARCHAR)更有效率。
  • 当集成来自不同系统的数据时,通常会遇到不同格式和类型的数据。更改数据类型允许您标准化数据,使其在数据库之间兼容和一致。这确保了无缝的数据处理和分析。
  • 数据类型转换可能对于验证和转换数据至关重要。例如,将字符串更改为日期或时间戳数据类型允许您准确执行与日期相关的计算。同样,将字符串更改为数值数据类型可对数据执行数学运算。
  • 有时,应用程序的需求或特定的用例可能需要更改数据类型。例如,如果您需要存储大型文本文档,您可以选择 TEXT 或 VARCHAR(MAX) 等数据类型而不是 VARCHAR 来容纳长字符串。

在 SQL 中更改列数据类型的各种方法的示例

使用 MySQL Workbench 更改列的数据类型

MySQL Workbench 是一个用于处理 MySQL 数据库的图形用户界面。我们将更改 MySQL Workbench 中列的数据类型。

在 MySQL Workbench 中更改列数据类型的语法

让我们考虑一个名为 student_table 的表,其中包含编号、姓名、年龄、地址、专业和分数等字段。

数字name年龄地址marks
31Justin18Columbus艺术84
32Michael21Washington商业96
33Ariana22Austin科学86
34Robin20Washington艺术72
35Katrina19Austin商业81
36杰克20Seattle艺术95
37亨利21Seattle商业78
38Tom22Columbus商业88
39Alexander23Columbus科学82
40赛琳娜21Austin科学92

现在,我们将使用以下命令描述上述表的列的数据类型

描述表后,它将如下图所示

Change the Datatype of a Column in SQL

示例 1:更改 student_table 中名为“marks”的列的数据类型。

我们将使用以下命令更改 student_table 中名为“marks”的列的数据类型

现在,我们将再次描述列的数据类型,以检查名为“marks”的列的数据类型是否已从 VARCHAR 更改为 INT。我们将使用以下命令

如下图所示,名为“marks”的列的数据类型已成功更改。

Change the Datatype of a Column in SQL

示例 2:更改 student_table 中名为“address”的列的数据类型。

让我们更改 student_table 中名为“address”的列的数据类型。使用给定命令更改数据类型

现在,我们将描述列的数据类型,以检查名为“marks”的列的数据类型是否已更改。我们将使用以下命令描述列的数据类型

如下图所示,名为“address”的列的数据类型已成功从 CHAR 更改为 VARCHAR。

Change the Datatype of a Column in SQL

因此,您可以使用 MySQL Workbench 更改表中列的数据类型。

使用 PostgreSQL 更改列的数据类型

PostgreSQL 是一个开源的对象关系数据库系统,是一个高度安全且值得信赖的数据库。在 PostgreSQL 中有两种方法可以使用不同的语法转换列的数据类型

语法 1:使用 ALTER TABLE 命令与 ALTER COLUMN 命令

语法 2:使用类型转换运算符 (::)

让我们考虑一个名为“Employee”的表,其中包含 EmpId、EmpName、EmpAddress、EmpDepartment 和 EmpSalary 等字段。

员工 ID员工姓名员工地址员工部门员工薪水
201丽娜班加罗尔IT26000
202芭比塔勒克瑙营销28000
203Aryan加尔各答融资35000
204维尼特金奈IT36000
205维迪莎Pune融资37000
206Arun金奈营销50000
207阿玛尔PuneIT42000
208尼塔班加罗尔融资38000
209迪亚勒克瑙营销45000
210萨米尔加尔各答融资56000

在更改数据类型之前,我们将查看 PostgreSQL 中的一个表。要查看该表,我们将使用以下命令

现在,您可以看到数据类型出现在列名旁边,如下图所示。

Change the Datatype of a Column in SQL

示例 1:使用语法 1 更改“Employee”表中名为“EmpName”的列的数据类型。

我们将使用以下命令更改“Employee”表中名为“EmpName”的列的数据类型。

当命令执行时,它会显示您在下面看到的消息。

Change the Datatype of a Column in SQL

要再次查看该表,我们将使用以下命令

现在,您可以看到名为“EmpName”的列的数据类型已从 VARCHAR 更改为 TEXT。

示例 2:使用语法 2 更改“Employee”表中名为“Employee”的列的数据类型。

我们将使用以下命令更改“Employee”表中名为“EmpSalary”的列的数据类型。

当命令执行时,它会显示以下消息。

Change the Datatype of a Column in SQL

要查看该表,我们将使用给定命令

现在,您可以看到名为“EmpSalary”的列的数据类型已从 VARCHAR 更改为 INT。

使用 Microsoft SQL Server 更改列的数据类型

Microsoft SQL Server 是一个关系数据库管理系统,它使用 SQL 语言来管理和搜索数据库。我们将学习在 Microsoft SQL Server 中转换列的数据类型。

语法

让我们考虑一个名为“Customer”的表,其中包含 ID、名字、姓氏、年龄和地址等字段。

ID名字姓氏年龄地址
1德鲁夫Sharma35Kanpur
2伊沙安拉蒂24印多尔
3伊娜亚拉索尔28Meerut
4拉格哈夫Singh42Meerut
5贾斯琳考尔40Kanpur
6DivyaSharma26阿格拉
7沙恩Kapoor32巴特那
8汉西卡Singh23印多尔
9阿姆里塔考尔30Pune
10法尔哈特41Pune

在对表进行任何更改之前,其数据类型如下图所示

Change the Datatype of a Column in SQL

示例 1:更改“customer”表中名为“FirstName”的列的数据类型。

我们将更改“Customer”表中名为“FirstName”的列的数据类型。使用给定命令更改数据类型

执行上述命令后,将显示成功执行查询消息。

您在下面看到,“FirstName”列的数据类型已成功从 VARCHAR 更改为 TEXT。

Change the Datatype of a Column in SQL

示例 2:更改“Customer”表中名为“Age”的列的数据类型。

让我们更改“Customer”表中名为“Age”的列的数据类型。使用给定命令更改数据类型

执行上述命令后,您将在屏幕上看到查询成功执行的消息。

您在下面看到,“Age”列的数据类型已成功从 BIGINT 转换为 INT。

Change the Datatype of a Column in SQL

结论

在本文中,您已了解到数据类型是存储在数据库中的数据的格式。您已学习如何在 SQL 中更改列的数据类型以及为什么需要更改数据库中列的数据类型。

您已经遇到过几种在不同数据库中更改列数据类型的方法,例如 PostgreSQL、Microsoft SQL Server 和 MySQL Workbench。