以下是基于您提供的 ALTER 语法设计的 10 道适合初学者的练习题:
基础表结构
假设我们有一个初始的学生表:
CREATE TABLE students (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(50) NOT NULL,
    age INT
);题目 1:添加新列
要求:在 students 表的最后添加一个 email 列,数据类型为 VARCHAR(100)
-- 参考答案
ALTER TABLE students ADD COLUMN email VARCHAR(100);题目 2:添加列到指定位置
要求:在 name 列后面添加 gender 列,数据类型为 ENUM('M','F')
-- 参考答案
ALTER TABLE students ADD COLUMN gender ENUM('M','F') AFTER name;题目 3:添加列到第一位置
要求:在表的第一列添加 student_code 列,数据类型为 VARCHAR(20),不能为空
-- 参考答案
ALTER TABLE students ADD COLUMN student_code VARCHAR(20) NOT NULL FIRST;题目 4:添加带默认值的列
要求:在表末尾添加 created_at 列,数据类型为 TIMESTAMP,默认值为当前时间
-- 参考答案
ALTER TABLE students ADD COLUMN created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP;题目 5:删除列
要求:删除 age 列
-- 参考答案
ALTER TABLE students DROP COLUMN age;题目 6:修改列数据类型
要求:将 name 列的数据类型从 VARCHAR(50) 修改为 VARCHAR(100)
-- 参考答案
ALTER TABLE students MODIFY COLUMN name VARCHAR(100) NOT NULL;题目 7:修改列位置
要求:将 email 列移动到 gender 列后面
-- 参考答案
ALTER TABLE students MODIFY COLUMN email VARCHAR(100) AFTER gender;题目 8:添加多个列
要求:一次性添加 phone 和 address 两列
-- 参考答案
ALTER TABLE students 
ADD COLUMN phone VARCHAR(15),
ADD COLUMN address TEXT;题目 9:复杂修改操作
要求:先删除 phone 列,然后在 student_code 后面添加 birth_date 列(DATE类型)
-- 参考答案
ALTER TABLE students 
DROP COLUMN phone,
ADD COLUMN birth_date DATE AFTER student_code;题目 10:综合练习
要求:
将
address列移动到表的第一列修改
gender列,添加默认值 'M'在最后添加
updated_at列(TIMESTAMP类型)
-- 参考答案
ALTER TABLE students 
MODIFY COLUMN address TEXT FIRST,
MODIFY COLUMN gender ENUM('M','F') DEFAULT 'M',
ADD COLUMN updated_at TIMESTAMP;扩展练习表结构
为了更好地练习,我们再创建一个课程表:
CREATE TABLE courses (
    course_id INT PRIMARY KEY AUTO_INCREMENT,
    course_name VARCHAR(100) NOT NULL,
    credit INT,
    teacher VARCHAR(50)
);附加题 11-15:
题目 11:在 courses 表中,在 credit 列后面添加 department 列(VARCHAR(50))
ALTER TABLE courses ADD COLUMN department VARCHAR(50) AFTER credit;题目 12:修改 teacher 列的数据类型为 VARCHAR(100)
ALTER TABLE courses MODIFY COLUMN teacher VARCHAR(100);题目 13:删除 department 列
ALTER TABLE courses DROP COLUMN department;题目 14:在表的第一列添加 course_code 列(VARCHAR(20),UNIQUE约束)
ALTER TABLE courses ADD COLUMN course_code VARCHAR(20) UNIQUE FIRST;题目 15:将 credit 列移动到 course_name 列后面
ALTER TABLE courses MODIFY COLUMN credit INT AFTER course_name;练习建议
按顺序完成:题目难度逐渐增加
验证结果:每个 ALTER 语句执行后,使用
DESC 表名;查看表结构变化错误处理:注意数据类型兼容性和约束条件
备份数据:在生产环境中,执行 ALTER 前建议备份数据