修改表结构:重命名数据表,添加字段

本文介绍了如何在MySQL中进行表的重命名以及字段的添加和删除。包括使用ALTER TABLE语句进行表重命名,以及一次性添加和删除一个或多个字段的方法。示例展示了具体的SQL语法。

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

重命名

  1. ALTER TABLE tbl_name RENAME [TO/AS] new_name
mysql> ALTER TABLE user11 RENAME to user10;
Query OK, 0 rows affected (0.20 sec)

mysql> SHOW CREATE TABLE user10;
+--------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table  | Create Table                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
+--------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| user10 | CREATE TABLE `user10` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `username` varchar(20) NOT NULL,
  `password` char(32) NOT NULL,
  `age` tinyint(3) unsigned DEFAULT '18',
  `addr` varchar(50) NOT NULL DEFAULT 'NY',
  `email` varchar(50) NOT NULL DEFAULT 'zhouruc16@gmail.com',
  `sex` enum('MALE','FEMALE','UNKNOWN') NOT NULL DEFAULT 'UNKNOWN',
  `salary` float(6,2) DEFAULT NULL,
  `regtime` int(10) unsigned DEFAULT NULL,
  `face` char(100) NOT NULL DEFAULT 'default.jpg',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
+--------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
  1. RENAME TABLE tbl_name1 to tbl_name2、
mysql> CREATE TABLE IF NOT EXISTS user10(
    -> id INT UNSIGNED KEY AUTO_INCREMENT,
    -> username VARCHAR(20) NOT NULL,
    -> password CHAR(32) NOT NULL,
    -> age TINYINT UNSIGNED DEFAULT 18,
    -> addr VARCHAR(50) NOT NULL DEFAULT 'NY',
    -> email VARCHAR(50) NOT NULL DEFAULT 'zhouruc16@gmail.com',
    -> sex ENUM('MALE','FEMALE','UNKNOWN') NOT NULL DEFAULT 'UNKNOWN',
    -> salary FLOAT(6,2),
    -> regtime INT UNSIGNED,
    -> face CHAR(100) NOT NULL DEFAULT 'default.jpg'
    -> );
Query OK, 0 rows affected (0.27 sec)
mysql> RENAME TABLE user10 to user11;
Query OK, 0 rows affected (0.14 sec)
mysql> SHOW CREATE TABLE user11;
+--------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table  | Create Table                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
+--------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| user11 | CREATE TABLE `user11` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `username` varchar(20) NOT NULL,
  `password` char(32) NOT NULL,
  `age` tinyint(3) unsigned DEFAULT '18',
  `addr` varchar(50) NOT NULL DEFAULT 'NY',
  `email` varchar(50) NOT NULL DEFAULT 'zhouruc16@gmail.com',
  `sex` enum('MALE','FEMALE','UNKNOWN') NOT NULL DEFAULT 'UNKNOWN',
  `salary` float(6,2) DEFAULT NULL,
  `regtime` int(10) unsigned DEFAULT NULL,
  `face` char(100) NOT NULL DEFAULT 'default.jpg',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
+--------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

删除与添加字段

  1. 添加字段
    一次添加一个字段
    ALTER TABLE tbl_name ADD 字段名称 字段类型 [完整性约束条件] [FIRST/AFTER 字段名称]:
    还是以上述表格为例子,添加身份证号card CHAR(18)并且非空和唯一, 这里我们希望他添加在id后
mysql> ALTER TABLE user10 ADD card CHAR(18) NOT NULL UNIQUE;
Query OK, 0 rows affected (1.06 sec)

一次添加多个字段
ALTER TABLE tbl_name
ADD test1,
ADD test2,
ADD test3
…;

mysql> ALTER TABLE user10
    -> ADD test1 INT after id,
    -> ADD test2 SET('A','B','C') NOT NULL FIRST,
    -> ADD test3 FLOAT(6,2) UNSIGNED;
