当前位置:首页 > 问答 > 正文

数据库里怎么用SQL语句给表加新列,步骤啥的简单说说

要给数据库里的表加一个新列,用SQL语句其实很简单,核心就是使用 ALTER TABLE 语句,下面我把这个过程掰开揉碎了说,保证即使你之前没怎么接触过数据库也能看懂。

第一步:想清楚你要加什么

在动手写代码之前,你得先想明白几件事,这就像你要给房子加个新房间,得先知道要加个卧室还是厨房,多大面积,朝南朝北。

  1. 表叫什么名字? 这是最基本的,你得知道你要修改的是哪张表,你有一张表叫 员工信息表
  2. 新列叫什么名字? 给新列起个清楚明白的名字,你想加一列用来存员工的邮箱,可以叫 邮箱 或者 email
  3. 新列要存什么类型的数据? 这是最关键的一步,数据库很严格,你得一早就告诉它这个列是准备放数字、放文字,还是放日期,常见的类型有:
    • INT:用来存放整数,比如员工的年龄、工号。
    • VARCHAR(长度):用来存放可变长度的文字,比如姓名、地址,括号里的数字表示最多能存多少个字符,VARCHAR(100) 最多能存100个字符。
    • DATE / DATETIME:用来存放日期或日期时间,比如员工的入职日期。
    • DECIMAL(总位数, 小数位数):用来存放精确的小数,比如员工的工资。DECIMAL(10, 2) 表示总共10位数,其中小数点后占2位。
  4. 新列允许为空吗? 意思是,当添加新记录或者更新旧记录时,这个新的位置能不能什么都不填,如果这个信息是必须有的,比如员工的工号,那就不允许为空;如果是选填的,比如员工的备用电话,那就可以允许为空。

第二步:写出完整的SQL语句

想清楚上面几点后,就可以组合成一句SQL命令了,基本的结构长这样:

ALTER TABLE 表的名字
ADD 新列的名字 新列的数据类型 其他的要求;

我们来举几个具体的例子,这样更直观。

  • 例子1:加一个允许为空的“邮箱”列 假设我们的 员工信息表 需要增加一个记录邮箱地址的列,邮箱是选填的,那么语句可以这么写:

    ALTER TABLE 员工信息表
    ADD 邮箱 VARCHAR(255);

    这里,VARCHAR(255) 指定了列的类型是文本,最长255个字符,因为我们没有特别说明“不允许为空”,在大多数数据库里,默认就是允许为空的。

  • 例子2:加一个不允许为空的“入职日期”列 现在要给 员工信息表 加一个“入职日期”列,并且要求每条记录都必须有这个日期,不能为空。

    ALTER TABLE 员工信息表
    ADD 入职日期 DATE NOT NULL;

    这里多了一个 NOT NULL,这就是在明确要求这个列不允许空值。

  • 例子3:加一个带默认值的“状态”列 我们添加一个新列,希望对于那些已经存在的旧数据,这个新列能有一个默认值,给所有员工加一个“在职状态”列,默认值设为“在职”。

    ALTER TABLE 员工信息表
    ADD 在职状态 VARCHAR(10) DEFAULT '在职';

    这句命令执行后,新添加的员工记录,如果你没有特意填写状态,会自动填上“在职”;表里所有已经存在的老员工记录,他们的这个新列也会被自动填上“在职”。

第三步:执行语句并检查结果

写好了SQL语句,接下来就是在你的数据库管理工具里(比如MySQL的Workbench,SQL Server的Management Studio,或者Navicat等)运行它,执行成功后,通常会有个提示,命令已成功完成”。

为了确认新列真的加上了,最好再执行一个查询语句看一眼:

SELECT * FROM 员工信息表;

或者,更专业一点,查看一下表的结构:

DESC 员工信息表;   -- 在MySQL中常用
sp_help 员工信息表; -- 在SQL Server中常用

这样你就能清晰地看到表里现在都有哪些列,以及你新加的列是否在里面,它的类型、是否允许为空等属性对不对。

一些需要注意的地方

  1. 备份!备份!备份! 在对重要的数据表进行任何结构修改之前,只要条件允许,一定要先备份整个数据库或者那张表,这是为了避免误操作导致数据丢失,是个非常重要的好习惯。
  2. 对现有数据的影响:添加一个 NOT NULL 且没有默认值的列到一张已经有很多数据的表时,可能会出错,因为数据库会要求所有现存的记录这个新列都必须有值,但你还没提供,所以在这种情况下,要么先允许为空(以后慢慢补数据),要么就设置一个合理的默认值。
  3. 不同的数据库有点小区别:虽然 ALTER TABLE ... ADD ... 是标准SQL,绝大多数数据库都支持,但具体到数据类型的名词(比如Oracle里用 VARCHAR2)或者一些高级选项上,可能会有细微差别,如果你从一个数据库换到另一个数据库,最好稍微查阅一下相关文档。
  4. 一次添加多个列:你完全可以一条语句添加多个列,用逗号隔开就行,这样效率更高。
    ALTER TABLE 员工信息表
    ADD 邮箱 VARCHAR(255),
    ADD 入职日期 DATE NOT NULL,
    ADD 在职状态 VARCHAR(10) DEFAULT '在职';

给表加新列的核心就是使用 ALTER TABLE 命令,关键点在于定义清楚新列的名字、数据类型和约束(比如是否允许为空、默认值是什么),操作前做好规划,操作后进行检查,整个过程就非常直接和简单了。

数据库里怎么用SQL语句给表加新列,步骤啥的简单说说