SQL

Język SQL przydaje się tylko, albo aż do wyszukania i tworzenia odpowiednich pól oraz tabel w relacyjnej bazie. Problem zaczyna się wtedy, gdy nasze dane rozrzucone są po różnych tabelach. A poszczególne tabele mają po kilka milionów rekordów, wtedy szybkość naszego zapytania zależy od ilości tabel po słowie FROM. Dlatego ważną sprawa jest dobrze skonstruować zapytanie

Wcześniej (w rozdziale PHP) stworzyliśmy bazę danych z 1 tabelą uczniowie, a w pola wpisaliśmy id, imie, nazwisko i urodzony. Należę do osób tłumaczących coś na przykładach dlatego będę się odnosił do takich nazw.

1) Instrukcja SELECT x FROM X służy do wyboru tabeli i odpowiednich pól. Czyli wynikiem działania SELECT jest zawsze 1 tabela z wypisanymi polami. W skrócie SELECT wybiera odpowiednie kolumny z różnych tabel wymienionych po słowie FROM. Dozwolone, a nawet wskazane przy większej ilości tabel jest zapis kolumn w takiej postaci uczniowie.id albo uczniowie.imie. Jak widać taki zapis determinuje nam wybór kolumny w razie tych samych nazw kolumn w różnych tabelach.

2) Instrukcja AS zamienia nazwę kolumny lub tabeli na inną.

3) Instrukcja ORDER BY i ORDER BY x DESC sortuje tabele po wybranej kolumnie.

4) Instrukcja WHERE wybiera rekordy.

przykład1:

SELECT id, imie FROM uczniowie;

Zwróci nam tabele z 2 kolumnami (polami) id i imie.

przykład2:

SELECT id+1,imie FROM uczniowie;

Można dodawać, odejmować, mnożyć i dzielić wszystkie elementy kolumn. To działanie zwróci nam numer id o 1 większy dla każdego ucznia.

przykład3:

SELECT id, imie AS[pierwsze imie] FROM uczniowie;

Zwróci nam tabela w której zamiast nazwy kolumny (imie) będzie nazwa (pierwsze imie). SQL nie rozpoznaje spacji w nazwach, dlatego trzeba dać tam nawias kwadratowy. To samo przypisanie można zrobić tabelom. np: uczniowie AS u. Wtedy do kolumny "id" dostajemy się tak: u.id

przykład4:

SELECT imie & " " & nazwisko FROM uczniowie;

W jednej kolumnie napisze imie zrobi spację i napisze nazwisko. Czyli zwróci nam tabele 1 kolumnową w postaci "imie nazwisko".

przykład5:

SELECT DISTINCT imie FROM uczniowie;

Wypisze nam wszystkie imiona uczniów, z tym że jeśli było 2 Marcinów, to wypisze tylko raz.

przykład6:

SELECT imie, nazwisko FROM uczniowie ORDER BY imie;

Wypisze tabele z 2 kolumnami imie i nazwisko, a do tego posortuje imiona alfabetycznie. Jeśli chcemy posortować odwrotnie to wystarczy ORDER BY imie DESC

przykład7:

SELECT * FROM uczniowie WHERE id<5;

Wypisze wszystkie kolumny z tabeli uczniowie, których id jest mniejsze niż 5. Dozwolone są operatory <> lub !=, >, <, >=, <=, between...and..., in(x), like, is null

przykład8:

SELECT imie FROM uczniowie WHERE id in (3,4);

Wypisze imiona uczniów, którzy mają id 3 i4.

przykład9:

SELECT imie, nazwisko FROM uczniowie WHERE (imie LIKE '?b*');

Wypisze imię i nazwisko wszystkich uczniów których druga litera jest b. Czyli znak '? lub # lub _' zastępuje nam jeden dowolny znak, a znak '* lub %' zastępuje nam dowolną liczbę znaków. Całość musi być w ' ' ponieważ jest to string.

przykład10:

Teoretycznie jeśli stworzymy jeszcze jedną tabele np. Fizyka i dodamy tam kolumny (pola) id_ucznia , odpowiedz (ocena z odpowiedzi) i sprawdzian (ocena ze sprawdzianu). A id w tabeli uczniowie jest takie samo jak id_ucznia w tabeli Fizyka, to możemy stworzyć następujące zapytanie.

SELECT uczniowie.nazwisko Fizyka.odpowiedz FROM uczniowie, Fizyka WHERE uczniowie.id=Fizyka.id_ucznia AND uczniowie.id > 5;

Wypisze nam w 1 tabeli wszystkie nazwiska uczniów i ich ocenę z odpowiedzi, których id jest większy niż 5.

 

Te przykłady umożliwią wam praktycznie nieograniczony dostęp do bazy. Większość tego co jest potrzebne w pracy można stworzyć wykorzystując te proste przykłady. Jak chcecie więcej to zapytajcie wujka google.