MySQL - 重命名列
MySQL 中的 ALTER TABLE 语句可用于更改表的结构。例如,我们可以使用此语句添加、删除或重命名列等。
以下是可与 ALTER TABLE 语句一起使用来重命名表列的两个选项:
- 重命名列
- 更改列
注意:重命名表列需要 ALTER 和 DROP 权限。
使用 RENAME COLUMN
在 MySQL 中,我们可以使用 ALTER TABLE RENAME COLUMN 命令更改指定表的一个或多个列的名称。
语法
以下是重命名 MySQL 表中列的语法−
ALTER TABLE table_name RENAME COLUMN old_column1_name TO new_column1_name, RENAME COLUMN old_column2_name TO new_column2_name, ...;
示例
首先,我们使用以下查询创建一个名为 CUSTOMERS 的表 −
CREATE TABLE CUSTOMERS ( ID INT NOT NULL, NAME VARCHAR(20) NOT NULL, AGE INT NOT NULL );
这里,我们使用 DESCRIBE 命令来显示上面创建的表结构的信息 -
DESCRIBE CUSTOMERS;
如下表所示,CUSTOMERS 表中有三列 -
| Field | Type | Null | Key | Default | Extra |
|---|---|---|---|---|---|
| ID | int | NO | NULL | ||
| NAME | varchar(20) | NO | NULL | ||
| AGE | int | NO | NULL |
现在,我们使用以下查询将名为ID的列重命名为cust_id -
ALTER TABLE CUSTOMERS RENAME COLUMN ID TO cust_id;
输出
执行上述查询将产生以下输出 -
Query OK, 0 rows affected (0.02 sec) Records: 0 Duplicates: 0 Warnings: 0
验证
让我们检索 CUSTOMERS 表的描述,以验证列 ID 是否已重命名为 stud_id -
DESCRIBE CUSTOMERS;
正如我们在输出表中观察到的,ID 列已成功重命名为 stud_id。
| Field | Type | Null | Key | Default | Extra |
|---|---|---|---|---|---|
| cust_id | int | NO | NULL | ||
| NAME | varchar(20) | NO | NULL | ||
| AGE | int | NO | NULL |
示例
现在,我们将 CUSTOMERS 表中的另外两列 NAME 和 AGE 重命名为 cust_name 和 cust_age -
ALTER TABLE CUSTOMERS RENAME COLUMN NAME TO cust_name, RENAME COLUMN AGE TO cust_age;
输出
执行上述查询将产生以下输出 -
Query OK, 0 rows affected (0.01 sec) Records: 0 Duplicates: 0 Warnings: 0
验证
要验证列名是否已重命名,请执行以下查询 -
DESCRIBE CUSTOMERS;
正如我们在输出表中观察到的,上述列已成功重命名。
| Field | Type | Null | Key | Default | Extra |
|---|---|---|---|---|---|
| cust_id | int | NO | NULL | ||
| cust_name | varchar(20) | NO | NULL | ||
| cust_age | int | NO | NULL |
使用 CHANGE COLUMN
在 MySQL 中,我们可以使用 ALTER TABLE ... CHANGE COLUMN 命令更改一个或多个列的名称及其数据类型。
语法
以下是 MySQL 中 ALTER TABLE ... CHANGE 命令的语法 -
ALTER TABLE table_name CHANGE COLUMN old_column_name new_column_name 数据类型;
示例
考虑之前更新的 CUSTOMERS 表,让我们更改 cust_id 列的名称和数据类型 -
ALTER TABLE CUSTOMERS CHANGE COLUMN cust_id ID varchar(10);
输出
执行上述查询将产生以下输出 -
Query OK, 0 rows affected (0.03 sec) Records: 0 Duplicates: 0 Warnings: 0
验证
使用以下查询,我们可以验证列 cust_id 的名称和数据类型是否已更改 -
DESCRIBE CUSTOMERS;
列名称和数据类型已成功更改。
| Field | Type | Null | Key | Default | Extra |
|---|---|---|---|---|---|
| ID | varchar(10) | NO | NULL | ||
| cust_name | varchar(20) | NO | NULL | ||
| cust_age | int | NO | NULL |
示例
此处,我们将更改 CUSTOMERS 表中多个列(cust_name 和 cust_age)的名称和数据类型 -
ALTER TABLE CUSTOMERS CHANGE COLUMN cust_name NAME DECIMAL(18,2), CHANGE COLUMN cust_age AGE VARCHAR(20);
输出
执行上述查询将产生以下输出 -
Query OK, 0 rows affected (0.03 sec) Records: 0 Duplicates: 0 Warnings: 0
验证
让我们检索 CUSTOMERS 表的描述,以验证列名和数据类型是否已更改 -
DESCRIBE STUDENTS;
正如我们在输出表中观察到的,上述列的名称和数据类型已成功更改。
| Field | Type | Null | Key | Default | Extra |
|---|---|---|---|---|---|
| ID | varchar(10) | NO | NULL | ||
| NAME | decimal(18,2) | NO | NULL | ||
| AGE | varchar(20) | NO | NULL |
使用客户端程序重命名表的列
除了使用 MySQL 查询重命名 MySQL 数据库中的表的列之外,我们还可以使用客户端程序对表执行 ALTER TABLE 操作。
语法
以下是在各种编程语言中重命名 MySQL 表的列的语法 -
要通过 PHP 程序重命名 MySQL 数据库中表的列,我们需要使用 mysqli 函数 query() 执行 ALTER TABLE 语句,如下所示:-
$sql = "ALTER TABLE table_name RENAME COLUMN old_column1_name TO new_column1_name"; $mysqli->query($sql);
要通过 Node.js 程序将表的列重命名到 MySQL 数据库中,我们需要使用 mysql2 库中的 query() 函数执行 ALTER TABLE 语句,如下所示:-
sql= "ALTER TABLE table_name RENAME COLUMN old_column1_name TO new_column1_name"; con.query(sql);
要通过 Java 程序将表的列重命名到 MySQL 数据库中,我们需要使用 JDBC 函数 executeUpdate() 执行 ALTER TABLE 语句,如下所示:-
String sql = "ALTER TABLE table_name RENAME COLUMN old_column_name TO new_column_name"; statement.executeUpdate(sql);
要通过 Python 程序将表的列重命名到 MySQL 数据库中,我们需要使用 MySQL Connector/Python 的 execute() 函数执行 ALTER TABLE 语句,如下所示:-
sql = "ALTER TABLE table_name RENAME COLUMN old_column_name TO new_column_name" cursorObj.execute(sql);
示例
以下是程序:-
$dbhost = 'localhost';
$dbuser = 'root';
$dbpass = 'password';
$dbname = 'TUTORIALS';
$mysqli = new mysqli($dbhost, $dbuser, $dbpass, $dbname);
if ($mysqli->connect_errno) {
printf("Connect failed: %s
", $mysqli->connect_error);
exit();
}
// printf('Connected successfully.
');
// rename column;
$sql = "ALTER TABLE tut_tbl
RENAME COLUMN tutorial_id TO tutorial_IDs";
if ($mysqli->query($sql)) {
printf("Column renamed successfully!.
");
}
if ($mysqli->errno) {
printf("Columns could be renamed!.
", $mysqli->error);
}
$mysqli->close();
输出
获得的输出如下 -
Column renamed successfully!.
var mysql = require('mysql2');
var con = mysql.createConnection({
host: "localhost",
user: "root",
password: "Nr5a0204@123"
});
//连接到 MySQL
con.connect(function (err) {
if (err) throw err;
console.log("Connected!");
console.log("--------------------------");
sql = "USE TUTORIALS"
con.query(sql);
sql = "CREATE TABLE STUDENTS (ID INT NOT NULL, NAME VARCHAR(40) NOT NULL, AGE INT);"
con.query(sql);
//重命名前的记录
sql = "DESCRIBE STUDENTS;"
con.query(sql, function(err, result){
if (err) throw err
console.log(result);
console.log("--------------------------");
});
//将列 ID 重命名为"stud_id"
sql = "ALTER TABLE STUDENTS RENAME COLUMN ID TO stud_id;"
con.query(sql);
//重命名后的记录
sql = "DESCRIBE STUDENTS;"
con.query(sql, function(err, result){
if (err) throw err
console.log(result);
});
});
输出
生成的输出如下 -
Connected!
--------------------------
[
{
Field: 'ID',
Type: 'int',
Null: 'NO',
Key: '',
Default: null,
Extra: ''
},
{
Field: 'NAME',
Type: 'varchar(40)',
Null: 'NO',
Key: '',
Default: null,
Extra: ''
},
{
Field: 'AGE',
Type: 'int',
Null: 'YES',
Key: '',
Default: null,
Extra: ''
}
]
--------------------------
[
{
Field: 'stud_id',
Type: 'int',
Null: 'NO',
Key: '',
Default: null,
Extra: ''
},
{
Field: 'NAME',
Type: 'varchar(40)',
Null: 'NO',
Key: '',
Default: null,
Extra: ''
},
{
Field: 'AGE',
Type: 'int',
Null: 'YES',
Key: '',
Default: null,
Extra: ''
}
]
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class RenameColumn {
public static void main(String[] args) {
String url = "jdbc:mysql://localhost:3306/TUTORIALS";
String username = "root";
String password = "password";
try {
Class.forName("com.mysql.cj.jdbc.Driver");
Connection connection = DriverManager.getConnection(url, username, password);
Statement statement = connection.createStatement();
System.out.println("Connected successfully...!");
//Rename column name
String sql = "ALTER TABLE tutorials_tbl RENAME COLUMN ID TO tutorial_Id";
statement.executeUpdate(sql);
System.out.println("Name renamed successfully...!");
ResultSet resultSet = statement.executeQuery("DESCRIBE tutorials_tbl");
while (resultSet.next()) {
System.out.print(resultSet.getString(1)+ " " +resultSet.getString(2));
System.out.println();
}
connection.close();
} catch (Exception e) {
System.out.println(e);
}
}
}
输出
获得的输出如下所示 -
Connected successfully...! Name renamed successfully...! tutorial_Id int tutorial_title varchar(50) tutorial_author varchar(30)
import mysql.connector
#建立连接
connection = mysql.connector.connect(
host='localhost',
user='root',
password='password',
database='tut'
)
table_name = 'NOVELS'
old_column_name = 'PAGES'
new_column_name = 'PAGES_COUNT'
#创建游标对象
cursorObj = connection.cursor()
rename_column_query = f"ALTER TABLE {table_name} CHANGE {old_column_name} {new_column_name} INT"
cursorObj.execute(rename_column_query)
print(f"Column '{old_column_name}' is renamed to '{new_column_name}' in table '{table_name}' successfully.")
cursorObj.close()
connection.close()
输出
以下是上述代码的输出 -
Column 'tutorial_price' is renamed to 'tutorial_amount' in table 'tutorials_tbl_cloned' successfully.

