MySQL之alter语句

本文详细介绍了如何使用SQL的ALTER语句对现有表进行修改,包括添加、修改和删除列等操作,通过实际案例展示了ALTER语句的强大功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

alter可以用来对已知表进行添加,修改和删除列。
以下是使用alter语句的一些案例:

  • 增加一列
mysql> alter table t_new add address varchar(50) ;
Query OK, 0 rows affected
Records: 0  Duplicates: 0  Warnings: 0

mysql> desc t_new;
+---------+--------------+------+-----+---------+----------------+
| Field   | Type         | Null | Key | Default | Extra          |
+---------+--------------+------+-----+---------+----------------+
| id      | int(11)      | NO   | PRI | NULL    | auto_increment |
| name    | varchar(100) | YES  |     | NULL    |                |
| address | varchar(50)  | YES  |     | NULL    |                |
+---------+--------------+------+-----+---------+----------------+
3 rows in set
  • 增加一列在指定位置
mysql> alter table t_new add age int after name;

Query OK, 0 rows affected
Records: 0  Duplicates: 0  Warnings: 0

mysql> desc t_new;
+---------+--------------+------+-----+---------+----------------+
| Field   | Type         | Null | Key | Default | Extra          |
+---------+--------------+------+-----+---------+----------------+
| id      | int(11)      | NO   | PRI | NULL    | auto_increment |
| name    | varchar(100) | YES  |     | NULL    |                |
| age     | int(11)      | YES  |     | NULL    |                |
| address | varchar(50)  | YES  |     | NULL    |                |
+---------+--------------+------+-----+---------+----------------+
  • 添加一列在表的开头
mysql> alter table t_new add sex char first;
Query OK, 0 rows affected
Records: 0  Duplicates: 0  Warnings: 0

mysql> desc t_new;
+---------+--------------+------+-----+---------+----------------+
| Field   | Type         | Null | Key | Default | Extra          |
+---------+--------------+------+-----+---------+----------------+
| sex     | char(1)      | YES  |     | NULL    |                |
| id      | int(11)      | NO   | PRI | NULL    | auto_increment |
| name    | varchar(100) | YES  |     | NULL    |                |
| age     | int(11)      | YES  |     | NULL    |                |
| address | varchar(50)  | YES  |     | NULL    |                |
+---------+--------------+------+-----+---------+----------------+
5 rows in set
  • 修改列名
mysql> desc t_new;
+---------+--------------+------+-----+---------+----------------+
| Field   | Type         | Null | Key | Default | Extra          |
+---------+--------------+------+-----+---------+----------------+
| sex     | char(1)      | YES  |     | NULL    |                |
| id      | int(11)      | NO   | PRI | NULL    | auto_increment |
| name    | varchar(100) | YES  |     | NULL    |                |
| age     | int(11)      | YES  |     | NULL    |                |
| address | varchar(50)  | YES  |     | NULL    |                |
+---------+--------------+------+-----+---------+----------------+
5 rows in set

mysql> alter table t_new change name username varchar(50);
Query OK, 1 row affected
Records: 1  Duplicates: 0  Warnings: 0
mysql> desc t_new;
+----------+-------------+------+-----+---------+----------------+
| Field    | Type        | Null | Key | Default | Extra          |
+----------+-------------+------+-----+---------+----------------+
| sex      | char(1)     | YES  |     | NULL    |                |
| id       | int(11)     | NO   | PRI | NULL    | auto_increment |
| username | varchar(50) | YES  |     | NULL    |                |
| age      | int(11)     | YES  |     | NULL    |                |
| address  | varchar(50) | YES  |     | NULL    |                |
+----------+-------------+------+-----+---------+----------------+
5 rows in set
  • 修改字节长度
mysql> desc t_new;
+----------+-------------+------+-----+---------+----------------+
| Field    | Type        | Null | Key | Default | Extra          |
+----------+-------------+------+-----+---------+----------------+
| sex      | char(1)     | YES  |     | NULL    |                |
| id       | int(11)     | NO   | PRI | NULL    | auto_increment |
| username | varchar(50) | YES  |     | NULL    |                |
| age      | int(11)     | YES  |     | NULL    |                |
| address  | varchar(50) | YES  |     | NULL    |                |
+----------+-------------+------+-----+---------+----------------+
5 rows in set

