在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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈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…