Dotychczas wszystkie tabele i bazy danych jakie stworzyliśmy są po prostu puste, nie posiadają żadnych wierszy. Można to zmienić w sposób zadziwiająco prosty 🙂
Wpis nie będzie wyjątkowo krótki.
Przejdźmy zatem do konkretów, w celu zapisania danych korzystamy z zapytania zgodnego z poniższym wzorem:
INSERT INTO {nazwa_tabeli} VALUE ({wartosc_1}, {wartosc_2});
W miejscu „nazwa_tabeli” oczywiście powinniśmy wkleić realną nazwę tabeli do której chcemy zapisać nowe dane. Następnie wewnątrz nawiasów zapisujemy nasze dane oddzielając je przecinkami. Poniżej wklejam przykładowe zapytanie:
INSERT INTO `users` VALUE ('Kris', 'Walenty', 21);
Czy powyższy zapis jest czytelny? Która wartość zostanie zapisana w której kolumnie?
To największy minus powyższego zapisu, nie wiemy czym jest wartość ’21’ czy to ID czy wiek? MySQL zapisze powyższe wartości w kolejności zgodnej z kolejnością kolumn.
Lekarstwem na powyższy zapis, jest po prostu zmienić go na przedstawiony poniżej:
INSERT INTO {table_name} ({column_1}, {column_2}) VALUES ({value_1}, {value_2});
Oraz przykład:
INSERT INTO `users` ('name', 'surname', 'years') VALUES ('Kris', 'Walenty' 21);
W przypadku drugim, nie musimy dbać o kolejność zgodną z tą z bazy danych. Sami podajemy nazwy kolumn i przypisane do nich wartości.
Oczywiście, jeśli nie podamy kolumn, a w bazie mamy wartość domyślną, zostanie ona wykorzystana do zapisu danych, tak samo jak dla kolumny „id” gdzie mamy zapewne autoinkrementacja.
Dodawanie nowych wartości a klucze obce
Jeśli pamiętasz jeszcze klucze obce o których pisałem tutaj:
https://ifcode.pl/kurs-mysql/rozdzial-5-relacje-pomiedzy-tabelami/
zapewne wiesz, że baza danych strzeże prawidłowych wartości w zadeklarowanych przez nas kolumnach.
Z wpisu powyższego „Relacje pomiędzy tabelami” weźmy tabelkę „Company” i postarajmy się wykonać na niej takie zapytanie:
INSERT INTO `company` ('id_user', 'name') VALUES (99, 'Walenty');
Zapytanie się nie uda, otrzymamy błąd mniej więcej w podobnym kontekście:
Cannot add or update a child row: a foreign key constraint fails
Baza pilnuje od momentu powstania relacji, aby wartość „id_user” zgadzała się z wartością „id” z kolumny „user„
Jeśli w momencie tworzenia tabeli „create table” lub po jej modyfikacji „alter table” ustawiliśmy dla kolumny „id_user” atrybut „not null” baza będzie pilnowała również tego, aby w tej tabelce na pewno znalazła się wartość „int„.