Skip to content

ALTER Tables

The ALTER TABLE statement is used to modify the structure of existing tables. This chapter introduces how to use ALTER TABLE to add, drop, or modify columns and constraints.

Basic Syntax

sql
ALTER TABLE table_name
ADD | DROP | MODIFY | CHANGE column_definition;

Add Columns

sql
-- Add single column
ALTER TABLE users
ADD phone VARCHAR(20);

-- Add multiple columns
ALTER TABLE users
ADD phone VARCHAR(20),
ADD address VARCHAR(200);

-- Add column at specific position
ALTER TABLE users
ADD age INT AFTER name;

Drop Columns

sql
-- Drop single column
ALTER TABLE users
DROP COLUMN phone;

-- Drop multiple columns
ALTER TABLE users
DROP COLUMN phone,
DROP COLUMN address;

Modify Columns

MODIFY - Change Column Definition

sql
-- Change column type
ALTER TABLE users
MODIFY age BIGINT;

-- Modify column and add constraint
ALTER TABLE users
MODIFY email VARCHAR(100) NOT NULL UNIQUE;

CHANGE - Rename and Modify Column

sql
-- Rename column and change type
ALTER TABLE users
CHANGE old_name new_name VARCHAR(100);

Rename Table

sql
-- Rename table
ALTER TABLE users
RENAME TO customers;

-- Or use RENAME TABLE
RENAME TABLE users TO customers;

Add Constraints

sql
-- Add primary key
ALTER TABLE users
ADD PRIMARY KEY (id);

-- Add foreign key
ALTER TABLE orders
ADD FOREIGN KEY (user_id) REFERENCES users(id);

-- Add unique constraint
ALTER TABLE users
ADD UNIQUE (email);

Drop Constraints

sql
-- Drop primary key
ALTER TABLE users
DROP PRIMARY KEY;

-- Drop foreign key
ALTER TABLE orders
DROP FOREIGN KEY fk_user_id;

-- Drop index
ALTER TABLE users
DROP INDEX idx_email;

Modify Table Options

sql
-- Change storage engine
ALTER TABLE users ENGINE = InnoDB;

-- Change character set
ALTER TABLE users
CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

Practical Examples

Add Timestamp Fields

sql
ALTER TABLE users
ADD created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
ADD updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;

Best Practices

  1. Backup data before modification
  2. Execute during off-peak hours
  3. Use online DDL for large tables
  4. Test in development environment first
  5. Use transactions (if supported)

Summary

  • ADD: Add columns or constraints
  • DROP: Remove columns or constraints
  • MODIFY: Change column definition
  • CHANGE: Rename and modify column
  • RENAME: Rename table

Next Step: Learn DROP Tables

Content is for learning and research only.