-- 语法:ALTER DATABASE 数据库名 CHARACTER SET 编码 [COLLATE 校对规则]; ALTER DATABASE mydb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
影响:新表默认使用该编码,已有表不受影响。
2. 修改表编码
1 2
-- 语法:ALTER TABLE 表名 CHARACTER SET 编码 [COLLATE 校对规则]; ALTER TABLE users CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
影响:表的默认编码更新,新添加的字段会继承该编码,已有字段需单独修改。
3. 修改字段编码
1 2
-- 语法:ALTER TABLE 表名 MODIFY 字段名 类型 CHARACTER SET 编码 [COLLATE 校对规则]; ALTER TABLE users MODIFY nickname VARCHAR(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
注意:需指定字段完整类型(如 VARCHAR(50)),否则可能覆盖原有类型。
修改表名
1 2 3 4 5
-- 语法1:ALTER TABLE 旧表名 RENAME TO 新表名; ALTER TABLEuser RENAME TO users;
-- 语法2:RENAME TABLE 旧表名 TO 新表名; RENAME TABLE users TO user_info;
注意:修改表名会影响依赖该表的视图、存储过程等,需同步更新。
修改列定义(列名、类型、约束)
1. 修改列名
1 2
-- 语法:ALTER TABLE 表名 CHANGE 旧列名 新列名 类型 [约束]; ALTER TABLE users CHANGE u_name username VARCHAR(30) NOT NULL;
必须指定新列的完整类型(即使类型不变),否则会报错。
可同时修改类型(如从 VARCHAR(20) 改为 VARCHAR(30))。
2. 修改列类型或约束
1 2 3 4 5 6 7 8 9
-- 语法:ALTER TABLE 表名 MODIFY 列名 新类型 [新约束]; -- 示例1:修改类型(int 改为 bigint) ALTER TABLE users MODIFY age BIGINT UNSIGNED;
-- 示例2:添加非空约束 ALTER TABLE users MODIFY email VARCHAR(100) NOT NULL;
-- 示例3:去除默认值 ALTER TABLE users MODIFY status TINYINT DEFAULTNULL;