在mysql中,modify ,change ,rename to的作用是什么

在 MySQL 中,MODIFYCHANGERENAME TO 都是 ALTER TABLE 語句的一部分,用于修改表的結構,但它們的作用和使用場景有所不同。

1.?MODIFY

作用:用于修改表中現有列的定義,但不能修改列名

你可以使用 MODIFY 來更改列的數據類型、長度、約束(如 NOT NULLDEFAULT 等),但不能更改列的名稱。

語法

ALTER TABLE table_name MODIFY column_name new_data_type [new_constraints];

示例

-- 將 age 列的數據類型從 INT 改為 TINYINT,并允許為 NULL
ALTER TABLE users MODIFY age TINYINT NULL;-- 修改列的默認值
ALTER TABLE users MODIFY status ENUM('active', 'inactive') DEFAULT 'active';

2.?CHANGE

作用:用于修改列名,同時也可以修改列的數據類型和約束。功能比 MODIFY 更強大。

CHANGE 需要指定舊列名新列名,即使你只想修改數據類型而不改名,也必須重復列名。

語法

ALTER TABLE table_name CHANGE old_column_name new_column_name new_data_type [new_constraints];

示例

-- 修改列名,并改變數據類型
ALTER TABLE users CHANGE user_age age TINYINT NOT NULL;-- 只修改數據類型,不改列名(需要重復列名)
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 示例,演示 MODIFYCHANGERENAME TO 的使用。

🧩 完整示例:從創建表到使用 MODIFY、CHANGE、RENAME TO

-- 1. 創建一個測試表 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'
);-- 插入一些測試數據
INSERT INTO users (user_name, user_age, email) VALUES
('Alice', 25, 'alice@example.com'),
('Bob', 30, 'bob@example.com');

? 使用?MODIFY:修改列定義(不改列名)

-- 將 user_age 列的數據類型從 INT 改為 TINYINT,并設置為 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,同時保持數據類型
ALTER TABLE users CHANGE user_name username VARCHAR(50) NOT NULL;-- 修改列名并改變數據類型
ALTER TABLE users CHANGE user_age age TINYINT UNSIGNED;-- 只修改數據類型,不改列名(需要重復列名)
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; -- 再改回來

🔍 查看最終表結構

DESCRIBE users;

輸出結果應類似:

FieldTypeNullKeyDefaultExtra
idintNOPRI(auto_increment)
usernamevarchar(50)NONULL
agetinyint unsignedNONULL
emailvarchar(150)NOUNINULL
statusenum('active','inactive','suspended')YESactive

總結對比

命令作用是否可改列名是否可改數據類型
MODIFY修改列定義? 不可以? 可以
CHANGE修改列名和定義? 可以? 可以
RENAME TO重命名表? 不適用? 不適用

💡 提示:如果你只需要修改列的類型或約束,使用 MODIFY 更清晰;如果需要改列名,必須使用 CHANGE;如果要改表名,則使用 RENAME TO

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/919925.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/919925.shtml
英文地址,請注明出處:http://en.pswp.cn/news/919925.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【JVM】JVM的內存結構是怎樣的?

JVM的內存結構是Java程序運行時內存管理的核心,不同區域有明確的職責。 一、整體劃分 包括兩大部分,分為線程私有區域(隨線程創建/銷毀,無需垃圾回收)和線程共享區域(所有線程共用,需要垃圾回收管理)。 線程私有區域:程…

青少年軟件編程(python五級)等級考試試卷-客觀題(2023年12月)

