Оператор SQL ALTER TABLE добавляет, изменяет или удаляет столбец в таблице. Этот оператор позволяет изменять таблицу после её создания, даже если в таблице хранятся записи.
Вы можете решить, что вам нужно внести изменения в таблицу SQL. Например, вы можете захотеть переименовать столбец или добавить новый столбец в таблицу. Все эти изменения возможны с помощью команды SQL ALTER TABLE.
SQL ALTER TABLE
Команда ALTER TABLE позволяет вам изменить существующую таблицу:
- Добавление столбца.
- Добавление ограничения.
- Удаление колонны.
- Изменение типа данных.
- Переименование столбца.
В этом руководстве со ссылкой на примеры будет обсуждаться, как изменить таблицу с помощью команды SQL ALTER TABLE.
Установка стола
В этом руководстве мы собираемся изменить таблицу базы данных для бизнеса. В этой базе данных хранится информация о каждом сотруднике, который работает в компании. Наша таблица называется » сотрудники » и содержит следующие значения:
Создав нашу таблицу, мы поняли, что хотим изменить её структуру. Мы могли бы сделать это с помощью команды SQL ALTER TABLE.
SQL ALTER TABLE: добавить столбец в таблицу
Вы можете добавить столбец в таблицу SQL с помощью команды ALTER TABLE. Синтаксис для добавления нового столбца в существующую таблицу следующий:
ALTER TABLE table_name ADD column_name data_type constraints;
Предположим, мы хотим добавить новый столбец в нашу таблицу «Сотрудники», в которой хранятся номера телефонов каждого сотрудника. Этот столбец следует называть «phone_number». Столбец должен использовать тип данных VARCHAR () — который позволяет нам хранить строки максимальной длины — и не иметь ограничений.
Мы могли бы создать этот столбец, используя следующий оператор:
ALTER TABLE employees ADD phone_number VARCHAR(60);
Эта команда добавляет новый столбец в нашу таблицу в базе данных «Сотрудники». Теперь, когда мы смотрим на структуру нашей базы данных, у нас есть один новый столбец с именем «phone_number»:
Поле | Тип | Дефолт |
имя | варчар (60) | НОЛЬ |
заглавие | варчар (60) | НОЛЬ |
отделение | варчар (60) | НОЛЬ |
количество сотрудников | варчар (60) | НОЛЬ |
телефонный номер | варчар (60) |
SQL ALTER TABLE: добавить ограничение в таблицу
В последнем разделе мы добавили в нашу таблицу новый столбец: phone_number. Но мы забыли добавить какие-либо ограничения в таблицу.
В этом примере это означает, что наша база данных потенциально может хранить один и тот же номер телефона для нескольких сотрудников, что нецелесообразно.
Чтобы исправить это, мы могли бы добавить ограничение UNIQUE в столбец «phone_number» в нашей таблице. Синтаксис для добавления ограничения к столбцу в SQL следующий:
ALTER TABLE table_name ADD UNIQUE (column_name);
Эта команда добавляет ограничение в наш столбец phone_number:
ALTER TABLE employees ADD UNIQUE (phone_number);
Если бы мы хотели добавить ещё одно ограничение, мы могли бы сделать это, заменив «UNIQUE» другим ограничением SQL.
SQL ALTER TABLE: удалить столбец из таблицы
Вы также можете использовать команду ALTER TABLE для удаления столбца из таблицы. Синтаксис для выполнения этой операции следующий:
ALTER TABLE table_name DROP COLUMN column_name;
Предположим, мы хотим удалить столбец «отдел» из нашей таблицы. Позже мы намерены создать новый столбец, который будет связывать отдел сотрудника с другой таблицей. Мы можем удалить этот столбец с помощью следующей команды:
ALTER TABLE employees DROP COLUMN department;
После выполнения этой команды столбец «отдел» из нашей таблицы удаляется. Итак, структура нашей таблицы теперь выглядит следующим образом:
Поле | Тип | Дефолт |
имя | варчар (60) | НОЛЬ |
заглавие | варчар (60) | НОЛЬ |
количество сотрудников | варчар (60) | НОЛЬ |
телефонный номер | варчар (60) |
SQL ALTER TABLE: изменение типа данных столбца
Вы можете использовать команду ALTER TABLE, чтобы изменить тип данных столбца. Синтаксис изменения типа данных столбца:
ALTER TABLE table_name ALTER COLUMN column_name new_data_type;
У этой команды есть две альтернативные версии для MySQL и Oracle (до 10G) и для Oracle 10G и новее. Это:
ALTER TABLE table_name MODIFY COLUMN column_name new_data_type; (MySQL, Oracle pre-10G)
ALTER TABLE table_name MODIFY column_name new_data_type; (Oracle 10G+ and later)
Когда мы создавали нашу начальную таблицу «сотрудников», мы допустили ошибку, назначив нашему полю «employee_number» значение VARCHAR () вместо числа. Чтобы исправить эту ошибку, мы могли бы использовать следующую команду:
ALTER TABLE employees ALTER COLUMN employee_number INT;
Эта команда изменяет тип нашего столбца «employee_number» на INT. Итак, новая структура нашей базы данных выглядит следующим образом:
Поле | Тип | Дефолт |
имя | варчар (60) | НОЛЬ |
заглавие | варчар (60) | НОЛЬ |
количество сотрудников | варчар (60) | НОЛЬ |
телефонный номер | int |
SQL ALTER TABLE: переименовать таблицу
Команда ALTER TABLE также позволяет вам переименовать таблицу SQL. Синтаксис для переименования таблицы:
ALTER TABLE current_table RENAME new_table;
Предположим, мы хотим переименовать нашу таблицу «Сотрудники» в «old_employees_2019». Мы могли бы сделать это с помощью этой команды:
ALTER TABLE employees RENAME old_employees_2019;
Вы не можете переименовать таблицу с помощью команды ALTER TABLE в MySQL. В MySQL вместо использования ALTER TABLE вы можете использовать команду RENAME table.
Мы бы использовали следующую команду, чтобы переименовать нашу таблицу в MySQL:
RENAME TABLE employees TO old_employees_2019;
Вывод
Команда SQL ALTER TABLE позволяет изменять структуру таблицы в SQL. Вы можете добавить таблицу, удалить таблицу из или изменить таблицу в базе данных. Кроме того, вы можете изменить ограничения, связанные с таблицей, например UNIQUE или NOT NULL.