Query OK, 0 rows affected (1.02 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> DESC user10;
+----------+---------------------------------+------+-----+---------------------+----------------+
| Field    | Type                            | Null | Key | Default             | Extra          |
+----------+---------------------------------+------+-----+---------------------+----------------+
| test2    | set('A','B','C')                | NO   |     | NULL                |                |
| id       | int(10) unsigned                | NO   | PRI | NULL                | auto_increment |
| test1    | int(11)                         | YES  |     | NULL                |                |
| username | varchar(20)                     | NO   |     | NULL                |                |
| password | char(32)                        | NO   |     | NULL                |                |
| age      | tinyint(3) unsigned             | YES  |     | 18                  |                |
| addr     | varchar(50)                     | NO   |     | NY                  |                |
| email    | varchar(50)                     | NO   |     | zhouruc16@gmail.com |                |
| sex      | enum('MALE','FEMALE','UNKNOWN') | NO   |     | UNKNOWN             |                |
| salary   | float(6,2)                      | YES  |     | NULL                |                |
| regtime  | int(10) unsigned                | YES  |     | NULL                |                |
| face     | char(100)                       | NO   |     | default.jpg         |                |
| card     | char(18)                        | NO   | UNI | NULL                |                |
| test3    | float(6,2) unsigned             | YES  |     | NULL                |                |
+----------+---------------------------------+------+-----+---------------------+----------------+
14 rows in set (0.00 sec)
  1. 删除字段
    一次删除一个字段
    ALTER TABLE tbl_name DROP 字段名称
    – 一次删除多个字段
mysql> ALTER TABLE user10 DROP test3;
Query OK, 0 rows affected (1.09 sec)
Records: 0  Duplicates: 0  Warnings: 0
mysql> DESC user10;
+----------+---------------------------------+------+-----+---------------------+----------------+
| Field    | Type                            | Null | Key | Default             | Extra          |
+----------+---------------------------------+------+-----+---------------------+----------------+
| test2    | set('A','B','C')                | NO   |     | NULL                |                |
| id       | int(10) unsigned                | NO   | PRI | NULL                | auto_increment |
| test1    | int(11)                         | YES  |     | NULL                |                |
| username | varchar(20)                     | NO   |     | NULL                |                |
| password | char(32)                        | NO   |     | NULL                |                |
| age      | tinyint(3) unsigned             | YES  |     | 18                  |                |
| addr     | varchar(50)                     | NO   |     | NY                  |                |
| email    | varchar(50)                     | NO   |     | zhouruc16@gmail.com |                |
| sex      | enum('MALE','FEMALE','UNKNOWN') | NO   |     | UNKNOWN             |                |
| salary   | float(6,2)                      | YES  |     | NULL                |                |
| regtime  | int(10) unsigned                | YES  |     | NULL                |                |
| face     | char(100)                       | NO   |     | default.jpg         |                |
| card     | char(18)                        | NO   | UNI | NULL                |                |
+----------+---------------------------------+------+-----+---------------------+----------------+

ALTER TABLE tbl_name
DROP test1,
DROP test2,
DROP test3,
…;
– 也可以同时删除和添加字段

mysql> ALTER TABLE user10
    -> DROP test1,
    -> DROP test2,
    -> ADD test5 INT NOT NULL FIRST;
Query OK, 0 rows affected (0.89 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> DESC user10;
+----------+---------------------------------+------+-----+---------------------+----------------+
| Field    | Type                            | Null | Key | Default             | Extra          |
+----------+---------------------------------+------+-----+---------------------+----------------+
| test5    | int(11)                         | NO   |     | NULL                |                |
| id       | int(10) unsigned                | NO   | PRI | NULL                | auto_increment |
| username | varchar(20)                     | NO   |     | NULL                |                |
| password | char(32)                        | NO   |     | NULL                |                |
| age      | tinyint(3) unsigned             | YES  |     | 18                  |                |
| addr     | varchar(50)                     | NO   |     | NY                  |                |
| email    | varchar(50)                     | NO   |     | zhouruc16@gmail.com |                |
| sex      | enum('MALE','FEMALE','UNKNOWN') | NO   |     | UNKNOWN             |                |
| salary   | float(6,2)                      | YES  |     | NULL                |                |
| regtime  | int(10) unsigned                | YES  |     | NULL                |                |
| face     | char(100)                       | NO   |     | default.jpg         |                |
| card     | char(18)                        | NO   | UNI | NULL                |                |
+----------+---------------------------------+------+-----+---------------------+----------------+
12 rows in set (0.00 sec)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值