mysql中modify ,change ,rename to的作用和使用場景
在 MySQL 中,MODIFY、CHANGE 和 RENAME TO 都是 ALTER TABLE 語句的一部分,用于修改表的結(jié)構(gòu),但它們的作用和使用場景有所不同。
1.MODIFY
作用:用于修改表中現(xiàn)有列的定義,但不能修改列名。
你可以使用 MODIFY 來更改列的數(shù)據(jù)類型、長度、約束(如 NOT NULL、DEFAULT 等),但不能更改列的名稱。
語法:
ALTER TABLE table_name MODIFY column_name new_data_type [new_constraints];
示例:
-- 將 age 列的數(shù)據(jù)類型從 INT 改為 TINYINT,并允許為 NULL
ALTER TABLE users MODIFY age TINYINT NULL;
-- 修改列的默認值
ALTER TABLE users MODIFY status ENUM('active', 'inactive') DEFAULT 'active';2.CHANGE
作用:用于修改列名,同時也可以修改列的數(shù)據(jù)類型和約束。功能比 MODIFY 更強大。
CHANGE 需要指定舊列名和新列名,即使你只想修改數(shù)據(jù)類型而不改名,也必須重復(fù)列名。
語法:
ALTER TABLE table_name CHANGE old_column_name new_column_name new_data_type [new_constraints];
示例:
-- 修改列名,并改變數(shù)據(jù)類型 ALTER TABLE users CHANGE user_age age TINYINT NOT NULL; -- 只修改數(shù)據(jù)類型,不改列名(需要重復(fù)列名) ALTER TABLE users CHANGE age age SMALLINT UNSIGNED;
3.RENAME TO
作用:用于重命名整個表,而不是修改列。
注意:RENAME TO 是用于表級別的重命名,不是列。
語法:
ALTER TABLE old_table_name RENAME TO new_table_name;
或者使用 RENAME:
RENAME TABLE old_table_name TO new_table_name;
示例:
-- 將表 users 重命名為 customers ALTER TABLE users RENAME TO customers;
下面提供一個完整的 MySQL 示例,演示MODIFY、CHANGE和RENAME TO的使用。
?? 完整示例:從創(chuàng)建表到使用 MODIFY、CHANGE、RENAME TO
-- 1. 創(chuàng)建一個測試表 users
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
user_name VARCHAR(50) NOT NULL,
user_age INT,
email VARCHAR(100),
status VARCHAR(20) DEFAULT 'active'
);
-- 插入一些測試數(shù)據(jù)
INSERT INTO users (user_name, user_age, email) VALUES
('Alice', 25, 'alice@example.com'),
('Bob', 30, 'bob@example.com');? 使用MODIFY:修改列定義(不改列名)
-- 將 user_age 列的數(shù)據(jù)類型從 INT 改為 TINYINT,并設(shè)置為 NOT NULL
ALTER TABLE users MODIFY user_age TINYINT NOT NULL;
-- 修改 email 列,增加唯一約束
ALTER TABLE users MODIFY email VARCHAR(100) UNIQUE;
-- 修改 status 列,使用 ENUM 類型并保留默認值
ALTER TABLE users MODIFY status ENUM('active', 'inactive', 'suspended') DEFAULT 'active';?? 注意:MODIFY 不能修改列名。例如下面這條是錯誤的:
ALTER TABLE users MODIFY user_name username VARCHAR(50); -- ? 錯誤!
? 使用CHANGE:修改列名和/或列定義
-- 修改列名:將 user_name 改為 username,同時保持數(shù)據(jù)類型 ALTER TABLE users CHANGE user_name username VARCHAR(50) NOT NULL; -- 修改列名并改變數(shù)據(jù)類型 ALTER TABLE users CHANGE user_age age TINYINT UNSIGNED; -- 只修改數(shù)據(jù)類型,不改列名(需要重復(fù)列名) ALTER TABLE users CHANGE email email VARCHAR(150) NOT NULL;
?? CHANGE 相當于“先刪后增”列,因此即使只改類型,也要寫兩次列名。
? 使用RENAME TO:重命名整個表
-- 將表 users 重命名為 customers ALTER TABLE users RENAME TO customers;
或者使用 RENAME TABLE 語法(效果相同):
RENAME TABLE customers TO users; -- 再改回來
?? 查看最終表結(jié)構(gòu)
DESCRIBE users;
輸出結(jié)果應(yīng)類似:
| Field | Type | Null | Key | Default | Extra |
|---|---|---|---|---|---|
| id | int | NO | PRI | (auto_increment) | |
| username | varchar(50) | NO | NULL | ||
| age | tinyint unsigned | NO | NULL | ||
| varchar(150) | NO | UNI | NULL | ||
| status | enum('active','inactive','suspended') | YES | active |
總結(jié)對比
| 命令 | 作用 | 是否可改列名 | 是否可改數(shù)據(jù)類型 |
|---|---|---|---|
MODIFY | 修改列定義 | ? 不可以 | ? 可以 |
CHANGE | 修改列名和定義 | ? 可以 | ? 可以 |
RENAME TO | 重命名表 | ? 不適用 | ? 不適用 |
?? 提示:如果你只需要修改列的類型或約束,使用 MODIFY 更清晰;如果需要改列名,必須使用 CHANGE;如果要改表名,則使用 RENAME TO。
到此這篇關(guān)于mysql中modify ,change ,rename to的作用和使用場景的文章就介紹到這了,更多相關(guān)mysql modify ,change ,rename to作用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
CentOS7.3下mysql 8.0.13安裝配置方法圖文教程
這篇文章主要為大家詳細介紹了CentOS7.3下mysql 8.0.13安裝配置方法圖文教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-11-11
Mysql數(shù)據(jù)庫從5.6.28版本升到8.0.11版本部署項目時遇到的問題及解決方法
這篇文章主要介紹了Mysql數(shù)據(jù)庫從5.6.28版本升到8.0.11版本過程中遇到的問題及解決方法,解決辦法有三種,每種方法給大家介紹的都很詳細,感興趣的朋友跟隨腳本之家小編一起學(xué)習(xí)吧2018-05-05
mybatis-plus分頁傳入?yún)?shù)后sql where條件沒有l(wèi)imit分頁信息操作
這篇文章主要介紹了mybatis-plus分頁傳入?yún)?shù)后sql where條件沒有l(wèi)imit分頁信息操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-11-11
MySQL錯誤TIMESTAMP column with CURRENT_TIMESTAMP的解決方法
這篇文章主要介紹了MySQL錯誤TIMESTAMP column with CURRENT_TIMESTAMP的解決方法,需要的朋友可以參考下2014-06-06
MySQL中l(wèi)ower_case_table_names作用及使用小結(jié)
在使用DataEase連接外部數(shù)據(jù)庫時,可能會遇到啟動報錯的問題,官方文檔指出,修改數(shù)據(jù)庫配置文件中的lower_case_table_names=1參數(shù)可以解決此問題,此參數(shù)控制表名大小寫敏感性,感興趣的可以了解一下2024-09-09
MySQL安裝出現(xiàn)starting the server報錯的解決方案
如果電腦是第一次安裝MySQL,一般不會出現(xiàn)這樣的報錯,如下圖所示,本文主要介紹了MySQL安裝出現(xiàn)starting the server報錯的解決方案,感興趣的可以了解一下2024-07-07

