Microsoft SQL Server Management Studio 2014数据表更新及数字输入问题咨询
嗨,我来帮你解决这两个SQL Server 2014里的常见问题,都是日常操作中很容易碰到的,别担心!
解决SQL Server 2014中的两个数据表操作问题
一、给已创建的表添加手机号字段
不管是用图形界面还是T-SQL命令,都能轻松搞定,两种方法我都给你列出来:
方法1:通过SSMS图形界面操作
- 打开SQL Server Management Studio 2014,连接到你的数据库实例
- 在左侧“对象资源管理器”里找到目标数据库,展开后定位到需要修改的表
- 右键点击该表,选择设计(Design)
- 在设计界面的最后一行空白处,输入字段名(比如
手机号),然后在“数据类型”下拉框里选VARCHAR(11)——如果需要支持带国际区号的号码,可以设成VARCHAR(20) - 因为表中已经有数据,默认要保持“允许空”列的勾选(否则会因为现有行没有值导致保存失败);如果之后要把这个字段设为必填,可以先添加字段并允许为空,补全已有行的手机号后,再取消“允许空”的勾选
- 点击工具栏的“保存”按钮(或按Ctrl+S),确认修改即可
方法2:用T-SQL命令执行
打开SSMS的“新建查询”窗口,输入以下语句(记得替换成你的表名和字段名):
-- 先添加允许为空的手机号字段 ALTER TABLE 你的表名 ADD 手机号 VARCHAR(11) NULL; -- 等所有已有行都填入手机号后,再设置为必填(可选) ALTER TABLE 你的表名 ALTER COLUMN 手机号 VARCHAR(11) NOT NULL;
执行完成后,刷新表就能看到新添加的字段了。
二、添加超过11位的数字时持续报错的解决办法
这个问题的核心是选错了数据类型,我给你拆解原因和对应解决方案:
为什么会报错?
SQL Server里的INT类型最大只能存储2147483647(也就是10位数字),超过这个范围就会触发溢出错误。要存11位及以上的数字,得选合适的类型:
解决方案分两种场景:
场景1:这个“数字”不需要做算术运算(比如手机号、身份证号、银行卡号)
这种情况强烈推荐用字符类型(VARCHAR或CHAR),因为这类数据本质是字符串标识,用数字类型会丢失前导零,而且完全没必要用数字存储。比如要存15位的标识号:
ALTER TABLE 你的表名 ADD 超长标识号 VARCHAR(20) NULL;
设VARCHAR(20)是为了留足余量,避免后续长度不够。
场景2:这个“数字”需要做算术运算(比如大额金额、统计数值)
如果是要存真正的大数(比如12位的金额、15位的统计数),可以用BIGINT或者DECIMAL:
BIGINT:最大能存9223372036854775807(19位整数),适合整数类型的大数DECIMAL(p,s):p代表总位数,s代表小数位数,比如要存20位整数可以用DECIMAL(20,0)
示例代码:
-- 添加BIGINT类型的整数字段 ALTER TABLE 你的表名 ADD 大整数值 BIGINT NULL; -- 添加DECIMAL类型的数值字段(示例:20位整数,0位小数) ALTER TABLE 你的表名 ADD 大数值 DECIMAL(20,0) NULL;
按照上面的方法操作,就不会再出现报错啦。
内容的提问来源于stack exchange,提问作者cole Mathy T




