Administrator
发布于 2025-10-18 / 5 阅读
0
0

MySQL ALTER 语句练习题(10道)

以下是基于您提供的 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:添加多个列

要求:一次性添加 phoneaddress 两列

-- 参考答案
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:综合练习

要求

  1. address 列移动到表的第一列

  2. 修改 gender 列,添加默认值 'M'

  3. 在最后添加 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;

练习建议

  1. 按顺序完成:题目难度逐渐增加

  2. 验证结果:每个 ALTER 语句执行后,使用 DESC 表名; 查看表结构变化

  3. 错误处理:注意数据类型兼容性和约束条件

  4. 备份数据:在生产环境中,执行 ALTER 前建议备份数据


评论