MySQL 数据列 (字段) 操作
# MySQL 数据列 (字段) 操作
前言
MySQL数据库表中的“列
”指的就是字段
。每个列代表表中的一个属性,表的每一行(记录)都有一个对应的列值。
例如,在一个用户信息表(users
)中:
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY, -- 这里的 id 是一列/字段
name VARCHAR(50), -- 这里的 name 是一列/字段
email VARCHAR(100) -- 这里的 email 是一列/字段
);
1
2
3
4
5
2
3
4
5
在这个表中,id
、name
和 email
都是列(或字段)。它们定义了每个用户的不同属性。通常,列(字段)的定义包括其名称、数据类型(如 INT
、VARCHAR
等),以及是否允许空值、默认值等属性。
# 1. 添加一列
-- 使用 `alter table 表名 add 列名 数据类型;` 为表添加新列
alter table 表名 add 列名 数据类型;
-- 输出示例
Query OK, 0 rows affected (0.01 sec)
-- 解释:
-- 该命令用于在指定表中添加一个新列,通常添加在表的末尾。
-- 如果需要在特定位置添加列,可以使用 `after 现有列名` 关键字指定列的位置。
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
# 2. 删除一列
-- 使用 `alter table 表名 drop 列名;` 删除指定的列
alter table 表名 drop 列名;
-- 输出示例
Query OK, 0 rows affected (0.01 sec)
-- 解释:
-- 删除列后,表结构会更新,该列中的数据将被永久删除。该操作不可逆,需谨慎操作。
-- 删除列的操作通常不会影响表中的其他数据。
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
# 3. 增加多列
-- 使用 `alter table 表名 add (列定义1, 列定义2, ...);` 添加多个列
alter table 表名 add (
xh int(4), -- 新增的第一列,表示序号
zc char(8), -- 新增的第二列,表示职称
ads char(50) -- 新增的第三列,表示地址
);
-- 输出示例
Query OK, 0 rows affected (0.01 sec)
-- 解释:
-- 使用 `add` 关键字可以同时增加多列,列的定义需要用逗号分隔。
-- 添加的列会按顺序添加到表末尾,也可以使用 `after 现有列名` 将每一列插入到指定位置。
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
# 4. 删除多列
-- 使用 `alter table 表名 drop 列名1, drop 列名2, ...;` 删除多列
alter table 表名 drop xh, drop zc, drop ads;
-- 输出示例
Query OK, 0 rows affected (0.01 sec)
-- 解释:
-- 删除多列时,`drop` 关键字需要在每个列名前重复,确保每一列都被正确删除。
-- 删除多列后,表的结构将发生显著变化,操作不可逆。
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
# 5. 同时修改列名称和列数据类型
-- 使用 `alter table 表名 change 旧列名 新列名 数据类型;` 同时修改列名称和数据类型
alter table 表名 change 旧列名 新列名 新数据类型;
-- 输出示例
Query OK, 0 rows affected (0.01 sec)
-- 解释:
-- `change` 关键字允许在修改列名称的同时更改其数据类型。这对于重命名列或调整列的存储格式非常有用。
-- 注意,`change` 后必须提供新列名,即使只想更改数据类型。
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
# 6. 只修改列数据类型
-- 使用 `alter table 表名 modify 列名 数据类型;` 仅修改列的数据类型
alter table 表名 modify 列名 新数据类型;
-- 输出示例
Query OK, 0 rows affected (0.01 sec)
-- 解释:
-- `modify` 关键字用于修改现有列的数据类型,而不改变列名。这在需要调整列的存储格式或增加长度时非常实用。
-- 修改数据类型不会删除现有数据,但可能会导致数据截断或格式变化。
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
# 7. 修改列的默认值
-- 使用 `alter table 表名 alter 列名 set default 默认值;` 设置或修改列的默认值
alter table 表名 alter 列名 set default 默认值;
-- 输出示例
Query OK, 0 rows affected (0.01 sec)
-- 解释:
-- 该命令允许为列设置新的默认值。默认值将在插入新数据且未指定该列值时生效。
-- 可以使用 `alter 列名 drop default` 来移除默认值。
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
# 8. 修改列的可空性(允许/不允许空值)
-- 使用 `alter table 表名 modify 列名 数据类型 not null;` 禁止空值
alter table 表名 modify 列名 数据类型 not null;
-- 使用 `alter table 表名 modify 列名 数据类型 null;` 允许空值
alter table 表名 modify 列名 数据类型 null;
-- 输出示例
Query OK, 0 rows affected (0.01 sec)
-- 解释:
-- `not null` 和 `null` 关键字用于设置列是否允许空值。更改列的可空性不会影响现有数据,但可能导致插入新数据时触发约束错误。
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
# 9. 移动列的位置
-- 使用 `alter table 表名 modify 列名 数据类型 after 现有列名;` 将列移动到指定位置
alter table 表名 modify 列名 数据类型 after 现有列名;
-- 使用 `alter table 表名 modify 列名 数据类型 first;` 将列移动到最前面
alter table 表名 modify 列名 数据类型 first;
-- 输出示例
Query OK, 0 rows affected (0.01 sec)
-- 解释:
-- 使用 `after` 关键字可以将列移动到指定的现有列之后。使用 `first` 关键字可以将列移动到表的最前面。该操作仅影响列的显示顺序。
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
# 10. 重命名列
-- 使用 `alter table 表名 change 旧列名 新列名 数据类型;` 重命名列
alter table 表名 change 旧列名 新列名 数据类型;
-- 输出示例
Query OK, 0 rows affected (0.01 sec)
-- 解释:
-- `change` 关键字允许重命名列,同时需要提供列的现有数据类型。如果不希望更改数据类型,则需保持与当前类型一致。
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
编辑此页 (opens new window)
上次更新: 2024/12/28, 18:32:08