1. Добавление нового столбца
Чтобы добавить новый столбец в таблицу, используется следующий синтаксис:
ALTER TABLE имя_таблицы ADD COLUMN имя_нового_столбца тип_данных [ограничения];
Примечание: Новый столбец будет добавлен в конец таблицы, и если для него не задано значение по умолчанию, все существующие строки будут иметь в этом столбце значение NULL.
Пример: Добавим новый столбец email
в таблицу employees
:
ALTER TABLE employees ADD COLUMN email TEXT;
Теперь в таблице employees
появится новый столбец email
, который будет содержать текстовые данные и по умолчанию будет заполнен значением NULL для всех существующих записей.
2. Переименование таблицы
Переименование таблицы позволяет изменить её имя, сохранив при этом все данные и структуру. Команда ALTER TABLE
позволяет сделать это с использованием следующего синтаксиса:
ALTER TABLE старое_имя_таблицы RENAME TO новое_имя_таблицы;
Пример: Переименуем таблицу employees
в staff
:
ALTER TABLE employees RENAME TO staff;
После выполнения этой команды таблица employees
будет переименована в staff
, и теперь для работы с ней следует использовать новое имя.
3. Переименование столбца
SQLite поддерживает изменение имени столбца. Для этого используется следующий синтаксис:
ALTER TABLE имя_таблицы RENAME COLUMN старое_имя_столбца TO новое_имя_столбца;
Пример: Переименуем столбец email
в contact_email
в таблице staff
:
ALTER TABLE staff RENAME COLUMN email TO contact_email;
Теперь столбец email
будет называться contact_email
и его данные останутся без изменений.
Ограничения команды ALTER TABLE в SQLite
SQLite имеет ряд ограничений при использовании ALTER TABLE
. К примеру, нельзя:
- Удалить столбец из существующей таблицы напрямую.
- Изменить тип данных уже существующего столбца.
- Добавить ограничение
NOT NULL
, UNIQUE
, CHECK
или другие для уже существующего столбца.
Для выполнения этих операций нужно использовать обходной метод:
- Создать новую таблицу с нужной структурой.
- Скопировать данные из старой таблицы в новую.
- Удалить старую таблицу.
- Переименовать новую таблицу в имя старой таблицы.
Пример обходного метода для изменения столбца
Допустим, в таблице staff
необходимо изменить тип данных столбца salary
на REAL
. В SQLite это делается через следующие шаги:
-- 1. Создаём новую таблицу с нужной структурой
CREATE TABLE new_staff (
employee_id INTEGER PRIMARY KEY,
first_name TEXT NOT NULL,
last_name TEXT NOT NULL,
hire_date DATE,
salary REAL
);
-- 2. Переносим данные из старой таблицы
INSERT INTO new_staff (employee_id, first_name, last_name, hire_date, salary)
SELECT employee_id, first_name, last_name, hire_date, salary FROM staff;
-- 3. Удаляем старую таблицу
DROP TABLE staff;
-- 4. Переименовываем новую таблицу
ALTER TABLE new_staff RENAME TO staff;
Заключение
Команда ALTER TABLE
— мощный инструмент для изменения структуры таблицы после её создания. Однако, поскольку SQLite имеет ограниченные возможности для её использования, рекомендуется при проектировании таблиц заранее продумывать структуру и ограничения.