目录
[1. ALTER 搭配 ADD 向表中添加字段](#1. ALTER 搭配 ADD 向表中添加字段)
[2. ALTER 搭配 MODIFY 修改表中的字段长度,默认值,数据类型](#2. ALTER 搭配 MODIFY 修改表中的字段长度,默认值,数据类型)
[3. ALTER 搭配 CHANGER 修改表中字段的名称](#3. ALTER 搭配 CHANGER 修改表中字段的名称)
[4. ALTER,RENAME 都可以修改表的名称](#4. ALTER,RENAME 都可以修改表的名称)
[5. DROP 和 TRUNCATE 的区别](#5. DROP 和 TRUNCATE 的区别)
1. ALTER 搭配 ADD 向表中添加字段
ALTER 是数据库提供的一个可以用来修改表结构的字段,我们可以利用该字段再配合其他关键字对表中的字段及其字段属性做增删改操作;
sql
# 向某个表中添加字段并确定字段类型与长度
ALTER TABLE 表名 ADD 字段名 字段类型(长度) 指定位置(不写则默认加之最后);
USE patent;
# 举例1:将字段 price 添加至 t_patent 表的最后
ALTER TABLE t_patent ADD parice DOUBLE(10,2);
# 举例2:将字段 price 添加至 t_patent 表的第一个字段处
ALTER TABLE t_patent ADD parice DOUBLE(10,2) FIRST;
# 举例3:将字段price添加至t_patent表patent_name字段的后面
ALTER TABLE t_patent ADD parice DOUBLE(10,2) AFTER patent_name;
2. ALTER 搭配 MODIFY 修改表中的字段长度,默认值,数据类型
首先我们要知道一点,**一旦数据库创建,我们基本不会再去修改字段的数据类型,**特别是数据库中已经存放有数据的时候,更不会去修改,因为代价太大,业务代码很可能收到侵入。
所以我们通常会使用 ALTER 和 MODIFY 字段搭配一起修改表中字段的长度和默认值。例如我们插入一条数据,它的某个字段长度超过了表中定义的长度,那么我们就需要将表中字段的长度变大,不能说数据舍弃不要了,这是不合理的。
sql
# 修改语法格式
ALTER TABLE 表名
MODIFY 字段名 字段类型(要修改为的长度) DEFAULT '要修改为的默认值';
# 举例语句
# 将 t_patent 表中 patent_name 字段长度改为30,默认值改为 aaa,不想添加默认值不写即可
ALTER TABLE t_patent
MODIFY patent_name VARCHAR(30) DEFAULT 'aaa';
3. ALTER 搭配 CHANGER 修改表中字段的名称
从作用上来讲,你可以简单的理解为 CHANGER 是 MODIY 的增强版,MODIFY 可以修改字段的长度和默认值,CHANGER 在 MODIFY 的基础上还可以修改字段的名称,即重命名字段。
sql
# 语法格式如下
ALTER TABLE 表名
CHANGE 原字段名称,要修改后的字段名称 字段类型(要修改的长度) DEFAULT '要修改的默认值'
# 举例:将 t_patent 表中的 modified_user 字段
# 改名为 modified_username 长度也改为40,默认值也改为张三
ALTER TABLE t_patent
CHANGE modified_user modified_username VARCHAR(40) DEFAULT '张三';
4. ALTER,RENAME 都可以修改表的名称
通过 RENAME 字段我们可以修改表的名称,语法也较为简单;
但如果使用 ALTER 则需要搭配 RENAME 一起使用
代码如下,个人建议采用第一种 RENAME 的方式,好记简单,第二种则是ALTER RENAME 一起使用,语法还变麻烦了。
sql
# RENAME修改表的名称语法格式
RENAME TABLE 原表名 TO 新表名;
# 举例演示,将表 t_patent 改名为 patent6
RENAME TABLE t_patent TO patent6;
# ALTER修改表的名称语法格式
ALTER TABLE 原表名 RENAME TO 新表名;
# 举例演示,将表 patent6 改名为 patent
ALTER TABLE patent6 RENAME TO patent5;
5. DROP 和 TRUNCATE 的区别
DROP 表示删除表,它会将整个表的结构和数据一并删除,也就说表不复存在了,并且不能回滚。但实际开发过程中,公司中的DBA一般不会给予开发人员删除权限,就算有删除也是逻辑删除。
TRUNCATE 也表示删除表,但它只会删除表中的数据,表还在,只是数据全部删掉了。