CREATE TABLE students ( id INT AUTO_INCREMENT PRIMARY KEY COMMENT '学号', name VARCHAR(50) NOT NULL COMMENT '姓名', age INTDEFAULT18 COMMENT '年龄', enrollment_date DATE COMMENT '入学日期' ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
# 6. 修改表的字符集 ALTER TABLE 表名 DEFAULTCHARACTER SET 字符集 COLLATE 校验规则; ALTER TABLE 表名 CONVERTTOCHARACTER SET 字符集 COLLATE 校验规则;
1. 修改表名
1
alter table students rename to student; # 将表名 students 改为 student
2. 新增字段
1 2
alter table student addcolumn address varchar(20); # 使用 addcolumn 在表末尾新增字段,若要插入到指定位置,可加 AFTER 或 FIRST
3. 删除字段
1 2
alter table student drop address; # 删除指定列 alter table student drop [column] address;
4. 修改字段类型或属性
1 2 3
alter table student modify id bigint; alter table student modify [column] id bigint; alter table student modify column id bigintdefault18;
5. 修改字段名
1 2
alter table student change age student_age int; alter table student change column student_age student_age bigint;
6. 修改表的字符集
1 2
alter table student defaultcharacter set utf8mb4 collate utf8mb4_general_ci; alter table student converttocharacter set utf8mb4 collate utf8mb4_general_ci;
说明:
ADD:新增列。
DROP:删除列。
MODIFY:修改列属性或类型。
CHANGE:修改列名和类型。
RENAME TO:重命名表。
DEFAULT CHARACTER SET / CONVERT TO:修改表字符集。
5. 删除表
语法格式:
1 2
DROPTABLE [IF EXISTS] 表名; droptable students;
说明:
IF EXISTS 避免表不存在时报错。
删除表会直接移除表结构和数据(对应 .ibd 文件会被删除)。
删除不可恢复,请谨慎执行。
6. 小结
ALTER 改形状,INSERT 改内容,SELECT 只读不动。
层级
操作目标
示例命令
修改对象
是否改变数据内容
是否改变表结构
说明
库级操作
数据库本身
CREATE DATABASE db1;
数据库目录(文件夹)
❌ 否
✅ 是
创建/删除/修改数据库的元信息和配置
ALTER DATABASE db1 CHARACTER SET utf8mb4;
数据库默认字符集
❌
✅
仅影响默认字符集,不动数据
DROP DATABASE db1;
数据库及其所有表
✅(全删)
✅
删除整个数据库目录与数据文件
表级操作
表定义(结构)
CREATE TABLE students(...);
表结构定义(列信息)
❌
✅
新建表结构文件(如 .frm/.ibd)
ALTER TABLE students ADD COLUMN address VARCHAR(200);
新增字段定义
✅(为每行增加 NULL 值)
✅
改表结构,所有行增加新列空间
ALTER TABLE students DROP COLUMN age;
删除字段定义
✅(清除该列数据)
✅
删列即删该列所有数据
ALTER TABLE students MODIFY COLUMN name VARCHAR(100);
修改字段属性
❌(仅调整结构)
✅
不动已有数据内容
ALTER TABLE students CHANGE COLUMN name username VARCHAR(100);