更多內容和歷年真題請查看網站:【試卷中心 -----> 電子學會 ----> 機器人技術 ----> 五級】 網站鏈接 青少年軟件編程歷年真題模擬題實時更新 青少年軟件編程(python五級)等級考試試卷-客觀題(2023年12月&#xff0…

網絡編程-創建TCP協議服務器

int socket(int domain, int type, int protocol);頭文件&#xff1a; #include <sys/socket.h>#include <netinet/in.h> #include <netinet/ip.h>int skt_tcpfd;int domain;skt_tcpfdsocket(AF_INET,SOCK_STREAM,0);int bind(int sockfd, const struct soc…

ruoyi框架角色分配用戶

分配用戶&#xff0c;不要將當前正在登錄的用戶綁定。否則&#xff0c;在加入當前用戶之后&#xff0c;取消或者添加其他用戶時會被注銷當前登錄。

Java Stream常見函數與應用案例

1. Java Stream核心概念與基礎函數 1.1 Stream API的設計哲學與核心特性 Java Stream API的設計哲學源于函數式編程范式&#xff0c;其核心特性體現在數據處理模式的轉變上。與傳統集合操作相比&#xff0c;Stream API采用聲明式編程風格&#xff0c;支持鏈式調用&#xff0c;顯…

【Canvas與徽章】中國制造金色玻璃光徽章

【成圖】【代碼】<!DOCTYPE html> <html lang"utf-8"> <meta http-equiv"Content-Type" content"text/html; charsetutf-8"/> <head><title>中國制造金色玻璃光徽章 Draft1</title><style type"tex…

終結系統裸奔:Debian老舊版本安全加固終極指南

核心警示:Debian 8與10已結束官方支持,暴露于0day漏洞風險中。本文提供的加固方案僅為遷移前的臨時防護措施,非長久之計。 一、老舊Debian系統的致命隱患 支持狀態: Debian 8(Jessie):2018年終止安全更新 Debian 10(Buster):2024年7月結束主流支持 風險清單: 無補…

Ape.Volo項目源碼學習(1:源碼下載及運行)

Ape.Volo項目是基于 .Net 8 、SqlSugar、Vue2.x、RBAC、前后端分離開箱則用的中后臺快速開發框架&#xff0c;其使用Async/Await異步編程&#xff0c;支持CodeFirst模式、RabbitMQ/RedisMQ消息隊列、CORS 跨域配置、數據庫操作&#xff08;讀寫分離、多庫、分表&#xff09;、支…

2-4.Python 編碼基礎 - 流程控制(判斷語句、循環語句、break 語句與 continue 語句)

一、判斷語句 1、if 語句 &#xff08;1&#xff09;基本格式 if 【判斷條件】:【滿足條件時執行的代碼塊】&#xff08;2&#xff09;演示 number 10if number > 0:print("這個數是正數")# 輸出結果這個數是正數2、if - else 語句 &#xff08;1&#xff09;基本…

大模型自我進化框架SE-Agent:開啟軟件工程自動化新時代

一、引言&#xff1a;當大模型學會“自我進化” 在軟件開發領域&#xff0c;傳統模式下人類工程師面對復雜任務時&#xff0c;往往需要經歷反復調試、多輪迭代才能產出高質量代碼。而隨著大語言模型&#xff08;LLM&#xff09;的興起&#xff0c;一種名為**SE-Agent&#xff…

UE官方文檔學習 C++ TAarry 查詢(四)多種查詢方式

一.IndexofByKey 返回索引通過值&#xff0c;返回來查找鍵。二IndexOfByPredicate通過定義二元謂詞&#xff0c;來判定是否有符合謂詞判定的元素。符合條件True的&#xff0c;才返回Index。這里所謂Lamda,函數就是 把函數當作參數輸入&#xff0c;里面的參數值傳遞前加個[]。這…

根據Wireshark捕獲數據包時間和長度繪制電腦發射信號波形

下一期&#xff1a; 根據Wireshark捕獲數據包時間和長度繪制路由器發送給電腦數據的信號波形-CSDN博客 一、Wireshark采集數據 數據格式&#xff1a; 在我的另一篇博客中詳細介紹了怎么導出數據&#xff1a; Wireshark導出數據包時間和長度-CSDN博客 通過MATLAB加載數據&a…

Suno API 接入指南:快速上手與高效集成

隨著 AI 技術的發展&#xff0c;音樂生成已經逐漸成為開發者和創作者探索的新方向。Suno API 提供了一套簡潔的接口&#xff0c;讓我們能夠通過代碼快速生成音樂、歌詞&#xff0c;甚至旋律。本文將帶你從零開始&#xff0c;完成 Suno API 的接入與調用&#xff0c;并分享一些高…

React Hooks原理深潛:從「黑魔法」到「可觀測」的蛻變之旅

文章目錄【技術棧深潛計劃】React Hooks原理深潛&#xff1a;從「黑魔法」到「可觀測」的蛻變之旅一、引言&#xff1a;為什么我們需要“深潛”Hooks&#xff1f;二、基石&#xff1a;沒有JavaScript閉包&#xff0c;就沒有Hooks2.1 閉包的精簡回顧2.2 Hooks與閉包的關聯三、核…

MySql知識梳理之DDL語句

例子&#xff1a;為emp表增加一個新的字段”昵稱”為nickname&#xff0c;類型為varchar(20)alter table emp add nickname varchar(20) comment 昵稱;例子&#xff1a;將emp表的nickname字段修改為username&#xff0c;類型為varchar(30)ALTER TABLE emp CHANGE nickname us…

Games 101 第四講 Transformation Cont(視圖變換和投影變換)

三維變換 三種變換 下面分別是放縮&#xff0c;旋轉&#xff0c;平移在旋轉當中&#xff0c;繞著y軸旋轉矩陣的順序不一樣&#xff0c;因為繞著y軸轉在右手坐標系中 &#xff0c;z是第一軸&#xff0c;x是第二軸&#xff0c;而負號會加在第一軸上&#xff0c;因此負號在下面。 …

rust語言 (1.88) egui (0.32.1) 學習筆記(逐行注釋)(一)基本代碼

Cargo.toml [dependencies] eframe "0.32.1" egui "0.32.1"?啟動函數一&#xff1a;run_simple_native 簡化版入口函數&#xff0c;適用于快速原型開發僅需提供應用標題和 UI 渲染閉包即可運行典型使用場景&#xff1a;單面板工具、簡單演示程序 // 導入…

離線優先與沖突解決:ABP vNext + PWA 的邊緣同步

&#x1f6f0;? 離線優先與沖突解決&#xff1a;ABP vNext PWA 的邊緣同步 &#x1f4da; 目錄&#x1f6f0;? 離線優先與沖突解決&#xff1a;ABP vNext PWA 的邊緣同步0. 環境 &#x1f680;1. 場景與目標&#xff08;痛點→指標&#xff09;&#x1f3af;2. 架構與時序 …

Slither 審計自己寫的智能合約

作為區塊鏈開發者&#xff0c;寫完合約之后最重要的一步就是 檢查代碼有沒有漏洞。一旦部署到鏈上出了問題&#xff0c;不僅修復麻煩&#xff0c;還可能直接造成資金損失。 Slither 是一款非常好用的自動化審計工具&#xff0c;可以幫你快速找出大部分常見風險。這篇文章專門講…

Python萬里長征6(非教程)pandas篩選數據三基礎、三核心、三高級

文章目錄一、背景二、布爾索引2.1 總結三、進階核心用法&#xff08;實用高效&#xff09;3.1 多條件組合3.2 字符串表達式&#xff08;類似SQL&#xff09;3.3 針對字符串的正則匹配四、高級方法&#xff08;依賴基礎&#xff09;4.1 函數應用&#xff08;如apply()或lambda&a…