MySQL - 重命名列



MySQL 中的 ALTER TABLE 语句可用于更改表结构。例如,我们可以使用此语句添加、删除或重命名列等。

以下是可与 ALTER TABLE 语句一起使用以重命名表的列的两种选项

  • RENAME COLUMN
  • CHANGE COLUMN

注意:重命名表的列需要 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 表中有三列:

字段 类型 NULL 默认值 额外
ID int NULL
名称 varchar(20) NULL
年龄 int 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。

字段 类型 NULL 默认值 额外
cust_id int NULL
名称 varchar(20) NULL
年龄 int 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;

从输出表中我们可以看到,上述列已成功重命名。

字段 类型 NULL 默认值 额外
cust_id int NULL
cust_name varchar(20) NULL
cust_age int NULL

使用 CHANGE COLUMN

在 MySQL 中,我们可以使用 **ALTER TABLE ... CHANGE COLUMN** 命令更改一个或多个列的名称及其数据类型。

语法

以下是 MySQL 中 ALTER TABLE ... CHANGE 命令的语法:

ALTER TABLE table_name CHANGE COLUMN old_column_name new_column_name Data Type;

示例

考虑先前更新的 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;

列的名称和数据类型已成功更改。

字段 类型 NULL 默认值 额外
ID varchar(10) NULL
cust_name varchar(20) NULL
cust_age int 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;

从输出表中我们可以看到,上述列的名称和数据类型已成功更改。

字段 类型 NULL 默认值 额外
ID varchar(10) NULL
名称 decimal(18,2) NULL
年龄 varchar(20) NULL

Learn MySQL in-depth with real-world projects through our MySQL certification course. Enroll and become a certified expert to boost your career.

使用客户端程序重命名表的列

除了使用 MySQL 查询在 MySQL 数据库中重命名表的列之外,我们还可以使用客户端程序对表执行 ALTER TABLE 操作。

语法

以下是各种编程语言中重命名 MySQL 表列的语法:

要在 MySQL 数据库中通过 PHP 程序重命名表的列,我们需要使用 **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" }); //Connecting to 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); //Records before renaming sql = "DESCRIBE STUDENTS;" con.query(sql, function(err, result){ if (err) throw err console.log(result); console.log("--------------------------"); }); //Renaming column ID to "stud_id" sql = "ALTER TABLE STUDENTS RENAME COLUMN ID TO stud_id;" con.query(sql); //Records after renaming 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 #establishing the connection connection = mysql.connector.connect( host='localhost', user='root', password='password', database='tut' ) table_name = 'NOVELS' old_column_name = 'PAGES' new_column_name = 'PAGES_COUNT' #Creating a cursor object 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.
广告