Основные операции с данными

Добавление данных. Команда INSERT

Последнее обновление: 27.11.2021

Для добавления данных в SQLite применяется команда INSERT, которая имеет следующее формальное определение:

INSERT INTO имя_таблицы [(столбец1, стобец2, ... стобецN)] 
VALUES (значение1, значение2, ... значениеN)

После выражения INSERT INTO в скобках можно указать список столбцов через запятую, в которые надо добавлять данные, и в конце после слова VALUES скобках перечисляют добавляемые для столбцов значения.

Например, пусть в базе данных SQLite есть следующая таблица users:

CREATE TABLE users
(
    id INTEGER PRIMARY KEY AUTOINCREMENT,
	name TEXT,
    age INTEGER
);

Добавим в эту таблицу одну строку с помощью следующего кода:

INSERT INTO users (name, age) VALUES ('Tom', 37);

После названия таблицы указываны два стобца, в которые мы хотим выполнить добавление данные - (name, age). После оператора VALUES указаны значения для этих столбцов. Значения будут передаваться столбцам по позиции. То есть стобцу name передается строка "Tom', столбцу age - число 37. И после успешного выполнения данной команды в таблице появится новая строка:

INSERT и добавление данных в SQLite

Стоит отметить, что при добавлении данных необязательно указывать значения абсолютно для всех столбцов таблицы. Например, в примере выше не указано значение для стобца id, поскольку для данного столбца значение будет автоматически генерироваться.

Также можно можно было бы не указывать названия столбцов:

INSERT INTO users VALUES (2, 'Bob', 41);

Однако в этом случае потребовалось бы указать значения для всех его столбцов, в том числе для столбца id. Причем значения передавались столбцам в том порядке, в котором они идут в таблице.

Добавление NULL

Также мы можем опускать при добавлении такие столбцы, которые поддерживают значение NULL (которые не имеют ограничения NOT NULL):

INSERT INTO users (name) VALUES ('Sam');

В данном случае для столбца age не указано значение, и поскольку данный столбец поддерживает значение NULL, то для него будет установлено значение NULL.

Также подобным столбцам, которые поддерживают NULL, можно явным образом передать NULL:

INSERT INTO users (name, age) VALUES (NULL, NULL);

Значения по умолчанию

Если для столбца задано ограничение DEFAULT, то есть значение по умолчанию, то для него тоже можно не передавать значение. Например, возьмем следующую таблицу:

CREATE TABLE users
(
    id INTEGER PRIMARY KEY AUTOINCREMENT,
	name TEXT DEFAULT 'Undefined',
    age INTEGER DEFAULT 18
);

Теперь столбцы name и age имеют значения по умолчанию. При добавлении данных из можно опустить:

INSERT INTO users(name) VALUES ('Tom');
INSERT INTO users(age) VALUES (22);
Добавление данных и значения по умолчанию в SQLite

Если все столбцы поддерживают значения по умолчанию или автогенерацию или значение NULL, то с помощью ключевого слова DEFAULT можно явно указать, что в качестве значения будут использоваться значения по умолчанию:

INSERT INTO users DEFAULT VALUES;

В этом случае столбцы, для которых определено значение по умолчанию, получат это значение. Остальные столбцы получать значение NULL.

Множественное добавление

Также мы можем добавить сразу несколько строк:

INSERT INTO users(name, age) VALUES
('Tom', 37),
('Bob', 41),
('Sam', 28);

В данном случае в таблицу будут добавлены три строки.

Динамическая типизация

Стоит отметить, что в SQLite (в отличие от многих других популярных систем баз данных) действует динамическая типизиация. Например, возьмем выше использованную таблицу:

CREATE TABLE users
(
    id INTEGER PRIMARY KEY AUTOINCREMENT,
	name TEXT,
    age INTEGER
);

Несмотря на то, что столбец name представляет строку текста, а столбец age - целое число, мы можем передавать этим столбцам данные совсем других типов:

INSERT INTO users(name, age) VALUES
(37, 'Tom'),
(4.5, 5.6),
('Sam', 'twenty-two');
Динамическая типизация в SQLite
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850