Rozdział 10. ♦ Podstawy SQL 293
Tabele utworzone w sposób opisany na poprzednich stronach trzeba w jakiś sposób wypełnić danymi. Służy do tego celu, występująca w trzech wersjach, instrukcja INSERT INTO. Pierwsze dwie zostaną omówione w dwóch kolejnych sekcjach, natomiast trzecia — w kolejnym rozdziale.
Pierwsza, podstawowa wersja instrukcji INSERT ma schematyczną postać:
INSERT [INTO] tabela [(kolumnal, kolumna2.....kolumnaN)'] VALUES (wartości.
wartość2.....wartośćN)
Powoduje ona wprowadzenie do tabeli nowego wiersza, w którym w polu kolumnal została zapisana wartość wartości, w polu kolumna2 — wartość wartość2 itd. Załóżmy, że w bazie istnieje tabela KI i enci, utworzona za pomocą instrukcji:
CREATE TABLE KI ienci(
Klientld INTEGER PRIMARY KEY.
Imię VARCHAR(25).
Nazwisko VARCHAR (25).
Adres VARCHAR (50)
)
i chcielibyśmy zapisać w niej nowy wiersz, np. dane Jana Kowalskiego zamieszkałego przy ulicy Klonowej 24 w Poznaniu, któremu został nadany identyfikator 1. Należałoby zastosować w takiej sytuacji instrukcję INSERT INTO w postaci:
INSERT INTO Klienci (Klientld, Imię. Nazwisko. Adres) VALUES (1. 'Jan'. 'Kowalski'. 'Klonowa 24. Poznań'):
W celu zwiększenia czytelności można ją rozbić na kilka wierszy, np.:
INSERT INTO Klienci (Klientld. Imię. Nazwisko. Adres)
VALUES
(1. 'Jan', 'Kowalski'. 'Klonowa 24. Poznań'):
Zauważmy, że wszystkie wprowadzane ciągi znaków zostały ujęte w apostrofy (można także użyć znaków cudzysłowu). Jest to niezbędne, aby zapytanie zostało wykonane prawidłowo. Nie ma natomiast potrzeby ujmowania w znaki apostrofu wartości liczbowych.
Nazwy kolumn w instrukcji INSERT są opcjonalne i, jeśli wprowadzamy wartości wszystkich pól, można je pominąć. A zatem powyższa instrukcja mogłaby mieć również postać:
INSERT INTO Klienci VALUES (1. 'Jan'. 'Kowalski'. 'Klonowa 24. Poznań'):
Istnieje również możliwość zapełnienia tylko niektórych kolumn. Jeśli np. nie znamy adresu, a w kolumnie Adres dopuszczalne są wartości puste NULL, można wydać polecenie: INSERT INTO Klienci YALUES (1. 'Jan'. 'Kowalski'. NULL):