
- 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://: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.