ALTER命令

简介: ALTER命令

说明:


当需要修改数据表名或者修改数据表字段时,就需要使用到  ALTER  命令。


1、建表

DROP TABLE IF EXISTS `text_ALTER`;

CREATE TABLE `text_ALTER` (

 `id` int ,

   `price`INT

) ENGINE=InnoDB DEFAULT CHARSET=utf8;


2、演示

2.1、删除表字段

使用 ALTER 命令及 DROP 子句来删除以上创建表好的 price 字段

ALTER TABLE text_alter DROP price;

2.2、添加表字段

如果数据表中只剩余一个字段则无法使用DROP来删除字段。

MySQL 中使用 ADD 子句来向数据表中添加列,如下实例在表 text_alter 中添加 price 字段,并定义数据类型

ALTER TABLE text_alter ADD price INT;

执行以上命令后,price  字段会自动添加到数据表字段的末尾。


如果你需要指定新增字段的位置,可以使用MySQL提供的关键字 FIRST (设定位第一列), AFTER 字段名(设定位于某个字段之后)。

尝试以下 ALTER TABLE 语句, 在执行成功后,使用 SHOW COLUMNS 查看表结构的变化

ALTER TABLE text_alter DROP price;

ALTER TABLE text_alter ADD price INT FIRST;

ALTER TABLE text_alter DROP price;

ALTER TABLE text_alter ADD price INT AFTER id;

FIRST 和 AFTER 关键字可用于 ADD 与 MODIFY 子句,所以如果你想重置数据表字段的位置就需要先使用 DROP 删除字段然后使用 ADD 来添加字段并设置位置。


2.3、修改表字段

如果需要修改字段类型及名称, 你可以在ALTER命令中使用 MODIFY 或 CHANGE 子句 。

例如,把字段 price 的类型从  INT 改为 CHAR(10),可以执行以下命令

ALTER TABLE text_alter MODIFY price CHAR(10);

2.4、修改字段类型及名称

使用 CHANGE 子句, 语法有很大的不同。 在 CHANGE 关键字之后,紧跟着的是你要修改的字段名,然后指定新字段名及类型。尝试如下实例

ALTER TABLE text_alter CHANGE id  ids INT;

ALTER TABLE text_alter CHANGE price prices INT;

显示 text_alter  表所有列

mysql>  SHOW COLUMNS FROM text_ALTER; #显示所有列

+--------+------+------+-----+---------+-------+

| Field  | Type | Null | Key | Default | Extra |

+--------+------+------+-----+---------+-------+

| ids    | int  | YES  |     | NULL    |       |

| prices | int  | YES  |     | NULL    |       |

+--------+------+------+-----+---------+-------+

2 rows in set (0.00 sec)

2.5、ALTER TABLE 对 Null 值和默认值的影响

当你修改字段时,你可以指定是否包含值或者是否设置默认值。

以下实例,指定字段 price 为 NOT NULL 且默认值为100 。

ALTER TABLE text_alter  MODIFY prices INT NOT NULL DEFAULT 100;

如果你不设置默认值,MySQL会自动设置该字段默认为 NULL。


修改字段默认值


你可以使用 ALTER 来修改字段的默认值,实例如下

ALTER TABLE text_alter ALTER prices SET DEFAULT 1000;

查看列

SHOW COLUMNS FROM text_alter;



删除字段默认值


也可以使用 ALTER 命令及 DROP子句来删除字段的默认值

ALTER TABLE text_alter ALTER prices DROP DEFAULT;



修改数据表类型


修改数据表类型,可以使用 ALTER 命令及 TYPE 子句来完成。尝试以下实例,我们将表 text_alter的类型修改为 MYISAM :


注意:查看数据表类型可以使用 SHOW TABLE STATUS 语句。


ALTER TABLE text_alter ENGINE = MYISAM;

SHOW TABLE STATUS LIKE 'text_alter'\G



修改表名


如果需要修改数据表的名称,可以在 ALTER TABLE 语句中使用 RENAME 子句来实现。

尝试以下实例将数据表 text_alter 重命名为 text_alter_update

ALTER TABLE text_alter RENAME TO text_alter_update;

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
机器学习/深度学习 算法 机器人
多代理强化学习综述:原理、算法与挑战
多代理强化学习是强化学习的一个子领域,专注于研究在共享环境中共存的多个学习代理的行为。每个代理都受其个体奖励驱动,采取行动以推进自身利益;在某些环境中,这些利益可能与其他代理的利益相冲突,从而产生复杂的群体动态。
846 5
|
5月前
|
Java 区块链 Maven
关于引入maven项目后出现‘parent.relativePath’ of POM错误时的解决方法
关于引入maven项目后出现‘parent.relativePath’ of POM错误时的解决方法
519 3
|
安全 关系型数据库 MySQL
mysql 安装插件 validate_password
mysql 安装插件 validate_password
939 0
|
SQL 存储 数据库
慢SQL对数据库写入性能的影响及优化技巧
在数据库管理系统中,慢SQL(即执行缓慢的SQL语句)不仅会影响查询性能,还可能对数据库的写入性能产生显著的不利影响
|
JavaScript 前端开发 API
JavaScript基础-事件监听与处理
【6月更文挑战第11天】本文介绍了JavaScript事件驱动编程的核心,包括事件流(捕获、目标、冒泡阶段)和监听方法(DOM Level 0、addEventListener/removeEventListener)。讨论了常见问题和易错点,如内存泄漏、事件委托和阻止默认行为的混淆,并提供了解决策略。通过代码示例展示了事件绑定、事件委托和阻止默认行为的用法,强调理解事件处理机制对于编写高效交互式Web应用的重要性。
911 6
|
SQL 分布式计算 Hadoop
Hive的安装与配置——第2关:Hive Shell入门基础命令
Hive的安装与配置——第2关:Hive Shell入门基础命令
1845 0
Hive的安装与配置——第2关:Hive Shell入门基础命令
|
SQL JSON 关系型数据库
MYSQL--JSON_OBJECT 和 JSON_ARRAYAGG
MYSQL--JSON_OBJECT 和 JSON_ARRAYAGG
627 0
|
Kubernetes 持续交付 开发者
使用 Docker 和 Kubernetes 实现持续集成和持续部署(CI/CD)
使用 Docker 和 Kubernetes 实现持续集成和持续部署,可以为开发团队带来更高效、稳定的交付流程。这种自动化的部署方式能够显著提高交付速度、降低发布风险,并为应用的扩展和管理提供了强大的工具。然而,构建一个完善的 CI/CD 环境需要根据团队的需求和实际情况进行调整和优化。
2583 1
使用 Docker 和 Kubernetes 实现持续集成和持续部署(CI/CD)
|
Kubernetes Linux Docker
如何保存 / 同步多架构容器 Docker 镜像
如何保存 / 同步多架构容器 Docker 镜像
|
机器学习/深度学习 人工智能 自然语言处理
phind——无需注册专为开发者而生的 AI 搜索引擎
phind 是一个为开发人员设计的 AI 搜索引擎,可以帮助工程师更快地找到他们所需的信息
2978 1