MySQL 修改和删除数据表

1. 修改数据表

  修改表指的是修改数据库中已经存在的数据表的结构。MySQL使用ALTER TABLE语句修改表、常用的修改表的操作有:修改表名、修改字段数据类型或字段名、增加和删除字段、修改字段的排列位置,更改表的存储引擎,删除表的外键约束等。
MySQL是通过ALTER TABLE语句进行表结构的修改

修改表名
ALTER TABLE<旧表名>RENAME[TO]<新表名>

其中TO为可选参数,使用与否均不影响结果

修改字段的数据类型

  修改字段的数据类型,就是把字段的数据类型转换成另一种数据类型:

ALTER TABLE<表名>MODIFY<字段名><数据类型>
  • 表名:指要修改数据类型的字段所在表的名称;
  • 字段名:指需要修改的字段;
  • 数据类型:指修改后字段的新数据类型
修改字段名
   ALTER TABLE <表名> CHANGE<旧字段名><新字段名><新数据类型>;
  • 旧字段名:指修改前的字段名
  • 新字段名:指修改后的字段名
  • 新数据类型:指修改后的数据类型,如果不需要修改字段的数据类型,可以将数据类型设置成原来的,但不能省略,必须声明

    CHANGE也可以只修改数据类型,实现和MODIFY同样的效果,但是由于语法的限制,新旧字段名都不能省略。


由于不同类型的数据在机器中存储的方式和长度并不相同,修改数据类型可能会影响到已有的数据。
添加字段
  随着业务需求的变化,可能需要在已经存在的表中添加新的字段。
ALTER TABLE <表名> ADD <新字段名> <数据类型>
[约束条件][FIRST|AFTER 已存在的字段名]
  • 新字段名:指需要添加的字段的名称
  • FIRST:可选参数,将新添加的字段设置为表的第一个字段
  • AFTER :可选参数,将新添加的字段添加到指定的“已存在字段名”的后面
    如果不指定FIRST或AFTER这两个参数,则默认将新添加的字段设置为数据表的最后列
删除字段
删除字段是将数据表中的某个字段从表中移除
ALTER TABLE <表名> DROP <字段名>
  • 字段名:指需要从表中删除的字段的名称
修改字段的排列位置

  对于一个数据表来说,在创建的时候,字段在表中排列顺序就已经确定了,但表的结构并不是完全不可以改变的,可以通过ALTER TABLE来改变表中字段的相对位置。

ALTER TABLE<表名>MODIFY<字段1><数据类型>FIRST|AFTER<字段2>
  • 字段1:指要修改位置的字段
  • 数据类型:指字段1 的的数据类型(可以更改其数据类型,但由于我们的需求是更改位置,所以应该不做改变)
  • AFTER:将字段1 插入到字段2 的后面
更改表的存储引擎

关于数据引擎的介绍请参考另一篇博文MySQL数据库的基本操作

ALTER TABLE <表名>ENGINE= <更改后的存储引擎名>

在修改之前,可以先使用SHOW CREATE TABLE查看表当前的存储引擎。

删除表的外键约束

  对于数据库中定义的外键,如果不在需要,可以将其删除。外键删除之后,主从表间关系就会解除。

ALTER TABLE <表名> DROP FOREIGN KEY<外键约束名>
  • 外键约束名:指在定于表时CONSTRAINT关键字后面的参数。

2. 删除数据表

  删除数据表就是讲数据库中已经存在的表从数据库中删除。在删除表的同时,表的定义和所有的数据均会被删除。在删除操作前,最好对表中的数据做个备份,以免造成无法挽回的后果。

(1)删除没有被关联的表

  使用DROP TABLE可以一次删除一个或多个没有被其他表关联的数据表。

DROP TABLE[IF EXISTS] 表1,表2,... 表n
  • 表n:指要删除的表的名称,后面可以同时删除多个表,只需将要删除的表名依次写在后面,相互之间用逗号隔开即可。
  • 参数 IF EXIST:用于在删除前判断删除的表是否存在,加上该参数后,再删除表的时候,如果表不存在,SQL语句仍然可以顺利执行,但是会发出警告。
(2)删除被其他表关联的主表

  数据表之间存在外键关联的情况下,父表不能被直接删除,因为那样会破坏表的参照完整性。如果必要删除,可以先删除与它关联的子表,再删除父表,只是这样同时删除了两个表中的数据。所以,可以先删除相关联的外键约束,然后就可以执行删除操作。

先删除外键约束
ALTER TABLE <表名> DROP FOREIGN KEY<外键约束名>
再删除表
DROP TABLE <表名>
  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值