SQLite INSERT INTO
Вступление
Команда INSERT используется для создания новых строк в указанной таблице. INSERT работает с одной таблицей и может одновременно вставлять одну строку или несколько строк с помощью команды SELECT. Этот оператор является частью языка манипулирования данными SQL, DML.
Синтаксис:
ВСТАВИТЬ [ИЛИ конфликт-алгоритм] INTO [имя-базы данных.] Имя-таблицы [(список-столбцов)] ЦЕННОСТИ (список значений)
Здесь мы создадим новую таблицу prod_mast:
CREATE TABLE hrdb.prod_mast(
prod_id integer PRIMARY KEY,
prod_name text(20),
prod_rate integer,
prod_qc text(10) DEFAULT 'OK');
пример
Ниже приведен основной оператор INSERT SQL. Мы указали все имена столбцов после имени таблицы и все значения после ключевого слова VALUES.
INSERT INTO prod_mast(prod_id, prod_name, prod_rate, prod_qc)
VALUES(1, 'Pancakes', 75, 'OK');
Вот вставленный ряд.
sqlite> SELECT * FROM prod_mast; prod_id prod_name prod_rate prod_qc -------------------- ---------- ---------- ---------- 1 Блины 75 ОК
Вставить значение без столбца PRIMARY KEY
INSERT INTO prod_mast(prod_name, prod_rate, prod_qc)
VALUES('Gulha', 55, 'Problems');
Приведенный выше пример показывает, что столбец prod_id не был включен в список столбцов. Поскольку столбец prod_id определен как INTEGER PRIMARY KEY, он автоматически увеличивается с помощью SQLite. Итак, ясно, что библиотека SQLite добавляет новый идентификатор.
Вот вставленный ряд.
sqlite> SELECT * FROM prod_mast; prod_id prod_name prod_rate prod_qc --------------- ---------- ---------- ---------- 1 Блины 75 ОК 2 Гюля 55 проблем
Введите значение без упоминания списка столбцов :
INSERT INTO prod_mast VALUES(3,'Pakora', 48, 'OK');
Приведенный выше пример показывает, что после имени таблицы список столбцов не указан. В таких случаях необходимо указать значения для всех столбцов.
Вот вставленный ряд.
sqlite> SELECT * FROM prod_mast; prod_id prod_name prod_rate prod_qc --------------- ---------- ---------- ---------- 1 Блины 75 ОК 2 Гюля 55 проблем 3 Пакора 48 ОК
Вставьте значения для определенных столбцов
Здесь, в примере ниже, были указаны два столбца.
INSERT INTO prod_mast(prod_id, prod_name)
VALUES(4, 'Pizza');
Вот результат после вставки.
sqlite> SELECT * FROM prod_mast; prod_id prod_name prod_rate prod_qc -------------------- ---------- ---------- ---------- 1 Блины 75 ОК 2 Гюля 55 проблем 3 Пакора 48 ОК 4 Пицца ОК
Из вышеприведенного результата кажется, что значение для двух упомянутых столбцов было вставлено, и значение для столбца prod_qc также было вставлено, потому что для этого столбца значение по умолчанию, присвоенное «OK» во время создания таблицы, но столбец prod_rate остается пустым.
Теперь используйте следующую команду.
sqlite> .nullvalue NULL
Команда .nullvalue указывает SQLite показывать значения NULL как NULL. SQLite показывает пустые строки для значений NULL по умолчанию. Теперь посмотрим на результат. Пустой столбец prod_rate, заполненный NULL.
sqlite> SELECT * FROM prod_mast; prod_id prod_name prod_rate prod_qc --------------- ---------- ---------- ---------- 1 Блины 75 ОК 2 Гюля 55 проблем 3 Пакора 48 ОК 4 Пицца NULL ОК
Вставить дубликат столбца первичного ключа
Если мы хотим вставить такую строку, в которой значение столбца первичного ключа уже существует, то увидим результат
sqlite> INSERT INTO prod_mast (prod_id, prod_name, prod_rate, prod_qc) ...> ЗНАЧЕНИЯ (3, «Конфеты», 25, «ОК»); Ошибка: не удалось выполнить уникальное ограничение: prod_mast.prod_id
ОБНОВЛЕНИЕ строк с использованием INSERT
Если мы хотим изменить строку для prod_id равной 4, мы можем использовать следующий оператор
INSERT OR REPLACE INTO prod_mast(prod_id, prod_name, prod_rate, prod_qc)
VALUES(4, 'Pizza', 200, 'OK');
Вот результат после вставки.
sqlite> SELECT * FROM prod_mast; prod_id prod_name prod_rate prod_qc -------------------- ---------- ---------- ---------- 1 Блины 75 ОК 2 Гюля 55 проблем 3 Пакора 48 ОК 4 Пицца 200 ОК
Приведенный выше результат показывает, что хотя prod_id 4 уже существует, он был изменен оператором INSERT, поскольку был использован оператор INSERT OR REPLACE.
Вставка нескольких строк одним оператором INSERT
INSERT OR REPLACE INTO prod_mast(prod_id, prod_name, prod_rate, prod_qc)
VALUES(5, 'Fudge', 100, 'OK'),
(6, 'Candy', 95, 'Not OK'),
(7, 'Chocolate', 150, 'OK');
Вот результат после вставки.
sqlite> SELECT * FROM prod_mast; prod_id prod_name prod_rate prod_qc -------------------- ---------- ---------- ---------- 1 Блины 75 ОК 2 Гюля 55 проблем 3 Пакора 48 ОК 4 Пицца 200 ОК 5 помадка 100 ОК 6 Candy 95 не в порядке 7 Шоколад 150 ОК
Вставить с помощью инструкции SELECT
Вот еще одна таблица prod_back
CREATE TABLE hrdb.prod_backup(
prod_id integer PRIMARY KEY,
prod_name text(20),
prod_rate integer,
prod_qc text(10) DEFAULT 'OK');
Вот инструкция для вставки всех строк строк таблицы prod_mast в таблицу pord_backup.
INSERT INTO prod_backup SELECT * FROM prod_mast;
Вот результат после вставки.
sqlite> SELECT * FROM prod_backup; prod_id prod_name prod_rate prod_qc -------------------- ---------- ---------- ---------- 1 Блины 75 ОК 2 Гюля 55 проблем 3 Пакора 48 ОК 4 Пицца 200 ОК 5 помадка 100 ОК 6 Candy 95 не в порядке 7 Шоколад 150 ОК
Предыдущая: СУЩЕСТВУЕТ Оператор
Далее: Обновление
Новый контент: Composer: менеджер зависимостей для PHP , R программирования