Mysql基础指令:alter
发布时间: 2024-04-30 15:59:49 阅读量: 90 订阅数: 88
![Mysql基础指令:alter](https://img-blog.csdnimg.cn/2021090822281670.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA6aOO56KO5bOw,size_20,color_FFFFFF,t_70,g_se,x_16)
# 1. MySQL ALTER 命令概述**
ALTER 命令是 MySQL 中用于修改数据库对象(如表、数据库和索引)的强大工具。它允许您在不丢失数据的情况下对现有对象进行各种更改。ALTER 命令的语法通常遵循以下格式:
```
ALTER [对象类型] [对象名称] [修改操作]
```
其中,`[对象类型]` 可以是 `TABLE`、`DATABASE` 或 `INDEX`,`[对象名称]` 是要修改的对象的名称,`[修改操作]` 指定要执行的特定修改。
# 2. ALTER 命令的语法和选项
**2.1 ALTER TABLE 语句**
ALTER TABLE 语句用于修改表的结构,包括添加、修改和删除列。其语法如下:
```
ALTER TABLE table_name
ALTER_SPECIFICATION
```
其中,`table_name` 为要修改的表名,`ALTER_SPECIFICATION` 为要执行的修改操作。
### 2.1.1 添加列
添加列的语法如下:
```
ALTER TABLE table_name ADD column_name data_type [DEFAULT default_value] [NOT NULL] [AUTO_INCREMENT]
```
其中:
* `column_name` 为要添加的新列的名称
* `data_type` 为新列的数据类型
* `DEFAULT default_value` 为新列的默认值,可选
* `NOT NULL` 约束新列不能为空,可选
* `AUTO_INCREMENT` 约束新列为自增列,可选
**示例:**
```
ALTER TABLE employees ADD salary DECIMAL(10, 2) DEFAULT 0 NOT NULL;
```
此语句在 `employees` 表中添加了一个名为 `salary` 的新列,其数据类型为 `DECIMAL(10, 2)`,默认值为 `0`,并且不能为空。
### 2.1.2 修改列
修改列的语法如下:
```
ALTER TABLE table_name MODIFY column_name data_type [DEFAULT default_value] [NOT NULL]
```
其中:
* `column_name` 为要修改的列的名称
* `data_type` 为修改后的列的数据类型
* `DEFAULT default_value` 为修改后的列的默认值,可选
* `NOT NULL` 约束修改后的列不能为空,可选
**示例:**
```
ALTER TABLE employees MODIFY salary DECIMAL(10, 3) DEFAULT 0.00 NOT NULL;
```
此语句将 `employees` 表中的 `salary` 列修改为 `DECIMAL(10, 3)` 数据类型,默认值为 `0.00`,并且不能为空。
### 2.1.3 删除列
删除列的语法如下:
```
ALTER TABLE table_name DROP COLUMN column_name
```
其中,`column_name` 为要删除的列的名称。
**示例:**
```
ALTER TABLE employees DROP COLUMN address;
```
此语句将从 `employees` 表中删除 `address` 列。
**2.2 ALTER DATABASE 语句**
ALTER DATABASE 语句用于修改数据库的属性,包括数据库名称、字符集和排序规则。其语法如下:
```
ALTER DATABASE database_name
ALTER_SPECIFICATION
```
其中,`database_name` 为要修改的数据库名称,`ALTER_SPECIFICATION` 为要执行的修改操作。
### 2.2.1 修改数据库名称
修改数据库名称的语法如下:
```
ALTER DATABASE database_name RENAME TO new_database_name;
```
其中,`database_name` 为要修改的数据库名称,`new_database_name` 为修改后的数据库名称。
**示例:**
```
ALTER DATABASE my_database RENAME TO new_database;
```
此语句将 `my_database` 数据库重命名为 `new_database`。
### 2.2.2 修改字符集和排序规则
修改字符集和排序规则的语法如下:
```
ALTER DATABASE database_name
CHARACTER SET charset_name
COLLATE collation_name;
```
其中:
* `database_name` 为要修改的数据库名称
* `charset_name` 为要修改的字符集名称
* `collation_name` 为要修改的排序规则名称
**示例:**
```
ALTER DATABASE my_database
CHARACTER SET utf8
COLLATE utf8_general_ci;
```
此语句将 `my_database` 数据库的字符集修改为 `utf8`,排序规则修改为 `utf8_general_ci`。
**2.3 ALTER INDEX 语句**
ALTER INDEX 语句用于修改索引的属性,包括添加、修改和删除索引。其语法如下:
```
ALTER TABLE table_name
ALTER INDEX index_name
ALTER_SPECIFICATION
```
其中:
* `table_name` 为索引所在表的名称
* `index_name` 为要修改的索引名称
* `ALTER_SPECIFICATION` 为要执行的修改操作。
### 2.3.1 添加索引
添加索引的语法如下:
```
ALTER TABLE table_name ADD INDEX index_name (column_name)
```
其中:
* `table_name` 为索引所在表的名称
* `index_name` 为要添加的索引名称
* `column_name` 为要创建索引的列名称
**示例:**
```
ALTER TAB
```
0
0