- MySQL 基础
- MySQL - 首页
- MySQL - 简介
- MySQL - 特性
- MySQL - 版本
- MySQL - 变量
- MySQL - 安装
- MySQL - 管理
- MySQL - PHP 语法
- MySQL - Node.js 语法
- MySQL - Java 语法
- MySQL - Python 语法
- MySQL - 连接
- MySQL - Workbench
- MySQL 数据库
- MySQL - 创建数据库
- MySQL - 删除数据库
- MySQL - 选择数据库
- MySQL - 显示数据库
- MySQL - 复制数据库
- MySQL - 数据库导出
- MySQL - 数据库导入
- MySQL - 数据库信息
- MySQL 用户
- MySQL - 创建用户
- MySQL - 删除用户
- MySQL - 显示用户
- MySQL - 修改密码
- MySQL - 授予权限
- MySQL - 显示权限
- MySQL - 收回权限
- MySQL - 锁定用户帐户
- MySQL - 解锁用户帐户
- MySQL 表
- MySQL - 创建表
- MySQL - 显示表
- MySQL - 修改表
- MySQL - 重命名表
- MySQL - 克隆表
- MySQL - 清空表
- MySQL - 临时表
- MySQL - 修复表
- MySQL - 描述表
- MySQL - 添加/删除列
- MySQL - 显示列
- MySQL - 重命名列
- MySQL - 表锁定
- MySQL - 删除表
- MySQL - 派生表
- MySQL 查询
- MySQL - 查询
- MySQL - 约束
- MySQL - INSERT 查询
- MySQL - SELECT 查询
- MySQL - UPDATE 查询
- MySQL - DELETE 查询
- MySQL - REPLACE 查询
- MySQL - INSERT IGNORE
- MySQL - INSERT ON DUPLICATE KEY UPDATE
- MySQL - INSERT INTO SELECT
- MySQL 运算符和子句
- MySQL - WHERE 子句
- MySQL - LIMIT 子句
- MySQL - DISTINCT 子句
- MySQL - ORDER BY 子句
- MySQL - GROUP BY 子句
- MySQL - HAVING 子句
- MySQL - AND 运算符
- MySQL - OR 运算符
- MySQL - LIKE 运算符
- MySQL - IN 运算符
- MySQL - ANY 运算符
- MySQL - EXISTS 运算符
- MySQL - NOT 运算符
- MySQL - 不等于运算符
- MySQL - IS NULL 运算符
- MySQL - IS NOT NULL 运算符
- MySQL - BETWEEN 运算符
- MySQL - UNION 运算符
- MySQL - UNION vs UNION ALL
- MySQL - MINUS 运算符
- MySQL - INTERSECT 运算符
- MySQL - INTERVAL 运算符
- MySQL 连接
- MySQL - 使用连接
- MySQL - INNER JOIN
- MySQL - LEFT JOIN
- MySQL - RIGHT JOIN
- MySQL - CROSS JOIN
- MySQL - FULL JOIN
- MySQL - 自连接
- MySQL - DELETE JOIN
- MySQL - UPDATE JOIN
- MySQL - UNION vs JOIN
- MySQL 触发器
- MySQL - 触发器
- MySQL - 创建触发器
- MySQL - 显示触发器
- MySQL - 删除触发器
- MySQL - BEFORE INSERT 触发器
- MySQL - AFTER INSERT 触发器
- MySQL - BEFORE UPDATE 触发器
- MySQL - AFTER UPDATE 触发器
- MySQL - BEFORE DELETE 触发器
- MySQL - AFTER DELETE 触发器
- MySQL 数据类型
- MySQL - 数据类型
- MySQL - VARCHAR
- MySQL - BOOLEAN
- MySQL - ENUM
- MySQL - DECIMAL
- MySQL - INT
- MySQL - FLOAT
- MySQL - BIT
- MySQL - TINYINT
- MySQL - BLOB
- MySQL - SET
- MySQL 正则表达式
- MySQL - 正则表达式
- MySQL - RLIKE 运算符
- MySQL - NOT LIKE 运算符
- MySQL - NOT REGEXP 运算符
- MySQL - regexp_instr() 函数
- MySQL - regexp_like() 函数
- MySQL - regexp_replace() 函数
- MySQL - regexp_substr() 函数
- MySQL 函数和运算符
- MySQL - 日期和时间函数
- MySQL - 算术运算符
- MySQL - 数字函数
- MySQL - 字符串函数
- MySQL - 聚合函数
- MySQL 其他概念
- MySQL - NULL 值
- MySQL - 事务
- MySQL - 使用序列
- MySQL - 处理重复项
- MySQL - SQL 注入
- MySQL - 子查询
- MySQL - 注释
- MySQL - 检查约束
- MySQL - 存储引擎
- MySQL - 将表导出到 CSV 文件
- MySQL - 将 CSV 文件导入数据库
- MySQL - UUID
- MySQL - 公共表表达式
- MySQL - ON DELETE CASCADE
- MySQL - Upsert
- MySQL - 水平分区
- MySQL - 垂直分区
- MySQL - 游标
- MySQL - 存储函数
- MySQL - SIGNAL
- MySQL - RESIGNAL
- MySQL - 字符集
- MySQL - 排序规则
- MySQL - 通配符
- MySQL - 别名
- MySQL - ROLLUP
- MySQL - 今日日期
- MySQL - 字面量
- MySQL - 存储过程
- MySQL - EXPLAIN
- MySQL - JSON
- MySQL - 标准差
- MySQL - 查找重复记录
- MySQL - 删除重复记录
- MySQL - 选择随机记录
- MySQL - SHOW PROCESSLIST
- MySQL - 更改列类型
- MySQL - 重置自动递增
- MySQL - Coalesce() 函数
- MySQL 有用资源
- MySQL - 有用函数
- MySQL - 语句参考
- MySQL - 快速指南
- MySQL - 有用资源
- MySQL - 讨论
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 |
使用客户端程序重命名表的列
除了使用 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://127.0.0.1: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.