Składnia:
INSERT [ OR conflict-algorithm ] INTO [catalog-name.]table-name [(column-name[, column-name]*)] insert-content insert-content: VALUES (value[, value]*) | select-statement
Instrukcja INSERT modyfikuje podaną tabelę, tworząc nowe wiersze z podanymi wartościami pól lub wstawiając wiersze uzyskane za pomocą instrukcji SELECT.
W przypadku wariantu insert-content ze słowem kluczowym VALUES, utworzony zostanie jeden nowy wiersz w tabeli. Jeżeli nie podana zostanie lista kolumn, to liczba przekazanych wartości musi być taka sama jak liczba kolumn w tabeli.
Jeżeli podana zostanie lista nazw kolumn, to liczba przekazanych wartości musi być taka sama, jak liczba podanych kolumn. W kolumny z tabeli, które nie są uwzględnione w liście kolumn wpisane zostaną wartości domyślne lub Null.
W drugim wariancie wiersze do wstawienia są generowane za pomocą instrukcji SELECT. Jeżeli nie podana zostanie lista kolumn, to liczba kolumn w wyniku tej instrukcji musi się zgadzać z liczbą kolumn w tabeli. Jeżeli podana zostanie lista nazw kolumn, to liczba kolumn w wyniku instrukcji SELECT musi być taka sama, jak liczba kolumn podanych w liście. W kolumny z tabeli, które nie są uwzględnione w liście kolumn wpisane zostaną wartości domyślne lub Null.
Dla każdego wiersza z wyniku instrukcji SELECT tworzony jest nowy wiersz w zmienianej tabeli. Możliwe jest stosowanie zarówno prostych jak i złożonych instrukcji SELECT.
Opcjonalne klauzule rozwiązywania konfliktów conflict-algorithm pozwalają na określenie alternatywnego algorytmu rozwiązywania konfliktów, stosowanego w trakcie wykonywania instrukcji. Więcej informacji można znaleźć w podrozdziale ON CONFLICT.
Zamiast INSERT OR REPLACE ... można stosować też instrukcję REPLACE INTO .