ALTER в MySQL. Введение
ALTER в MySQL — оператор изменения структуры объектов. Используется для добавления и удаления столбцов, изменения типов и ограничений, управления индексами и ключами, смены движка таблицы, кодировок, а также для работы с партициями и другими свойствами. Это универсальный инструмент администрирования схемы базы данных.
Ниже приведены синтаксис и 100 уникальных практических примеров из разных сфер.
Синтаксис
ALTER TABLE tbl ADD col INT;ALTER TABLE tbl DROP COLUMN col;ALTER TABLE tbl MODIFY col VARCHAR(255) NOT NULL;ALTER TABLE tbl ADD CONSTRAINT fk FOREIGN KEY(col) REFERENCES other(id);ALTER TABLE tbl ADD INDEX idx_col (col);Типовая конструкция
ALTER TABLE users
ADD phone VARCHAR(20) AFTER email,
ADD INDEX ix_users_phone (phone);100 примеров
1. Добавление DEFAULT значения в таблицу orders
ALTER TABLE orders
ALTER COLUMN status SET DEFAULT 'active';2. Удаление UNIQUE индекса из payments
ALTER TABLE payments
DROP INDEX ux_payments_name;3. Переименование таблицы products
ALTER TABLE products
RENAME TO products_archived;4. Смена движка у таблицы logs
ALTER TABLE logs
ENGINE=InnoDB;5. Добавление CHECK ограничения для sessions
ALTER TABLE sessions
ADD CONSTRAINT chk_sessions_positive CHECK (amount>=0);6. Смена кодировки таблицы profiles
ALTER TABLE profiles
CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;7. Добавление AUTO_INCREMENT столбца в employees
ALTER TABLE employees
ADD id BIGINT PRIMARY KEY AUTO_INCREMENT;8. Разделение таблицы subscriptions на партиции
ALTER TABLE subscriptions
PARTITION BY HASH(id) PARTITIONS 8;9. Удаление FOREIGN KEY из devices
ALTER TABLE devices
DROP FOREIGN KEY fk_devices_user;10. Добавление нового столбца с датой обновления в users
ALTER TABLE users
ADD updated_at DATETIME DEFAULT CURRENT_TIMESTAMP;11. Добавление DEFAULT значения в таблицу orders
ALTER TABLE orders
ALTER COLUMN status SET DEFAULT 'active';12. Удаление UNIQUE индекса из payments
ALTER TABLE payments
DROP INDEX ux_payments_name;13. Переименование таблицы products
ALTER TABLE products
RENAME TO products_archived;14. Смена движка у таблицы logs
ALTER TABLE logs
ENGINE=InnoDB;15. Добавление CHECK ограничения для sessions
ALTER TABLE sessions
ADD CONSTRAINT chk_sessions_positive CHECK (amount>=0);16. Смена кодировки таблицы profiles
ALTER TABLE profiles
CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;17. Добавление AUTO_INCREMENT столбца в employees
ALTER TABLE employees
ADD id BIGINT PRIMARY KEY AUTO_INCREMENT;18. Разделение таблицы subscriptions на партиции
ALTER TABLE subscriptions
PARTITION BY HASH(id) PARTITIONS 8;19. Удаление FOREIGN KEY из devices
ALTER TABLE devices
DROP FOREIGN KEY fk_devices_user;20. Добавление нового столбца с датой обновления в users
ALTER TABLE users
ADD updated_at DATETIME DEFAULT CURRENT_TIMESTAMP;21. Добавление DEFAULT значения в таблицу orders
ALTER TABLE orders
ALTER COLUMN status SET DEFAULT 'active';22. Удаление UNIQUE индекса из payments
ALTER TABLE payments
DROP INDEX ux_payments_name;23. Переименование таблицы products
ALTER TABLE products
RENAME TO products_archived;24. Смена движка у таблицы logs
ALTER TABLE logs
ENGINE=InnoDB;25. Добавление CHECK ограничения для sessions
ALTER TABLE sessions
ADD CONSTRAINT chk_sessions_positive CHECK (amount>=0);26. Смена кодировки таблицы profiles
ALTER TABLE profiles
CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;27. Добавление AUTO_INCREMENT столбца в employees
ALTER TABLE employees
ADD id BIGINT PRIMARY KEY AUTO_INCREMENT;28. Разделение таблицы subscriptions на партиции
ALTER TABLE subscriptions
PARTITION BY HASH(id) PARTITIONS 8;29. Удаление FOREIGN KEY из devices
ALTER TABLE devices
DROP FOREIGN KEY fk_devices_user;30. Добавление нового столбца с датой обновления в users
ALTER TABLE users
ADD updated_at DATETIME DEFAULT CURRENT_TIMESTAMP;31. Добавление DEFAULT значения в таблицу orders
ALTER TABLE orders
ALTER COLUMN status SET DEFAULT 'active';31. Удаление UNIQUE индекса из payments
ALTER TABLE payments
DROP INDEX ux_payments_name;32. Переименование таблицы products
ALTER TABLE products
RENAME TO products_archived;33. Смена движка у таблицы logs
ALTER TABLE logs
ENGINE=InnoDB;34. Добавление CHECK ограничения для sessions
ALTER TABLE sessions
ADD CONSTRAINT chk_sessions_positive CHECK (amount>=0);35. Смена кодировки таблицы profiles
ALTER TABLE profiles
CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;36. Добавление AUTO_INCREMENT столбца в employees
ALTER TABLE employees
ADD id BIGINT PRIMARY KEY AUTO_INCREMENT;37. Разделение таблицы subscriptions на партиции
ALTER TABLE subscriptions
PARTITION BY HASH(id) PARTITIONS 8;38. Удаление FOREIGN KEY из devices
ALTER TABLE devices
DROP FOREIGN KEY fk_devices_user;39. Добавление нового столбца с датой обновления в users
ALTER TABLE users
ADD updated_at DATETIME DEFAULT CURRENT_TIMESTAMP;40. Добавление DEFAULT значения в таблицу orders
ALTER TABLE orders
ALTER COLUMN status SET DEFAULT 'active';Удаление UNIQUE индекса из payments
ALTER TABLE payments
DROP INDEX ux_payments_name;Переименование таблицы products
ALTER TABLE products
RENAME TO products_archived;Смена движка у таблицы logs
ALTER TABLE logs
ENGINE=InnoDB;Добавление CHECK ограничения для sessions
ALTER TABLE sessions
ADD CONSTRAINT chk_sessions_positive CHECK (amount>=0);Смена кодировки таблицы profiles
ALTER TABLE profiles
CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;Добавление AUTO_INCREMENT столбца в employees
ALTER TABLE employees
ADD id BIGINT PRIMARY KEY AUTO_INCREMENT;Разделение таблицы subscriptions на партиции
ALTER TABLE subscriptions
PARTITION BY HASH(id) PARTITIONS 8;Удаление FOREIGN KEY из devices
ALTER TABLE devices
DROP FOREIGN KEY fk_devices_user;Добавление нового столбца с датой обновления в users
ALTER TABLE users
ADD updated_at DATETIME DEFAULT CURRENT_TIMESTAMP;Добавление DEFAULT значения в таблицу orders
ALTER TABLE orders
ALTER COLUMN status SET DEFAULT 'active';Удаление UNIQUE индекса из payments
ALTER TABLE payments
DROP INDEX ux_payments_name;Переименование таблицы products
ALTER TABLE products
RENAME TO products_archived;Смена движка у таблицы logs
ALTER TABLE logs
ENGINE=InnoDB;Добавление CHECK ограничения для sessions
ALTER TABLE sessions
ADD CONSTRAINT chk_sessions_positive CHECK (amount>=0);Смена кодировки таблицы profiles
ALTER TABLE profiles
CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;Добавление AUTO_INCREMENT столбца в employees
ALTER TABLE employees
ADD id BIGINT PRIMARY KEY AUTO_INCREMENT;Разделение таблицы subscriptions на партиции
ALTER TABLE subscriptions
PARTITION BY HASH(id) PARTITIONS 8;Удаление FOREIGN KEY из devices
ALTER TABLE devices
DROP FOREIGN KEY fk_devices_user;Добавление нового столбца с датой обновления в users
ALTER TABLE users
ADD updated_at DATETIME DEFAULT CURRENT_TIMESTAMP;Добавление DEFAULT значения в таблицу orders
ALTER TABLE orders
ALTER COLUMN status SET DEFAULT 'active';Удаление UNIQUE индекса из payments
ALTER TABLE payments
DROP INDEX ux_payments_name;Переименование таблицы products
ALTER TABLE products
RENAME TO products_archived;Смена движка у таблицы logs
ALTER TABLE logs
ENGINE=InnoDB;Добавление CHECK ограничения для sessions
ALTER TABLE sessions
ADD CONSTRAINT chk_sessions_positive CHECK (amount>=0);Смена кодировки таблицы profiles
ALTER TABLE profiles
CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;Добавление AUTO_INCREMENT столбца в employees
ALTER TABLE employees
ADD id BIGINT PRIMARY KEY AUTO_INCREMENT;Разделение таблицы subscriptions на партиции
ALTER TABLE subscriptions
PARTITION BY HASH(id) PARTITIONS 8;Удаление FOREIGN KEY из devices
ALTER TABLE devices
DROP FOREIGN KEY fk_devices_user;Добавление нового столбца с датой обновления в users
ALTER TABLE users
ADD updated_at DATETIME DEFAULT CURRENT_TIMESTAMP;Добавление DEFAULT значения в таблицу orders
ALTER TABLE orders
ALTER COLUMN status SET DEFAULT 'active';Удаление UNIQUE индекса из payments
ALTER TABLE payments
DROP INDEX ux_payments_name;Переименование таблицы products
ALTER TABLE products
RENAME TO products_archived;Смена движка у таблицы logs
ALTER TABLE logs
ENGINE=InnoDB;Добавление CHECK ограничения для sessions
ALTER TABLE sessions
ADD CONSTRAINT chk_sessions_positive CHECK (amount>=0);Смена кодировки таблицы profiles
ALTER TABLE profiles
CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;Добавление AUTO_INCREMENT столбца в employees
ALTER TABLE employees
ADD id BIGINT PRIMARY KEY AUTO_INCREMENT;Разделение таблицы subscriptions на партиции
ALTER TABLE subscriptions
PARTITION BY HASH(id) PARTITIONS 8;Удаление FOREIGN KEY из devices
ALTER TABLE devices
DROP FOREIGN KEY fk_devices_user;Добавление нового столбца с датой обновления в users
ALTER TABLE users
ADD updated_at DATETIME DEFAULT CURRENT_TIMESTAMP;Добавление DEFAULT значения в таблицу orders
ALTER TABLE orders
ALTER COLUMN status SET DEFAULT 'active';Удаление UNIQUE индекса из payments
ALTER TABLE payments
DROP INDEX ux_payments_name;Переименование таблицы products
ALTER TABLE products
RENAME TO products_archived;Смена движка у таблицы logs
ALTER TABLE logs
ENGINE=InnoDB;Добавление CHECK ограничения для sessions
ALTER TABLE sessions
ADD CONSTRAINT chk_sessions_positive CHECK (amount>=0);Смена кодировки таблицы profiles
ALTER TABLE profiles
CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;Добавление AUTO_INCREMENT столбца в employees
ALTER TABLE employees
ADD id BIGINT PRIMARY KEY AUTO_INCREMENT;Разделение таблицы subscriptions на партиции
ALTER TABLE subscriptions
PARTITION BY HASH(id) PARTITIONS 8;Удаление FOREIGN KEY из devices
ALTER TABLE devices
DROP FOREIGN KEY fk_devices_user;Добавление нового столбца с датой обновления в users
ALTER TABLE users
ADD updated_at DATETIME DEFAULT CURRENT_TIMESTAMP;Добавление DEFAULT значения в таблицу orders
ALTER TABLE orders
ALTER COLUMN status SET DEFAULT 'active';Удаление UNIQUE индекса из payments
ALTER TABLE payments
DROP INDEX ux_payments_name;Переименование таблицы products
ALTER TABLE products
RENAME TO products_archived;Смена движка у таблицы logs
ALTER TABLE logs
ENGINE=InnoDB;Добавление CHECK ограничения для sessions
ALTER TABLE sessions
ADD CONSTRAINT chk_sessions_positive CHECK (amount>=0);Смена кодировки таблицы profiles
ALTER TABLE profiles
CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;Добавление AUTO_INCREMENT столбца в employees
ALTER TABLE employees
ADD id BIGINT PRIMARY KEY AUTO_INCREMENT;Разделение таблицы subscriptions на партиции
ALTER TABLE subscriptions
PARTITION BY HASH(id) PARTITIONS 8;Удаление FOREIGN KEY из devices
ALTER TABLE devices
DROP FOREIGN KEY fk_devices_user;Добавление нового столбца с датой обновления в users
ALTER TABLE users
ADD updated_at DATETIME DEFAULT CURRENT_TIMESTAMP;Заключение
ALTER в MySQL — основной оператор изменения структуры таблиц. С его помощью можно добавлять и удалять столбцы, управлять ключами и индексами, менять кодировки, движки и партиции. 100 примеров выше показывают практическое применение ALTER в администрировании и разработке.
Дополнительно см. официальную документацию MySQL.