SQL Alter Table 语句——如何在 SQL 中增加列或重命名列
你已经创建了你的数据库和表,在所有这些工作之后,你注意到你需要添加或重命名一个列。那么,你可以使用 “ALTER TABLE” 语句来这样做。
请记住,当你这样做时,你需要非常小心。如果你的表有很多行,它可能会给你的数据库带来性能问题。
注意:如果这里介绍的语法不起作用,请检查你所使用的 SQL 的实现文档。大多数东西的工作原理都是一样的,但也有一些区别。
如何用 ALTER TABLE 添加一个新列
要添加一个新的列,首先需要用 ALTER TABLE table_name
选择表,然后用 ADD column_name datatype
写下新列的名称和数据类型。综合起来,代码看起来是这样的:
ALTER TABLE table_name
ADD column_name datatype;
使用 ALTER TABLE
添加新列的示例
我们有一个用户数据库,内容如下:
ID | NAME | AGE | STATE | |
---|---|---|---|---|
1 | Paul | 24 | Michigan | paul@example.com |
2 | Molly | 22 | New Jersey | molly@example.com |
3 | Robert | 19 | New York | robert@example.com |
我们已经到了需要存储用户的身份证件号码的时候了,所以我们需要为此添加一个新的列。
为了给我们的 users
表添加一个新的列,我们需要用 ALTER TABLE users
选择该表,然后用 ADD id_number TEXT
指定新列的名称和数据类型,如下:
ALTER TABLE users
ADD id_number TEXT;
表格现在有了新的一列:
ID | NAME | AGE | STATE | ID_NUMBER | |
---|---|---|---|---|---|
1 | Paul | 24 | Michigan | paul@example.com | NULL |
2 | Molly | 22 | New Jersey | molly@example.com | NULL |
3 | Robert | 19 | New York | robert@example.com | NULL |
一旦提供了缺失的信息,你将需要使用 UPDATE
语句为已经存在的用户添加这些信息。
如何用默认值而不是 NULL 创建一个新的列
你也可以使用 default
关键字和要使用的值来创建一个带有默认值的列。然后,用户将看到默认值,而不是用 NULL 来填充缺失的值。
比方说,我们很快就会有国际用户,我们想添加一个 country
列。我们所有的现有用户都来自美国,所以我们可以用它作为默认值。
ALTER TABLE users
ADD country TEXT default "United States";
现在这个表格是这样的:
ID | NAME | AGE | STATE | ID_NUMBER | COUNTRY | |
---|---|---|---|---|---|---|
1 | Paul | 24 | Michigan | paul@example.com | NULL | United States |
2 | Molly | 22 | New Jersey | molly@example.com | NULL | United States |
3 | Robert | 19 | New York | robert@example.com | NULL | United States |
向表格添加新列时要谨慎
如果你的表已经有很多行了–比如你已经有很多用户,或者很多存储的数据–添加一个新的列可能真的很耗资源。所以一定要小心处理这个操作。
如何用 ALTER TABLE
重命名一个列
你可以用下面的代码来重命名一个列。你用 ALTER TABLE table table_name
选择表格,然后用 RENAME COLUMN old_name TO new_name
写出要重命名的列和要重命名的内容。
ALTER TABLE table_name
RENAME COLUMN old_name TO new_name;
重命名一个列的例子
让我们看一下我们在前面的例子中使用的同一个表:
ID | NAME | AGE | STATE | ID_NUMBER | COUNTRY | |
---|---|---|---|---|---|---|
1 | Paul | 24 | Michigan | paul@example.com | NULL | United States |
2 | Molly | 22 | New Jersey | molly@example.com | NULL | United States |
3 | Robert | 19 | New York | robert@example.com | NULL | United States |
为了避免 id
和 id_number
列之间的混淆,让我们把第一个列重命名为 user_id
。
我们首先用 ALTER TABLE users
选择表,然后用 RENAME COLUMN id TO user_id
声明列名,使其变为我们需要的名字。
ALTER TABLE users
RENAME COLUMN id TO user_id;
使用查询后,表格将看起来像这样:
USER_ID | NAME | AGE | STATE | ID_NUMBER | COUNTRY | |
---|---|---|---|---|---|---|
1 | Paul | 24 | Michigan | paul@example.com | NULL | United States |
2 | Molly | 22 | New Jersey | molly@example.com | NULL | United States |
3 | Robert | 19 | New York | robert@example.com | NULL | United States |
重命名表中的列时要小心
当你使用 ALTER TABLE
重命名列时,你有可能破坏数据库的依赖关系。
如果你使用数据库重构工具来改变一个列的名称,而不是使用 ALTER TABLE
,它将管理所有的依赖关系,并用新的列名来更新它们。
如果你的数据库比较小,你可能不需要担心,但必须记住这一点。
总结
在这篇文章中,你已经学会了如何使用 ALTER TABLE
在表中增加一个列和重命名一个列。
请记住,这两种操作都有各自的风险。正如有人说的,“权力越大,责任越大”,ALTER TABLE
是一种大的权力,所以你要小心使用它!