mysql> alter table t_new modify address varchar(100);
Query OK, 1 row affected
Records: 1  Duplicates: 0  Warnings: 0

mysql> desc t_new;
+----------+--------------+------+-----+---------+----------------+
| Field    | Type         | Null | Key | Default | Extra          |
+----------+--------------+------+-----+---------+----------------+
| sex      | char(1)      | YES  |     | NULL    |                |
| id       | int(11)      | NO   | PRI | NULL    | auto_increment |
| username | varchar(50)  | YES  |     | NULL    |                |
| age      | int(11)      | YES  |     | NULL    |                |
| address  | varchar(100) | YES  |     | NULL    |                |
+----------+--------------+------+-----+---------+----------------+
5 rows in set
  • 删除列
mysql> desc t_new;
+----------+--------------+------+-----+---------+----------------+
| Field    | Type         | Null | Key | Default | Extra          |
+----------+--------------+------+-----+---------+----------------+
| sex      | char(1)      | YES  |     | NULL    |                |
| id       | int(11)      | NO   | PRI | NULL    | auto_increment |
| username | varchar(50)  | YES  |     | NULL    |                |
| age      | int(11)      | YES  |     | NULL    |                |
| address  | varchar(100) | YES  |     | NULL    |                |
+----------+--------------+------+-----+---------+----------------+
5 rows in set

mysql> alter table t_new drop column address;
Query OK, 0 rows affected
Records: 0  Duplicates: 0  Warnings: 0

mysql> desc t_new;
+----------+-------------+------+-----+---------+----------------+
| Field    | Type        | Null | Key | Default | Extra          |
+----------+-------------+------+-----+---------+----------------+
| sex      | char(1)     | YES  |     | NULL    |                |
| id       | int(11)     | NO   | PRI | NULL    | auto_increment |
| username | varchar(50) | YES  |     | NULL    |                |
| age      | int(11)     | YES  |     | NULL    |                |
+----------+-------------+------+-----+---------+----------------+
4 rows in set
  • 将已有列放在第一个字段
mysql> desc t_new;
+----------+-------------+------+-----+---------+----------------+
| Field    | Type        | Null | Key | Default | Extra          |
+----------+-------------+------+-----+---------+----------------+
| sex      | char(1)     | YES  |     | NULL    |                |
| id       | int(11)     | NO   | PRI | NULL    | auto_increment |
| username | varchar(50) | YES  |     | NULL    |                |
| age      | int(11)     | YES  |     | NULL    |                |
+----------+-------------+------+-----+---------+----------------+
4 rows in set
mysql> alter table t_new modify id int first;
Query OK, 1 row affected
Records: 1  Duplicates: 0  Warnings: 0

mysql> desc t_new;
+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id       | int(11)     | NO   | PRI | NULL    |       |
| sex      | char(1)     | YES  |     | NULL    |       |
| username | varchar(50) | YES  |     | NULL    |       |
| age      | int(11)     | YES  |     | NULL    |       |
+----------+-------------+------+-----+---------+-------+
4 rows in set
  • 将列的位置改变
mysql> desc t_new;
+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id       | int(11)     | NO   | PRI | NULL    |       |
| sex      | char(1)     | YES  |     | NULL    |       |
| username | varchar(50) | YES  |     | NULL    |       |
| age      | int(11)     | YES  |     | NULL    |       |
+----------+-------------+------+-----+---------+-------+
4 rows in set

mysql> alter table t_new modify sex char(1) after username;
Query OK, 0 rows affected
Records: 0  Duplicates: 0  Warnings: 0
mysql> desc t_new;
+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id       | int(11)     | NO   | PRI | NULL    |       |
| username | varchar(50) | YES  |     | NULL    |       |
| sex      | char(1)     | YES  |     | NULL    |       |
| age      | int(11)     | YES  |     | NULL    |       |
+----------+-------------+------+-----+---------+-------+
4 rows in set
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值