No i stało się, nadszedł taki dzień, w którym chcąc nie chcąc usłyszałem „Dobrze by było, żebyś znał choćby podstawy SQL-a. Pracodawcy dobrze na to patrzą, jeśli kandydat ma jakiekolwiek pojęcie na ten temat”.
Na skróty
Kiedyś, dawno temu, w trakcie studiów miałem „chwilę zwątpienia”, zainstalowałem platformę SQL Serwer w wersji darmowej 30-dniowej i zacząłem się uczyć. Przystąpiłem do działania. Wypożyczyłem z biblioteki książkę do nauki SQL-a. Zasiadłem przy biurku…i odbiłem się od rzeczywistości. Nie miałem pojęcia, o czym ta książka jest, nie rozumiałem nic. Niby po polsku napisana, a jakoś tak w obcym języku mi brzmiała. Dodam tylko, że wtedy Internet to nie był taki „produkt” jak obecnie, nie dało się wszystkiego wygooglać (i tak były takie czasy i to nie tak bardzo dawno temu). Więc w te pędy kolejny raz do biblioteki i tym razem książka z podstawami dla opornych. Pomogło.
Pomogło o, tyle że zaliczyłem zajęcia z informatyki (oczywiście studiowałem zgoła odmienny kierunek, jakim był transport). I jak każdy student, wychodząc z założenia definicji trzech „Z” (zakuć, zdać, zapomnieć), postąpiłem zgodnie z trzecią zasadą. Gdzie mi w transporcie SQL się przyda? Heh. Życie jednak miało swój własny plan na mnie, i tak oto ze spedytowania przerzuciłem się na testowanie. No i dochodzimy do sedna.
Po co testerowi SQL zapytasz?
Jeśli popatrzysz na wymagania pracodawców listowane w ofertach pracy na testera, to powinieneś zobaczyć, że większość ofert wymienia SQL-a w wymaganiach.
Używają go: analitycy, którzy tworzą i uruchamiają zapytania analityczne, administratorzy baz danych do zarządzania nimi i „wyciągania” potrzebnych informacji, programiści, jak i testerzy automatyzujący do pisania testów automatycznych. Jako juniorowi SQL może być Ci potrzebny do pobrania danych testowych i sprawdzenia czy testy przeszły poprawnie i zwróciły prawidłowe dane. Przykładów jest dużo.
Więc może po kolei, od początku. SQL – każdy słyszał, nie każdy wie, co to znaczy. Rozwijając skrót, otrzymamy taką oto definicję:
„strukturalny język zapytań używany do tworzenia, modyfikowania baz danych, oraz do umieszczania i pobierania danych z baz danych”
źródło Wikipedia
OK. Mniej więcej wiesz już, po co to i do czego to potrzebne.
Obrazowo, można powiedzieć, że baza danych to tabele, które przechowują dane w wierszach. Zapytania SQL pozwalają nam wylistować te dane z tabel, których szukamy. Więcej, SQL pozwala nam je również zmienić, dodać nowe, usunąć, policzyć.
Pora zacząć się uczyć.
Gdzie za darmo możesz się uczyć SQL-a?
Mnie polecona została strona w3schools. Jak widać na poniższym zrzucie, na stronie znajdziesz tutoriale do nauki programowania, HTML-a i innych przydatnych w IT tematów. Ja użyłem jej do nauki SQL-a, poniżej przeczytasz, jak jej użyłem do tej nauki.
Wejdź na zakładkę Tutorials, a następnie Learn SQL. Zaczynamy.
Na sam początek zapamiętaj, SQL nie ma wrażliwości na wielkość liter, komenda „SELECT” czy też „select” zostanie tak samo poprawnie zrozumiana.
Przygodę z nauką SQL-a rozpoczniesz w miejscu SQL HOME.
Tak wiem, strona, jak i tutorial są w języku angielskim, jest to jednak tak przystępnie napisane, że nie powinieneś mieć problemu ze zrozumieniem, o co chodzi. Dodatkowo pamiętaj, wszystkie komendy w SQL używają słów w języku angielskim, nie ma tu „polskiego” odpowiednika „Wybierz” zamiast „Select”.
Jak używać strony do nauki SQL-a?
Już na pierwszej stronie po przewinięciu w dół pojawia się nam opcja „Test Yourself With Exercises” i pierwsze zadanie dotyczące omawianego w tutorialu tematu.
Jednak, jeśli dopiero zaczynasz naukę, nie polecam zaczynać od tego. Poczytaj nieco teorii, nie ma tego aż tak dużo, potem zweryfikuj ją w zadaniach (taka moja opinia).
Zatem, zamiast testowania swojej wiedzy, w ramach nauki, przejdź do następnego tematu, klikając przycisk NEXT na dole strony, lub kolejny temat tutoriala na liście.
Co można określić jako podstawę, którą junior tester wiedzieć powinien?
Jako że sam uczę się i ekspertem nie jestem, zapytałem Waldka, jakie lekcje tutoriala według niego junior tester powinien opanować by móc powiedzieć, że zna podstawy SQL-a. Zatem junior tester powinien rozumieć:
- Czym jest baza danych?
- Co robią zapytania?
- Znać te podstawowe, a są nimi wszystkie początkowe lekcje tutoriala do SQL Self Join. Zapytania te są najczęściej używane przez testerów i to ich dotyczą zwykle pytania na rozmowie rekrutacyjnej dla testera (o ile pytanie o SQL-a pada).
Jak sprawdzać swoją wiedzę?
Każdy temat tutoriala składa się z teorii, przykładu i zadania.
Polecam metodę nauki od teorii do praktyki. Przeczytałem najpierw ze zrozumieniem lekcje tutoriala, zakończyłem na lekcji o SQL Self Join. Następnie wróciłem na stronę SQL HOME, ponownie przeczytałem teorię i tym razem rozwiązałem zadanie. Kliknięcie przycisku „Submit Answer” albo linka „Start the Exercise” powoduje przekierowanie na stronę ćwiczeń, na której wylistowane są zadania dla każdego tematu tutoriala.
W każdej chwili możesz wrócić do teorii. Kliknięcie „Go to SQL Select Tutorial” powoduje przekierowanie na stronę z SQL Tutorial do tematu omawianego w zadaniu ostatnio otworzonym.
Co mi sprawiło trudność podczas nauki SQL-a?
- Napisz komendę pokazującą tylko wiersz nr 1.
- Wiele prób za mną, ale sukces!, komenda niby prosta select * from customers where customerid=1, dlaczego jest * w komendzie skoro szukam tylko wiersza 1? Bo * oznacza, że chcę wyświetlić wszystkie kolumny, a dalsza część precyzuje z jakiego wiersza.
- Kolejne zadanie, wyświetl wiersze od 1 do 5 – select * from customers where customerid between 1 and 5 – objaśniając sobie — wybierz wszystkie z klientów, gdzie numer klienta jest pomiędzy 1 a 5.
- Najtrudniejsze dla mnie było zrozumieć co i jak i dlaczego w komendach JOIN. Dla przykładu połącz dwie tabele tabela1 i tabela2, używając parametr1 w obu tabelach jako elementu łączącego wpisy w tych tabelach. W tekście zadania napisana jest odpowiedź, czyli: select * from tabela1 left join tabela2 on tabela1.parametr1=tabela2.parametr1. Tłumacząc na „nasze”, wybierz wszystko z tabeli pierwszej (tabela1), połącz lewą tabelę (tabela1) z pasującymi rekordami prawej tabeli (tabela2) gdzie tabela1 zawiera parametr1 a tabela2 zawiera parametr1.
- Po mniej więcej ogarnięciu JOIN łatwiej było mi zrozumieć GROUP BY (choć nie wymieniony przez Waldka, ale sprawdziłem i jego), szczególnie tłumacząc sobie kolejne kroki pisania składni w sposób dla mnie zrozumiały.
Każdy z nas musi sam sobie wypracować jakiś schemat ułatwiający zapamiętanie, jakby nie mówić nowych pojęć i połączenia ich w logiczną całość. Nie mówię, że po zrobieniu samouczka z w3schools stałem się demonem SQL-a. Niemniej przerobiłem samouczka już 4 razy i powiem Ci, że coraz łatwiej wypełniać mi puste pola w zadaniach sprawdzających. Czasami sam staram się czytać tekst zadania i samodzielnie pisać całą komendę wklejając do tabeli testowej i sprawdzając, co mi wyszło… mogę powiedzieć, że materiał był dla mnie nowy, byłem jak szczypiorek na wiosnę zieloniutki, niemniej ten tutorial rozjaśnił mi co nieco na temat SQL.
Na sam koniec, pomyśl, czy dasz radę samodzielnie skonstruować polecenia dla pytań, które bardzo chętnie zadają pracodawcy na rozmowie kwalifikacyjnej:
- W jaki sposób łączymy tabele?
- Jak można połączyć tabele, tak aby nie dublowały się rekordy?