SQLite: Основные операции с данными. Добавление данных. Команда INSERT
Для добавления данных в SQLite применяется команда INSERT, которая имеет следующее формальное определение:
Код:
INSERT INTO имя_таблицы [(столбец1, стобец2, ... стобецN)]
VALUES (значение1, значение2, ... значениеN)
Например, пусть в базе данных SQLite есть следующая таблица users:
Код:
CREATE TABLE users
(
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT,
age INTEGER
);
Добавим в эту таблицу одну строку с помощью следующего кода:
Код:
INSERT INTO users (name, age) VALUES ('Tom', 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