在关系数据库中更改列的数据类型 | 您所在的位置:网站首页 › mysql更改属性数据类型 › 在关系数据库中更改列的数据类型 |
在关系数据库中更改列的数据类型
2021 年 9 月 10 日,由 Robert Gravelle 撰写
随着时间的推移,系统需求会发生变化。这可能需要创建新的数据库、表和列以及更改现有的表结构。更改列的数据类型可能是微不足道的操作,也可能是困难的操作,具体取决于源和目标数据类型以及列中包含的数据。本篇文章将解决更改列数据类型时的一些常见挑战,以及你可以用来促进该过程的策略。 ALTER TABLE 语句我们可以使用 ALTER TABLE 语句更改现有表的结构(模式)。它是一个数据定义语言(Data Definition Language,DDL)语句,就像 CREATE TABLE、DROP FUNCTION 和 GRANT 一样。它的基本语法是: ALTER TABLE table_to_change what_to_change (additional_arguments)ALTER TABLE 语句可用于更改各种表属性,从更改表名到添加、删除和修改列。 一个语句,不同的语法你可能已经注意到,在第一行之后,ALTER TABLE 语句的语法变得非常模糊。那是因为它因供应商而异。例如: 在 SQL Server 中 ALTER TABLE table_name ALTER COLUMN column_name column_type; 在 PostgreSQL 中 ALTER TABLE table_name ALTER COLUMN column_name TYPE column_definition; 一个简单的示例 ALTER TABLE table_name MODIFY column_name column_type; 一个简单的示例某些数据库(例如 Oracle)不允许你对包含数据的表运行 ALTER 查询。如果这样做,你将收到如下错误: Error report: SQL Error: ORA-01439: column to be modified must be empty to change datatype 01439. 00000 – “column to be modified must be empty to change datatype”但是,大多数数据库类型确实允许你对填充的表进行更改。 这是 Navicat Premium 的表设计器,显示了一个 MySQL 表的列定义: 我们可以运行 ALTER TABLE 语句将 name (VARCHAR) 列的容量增加到 255 个字符: 将列从 VARCHAR 转换为 INT看到包含数字数据的 VARCHAR 列并不少见。在某些情况下,将其类型更改为数字类型可能是有利的。在 Navicat 中,我们可以从下拉列表中选择来设置列的类型: 点击“保存”按钮后即可保存更改。如果你忘记了,Navicat 会在你关闭表设计器时提示你保存更改。 数据截断错误你应该尽可能避免减少列数据类型的大小;否则,你将收到数据截断错误,例如: #1265 - Data truncated for column 'name' at row 2处理此错误没有硬性规则,但通常,你可以自己更新有问题的值,然后重新运行 ALTER TABLE 语句。例如,下面的语句将所有 name 值截断为 10 个字符: 总结这篇文章概述了更改列数据类型的一些常见挑战,以及你可以用来促进该过程的策略。 如果你对 Navicat Premium感兴趣,可以免费试用 14 天! Rob Gravelle 居住在加拿大渥太华,是一名有 20 多年经验的 IT 专家。过往,Rob 曾为与情报有关的组织(如加拿大边境服务局和各种商业组织)构建系统。在业余时间,Rob 是一名出色的吉他演奏家,他拥有多张 CD 和数字发行版。 |
今日新闻 |
推荐新闻 |
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 |