294 PHP i MySQL dla każdego
lub
INSERT INTO Klienci (Klientld. Imię. Nazwisko) VALUES (1, 'Jan'. 'Kowalski');
Zwróćmy uwagę na to, że w pierwszym przypadku, ponieważ wstawialiśmy wartości do wszystkich pól, nie trzeba było podawać nazw kolumn, ale w przypadku drugim nazwy kolumn były niezbędne. Co by się jednak stało, gdybyśmy spróbowali wykonać pierwszą z powyższych instrukcji, ale pole Adres było polem wymaganym (czyli zostałoby zdefiniowane jako NOT NULL)? Otóż zostałby zgłoszony komunikat o błędzie, widoczny na rysunku 10.3.
nysql> insert into KLIENCI i ERROR^1048 <23000): Colunn 1
Rysunek 10.3. Efekt próby wprowadzenia wartości NULL do kolumny zdefiniowanej jako NOT NULL
Jest jednak sytuacja, w której do pola w kolumnie zdefiniowanej jako NOT NULL można wprowadzić wartość pustą. Jak się zapewne domyślamy, są to pola typu AUT0_ INCREMENT. W takim wypadku wprowadzenie wartości typu NULL jest nie tylko możliwe, ale i niezbędne do prawidłowego działania. Załóżmy, że tabela KI ienci została utworzona za pomocą nieco zmodyfikowanej instrukcji CREATE w postaci:
CREATE TABLE KLIENCI!
Klientld INTEGER PRIMARY KEY AUTOJNCREMENT.
Imię VARCHAR(25).
Nazwisko VARCHAR (25).
Adres YARCHAR (60)
Jak pamiętamy, pola typu AUTO_INCREMENT automatycznie uzyskują atrybut NOT NULL. Jednak instrukcja INSERT powinna mieć w tym przypadku postać:
INSERT INTO Klienci VALUES (NULL. 'Jan', 'Kowalski'. 'Klonowa 24. Poznań'):
wprowadzana do kolumny Klientld wartość NULL zostanie bowiem automatycznie zamieniona na kolejną wartość całkowitą. W przypadku pierwszego wiersza będzie to 1, w przypadku drugiego wiersza — 2 itd. Nie oznacza to jednak, że do pola AUT0_ INCREMENT nie można wprowadzić własnej wartości. Jeśli po wykonaniu powyższej instrukcji chcemy wprowadzić do bazy dane Andrzeja Nowaka, zamieszkałego przy ulicy Lipowej 50 we Wrocławiu, i chcemy jednocześnie nadać mu określony identyfikator, np. 25, nic nie stoi na przeszkodzie, aby wykonać instrukcję:
INSERT INTO Kl1enc1 VALUES (25, 'Andrzej'. 'Nowak', 'Lipowa 50. Wrocław'):
Musimy jednak pamiętać, że kolejny wiersz, który będzie korzystał z funkcji AUT0_ INCREMENT, będzie miał już numer 26 (o jeden większy niż maksymalna ostatnio zapisana wartość w kolumnie).
Warto również wiedzieć, że kolejność wprowadzania danych w instrukcji INSERT nie musi być taka sama, jak struktura kolumn w tabeli. Prawidłowa jest zatem również konstrukcja:
INSERT INTO Klienci (Nazwisko. Imię. Adres. Klientld) VALUES ('Kowalski'. 'Jan'. 'Klonowa 24, Poznań', NULL);