В этом учебном пособии вы узнаете, как использовать SQLite оператор ALTER TABLE чтобы добавить столбец, изменить столбец, удалить столбец, переименовать столбец или переименовать таблицу (с синтаксисом и примерами).
Описание
В этом руководстве по SQLite объясняется, как использовать SQLite оператор ALTER TABLE для добавления столбца, изменения столбца, удаления столбца, переименования столбца или переименования таблицы (с синтаксисом и примерами).
Добавления столбца
Синтаксис
Синтаксис добавления столбца в таблицу в SQLite (используя ALTER TABLE):
ADD new_column_name column_definition;
table_name
Имя таблицы для изменения.
new_column_name
Имя нового столбца, добавляемого в таблицу.
column_definition
Тип данных и определение столбца (NULL или NOT NULL и т.д.).
Пример
Рассмотрим пример, который показывает, как добавить столбец в таблицу SQLite с помощью опертора ALTER TABLE.
Например:
1 2 |
ALTER TABLE employees ADD status VARCHAR; |
Этот SQLite пример ALTER TABLE добавит столбец с именем status в таблицу employees. Он будет создан как столбец, который допускает значения NULL.
Изменить столбец в таблице
Вы не можете использовать оператор ALTER TABLE для изменения столбца в SQLite. Вместо этого вам нужно будет переименовать таблицу, создать новую таблицу и скопировать данные в новую таблицу.
Синтаксис
Синтаксис для изменения столбца в таблице в SQLite:
BEGIN TRANSACTION;
ALTER TABLE table1 RENAME TO _table1_old;
CREATE TABLE table1 (
( column1 datatype [ NULL | NOT NULL ],
column2 datatype [ NULL | NOT NULL ],
...
);
INSERT INTO table1 (column1, column2, ... column_n)
SELECT column1, column2, ... column_n
FROM _table1_old;
COMMIT;
PRAGMA foreign_keys=on;
Пример
Давайте рассмотрим пример, который показывает, как изменить столбец в таблице SQLite.
Например, если у нас была таблица employees, в которой был столбец с именем last_name, который был определен как тип данных CHAR:
1 2 3 4 5 6 |
CREATE TABLE employees ( employee_id INTEGER PRIMARY KEY AUTOINCREMENT, last_name CHAR NOT NULL, first_name VARCHAR, hire_date DATE ); |
И мы хотели изменить тип данных поля last_name на VARCHAR, мы могли бы сделать следующее:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
PRAGMA foreign_keys=off; BEGIN TRANSACTION; ALTER TABLE employees RENAME TO _employees_old; CREATE TABLE employees ( employee_id INTEGER PRIMARY KEY AUTOINCREMENT, last_name VARCHAR NOT NULL, first_name VARCHAR, hire_date DATE ); INSERT INTO employees (employee_id, last_name, first_name, hire_date) SELECT employee_id, last_name, first_name, hire_date FROM _employees_old; COMMIT; PRAGMA foreign_keys=on; |
Этот пример переименует нашу существующую таблицу employees в _employees_old. Затем он создаст новую таблицу employees с полем last_name, определенным как тип данных VARCHAR. Затем он вставит все данные из таблицы _employees_old в таблицу employees.
Удалить столбец из таблицы
Вы не можете использовать оператор ALTER TABLE для удаления столбца в таблице. Вместо этого вам нужно будет переименовать таблицу, создать новую таблицу и скопировать данные в новую таблицу.
Синтаксис
Синтаксис DROP A COLUMN в таблице в SQLite:
BEGIN TRANSACTION;
ALTER TABLE table1 RENAME TO _table1_old;
CREATE TABLE table1 (
( column1 datatype [ NULL | NOT NULL ],
column2 datatype [ NULL | NOT NULL ],
...
);
INSERT INTO table1 (column1, column2, ... column_n)
SELECT column1, column2, ... column_n
FROM _table1_old;
COMMIT;
PRAGMA foreign_keys=on;
Пример
Давайте рассмотрим пример, который показывает, как удалить столбец в таблице SQLite.
Например, если у нас была таблица employees, которая была определена следующим образом:
1 2 3 4 5 6 |
CREATE TABLE employees ( employee_id INTEGER PRIMARY KEY AUTOINCREMENT, last_name VARCHAR NOT NULL, first_name VARCHAR, hire_date DATE ); |
И мы хотели удалить столбец с именем hire_date, мы могли бы сделать следующее:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
PRAGMA foreign_keys=off; BEGIN TRANSACTION; ALTER TABLE employees RENAME TO _employees_old; CREATE TABLE employees ( employee_id INTEGER PRIMARY KEY AUTOINCREMENT, last_name VARCHAR NOT NULL, first_name VARCHAR ); INSERT INTO employees (employee_id, last_name, first_name) SELECT employee_id, last_name, first_name FROM _employees_old; COMMIT; PRAGMA foreign_keys=on; |
Этот пример переименует нашу существующую таблицу employees в _employees_old. Затем он создаст новую таблицу employees с удаленным полем hire_date. Затем он вставит все данные (исключая поле hire_date) из таблицы _employees_old в таблицу employees.
Переименовать столбец в таблице
Вы не можете использовать оператор ALTER TABLE для переименования столбца в SQLite. Вместо этого вам нужно будет переименовать таблицу, создать новую таблицу и скопировать данные в новую таблицу.
Синтаксис
Синтаксис RENAME A COLUMN в таблице в SQLite:
BEGIN TRANSACTION;
ALTER TABLE table1 RENAME TO _table1_old;
CREATE TABLE table1 (
( column1 datatype [ NULL | NOT NULL ],
column2 datatype [ NULL | NOT NULL ],
...
);
INSERT INTO table1 (column1, column2, ... column_n)
SELECT column1, column2, ... column_n
FROM _table1_old;
COMMIT;
PRAGMA foreign_keys=on;
Пример
Давайте рассмотрим пример, который показывает, как переименовать столбец в таблице SQLite.
Например, если у нас была таблица employees, которая была определена следующим образом:
1 2 3 4 5 6 |
CREATE TABLE employees ( employee_id INTEGER PRIMARY KEY AUTOINCREMENT, last_name VARCHAR NOT NULL, first_name VARCHAR, hire_date DATE ); |
И мы хотели переименовать поле hire_date в start_date, мы могли бы сделать следующее:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
PRAGMA foreign_keys=off; BEGIN TRANSACTION; ALTER TABLE employees RENAME TO _employees_old; CREATE TABLE employees ( employee_id INTEGER PRIMARY KEY AUTOINCREMENT, last_name VARCHAR NOT NULL, first_name VARCHAR, start_date DATE ); INSERT INTO employees (employee_id, last_name, first_name, start_date) SELECT employee_id, last_name, first_name, hire_date FROM _employees_old; COMMIT; PRAGMA foreign_keys=on; |
Этот пример переименует нашу существующую таблицу employees в _employees_old. Затем он создаст новую таблицу employees с полем hire_date с именем start_date. Затем он вставит все данные из таблицы _employees_old в таблицу employees.
Переименовать таблицу
Синтаксис
Синтаксис SQLite для того, чтобы переименовать таблицу ALTER TABLE:
RENAME TO new_table_name;
table_name
Таблица для переименования.
new_table_name
Новое имя таблицы.
Пример
Давайте рассмотрим пример, который показывает, как переименовать таблицу в SQLite с помощью оператора ALTER TABLE.
Например:
1 2 |
ALTER TABLE employees RENAME TO staff; |
Этот пример ALTER TABLE переименует таблицу employees в staff.
Узнайте как использовать оператор ALTER TABLE в распространенных БД: