PODSTAWY SQL Opracowała: mgr inż. Agnieszka Cwojdzińska SQL (Structured Query Language) służy do tworzenia i modyfikowania baz danych oraz do umieszczania i pobierania danych umieszczonych w relacyjnych bazach danych. Jest językiem uniwersalnym, dzięki czemu praca na różnych systemach baz danych sprowadza się do wydawania tych samych lub podobnych komend tzw. zapytań SQL. Język SQL został zaimplementowany w większości relacyjnych systemów baz danych (SZBD). Znajomość składni języka SQL jest niezbędna przy tworzeniu rozbudowanych kwerend, które trudno jest zaprojektować w środowisku graficznym. Język SQL jest wykorzystywany do tworzenia dynamicznych stron WWW, współpracujących z bazami danych. Instrukcja SELECT SELECT zakres kolumn wybieranych z tabeli FROM nazwa tabeli; SELECT uczen, egzamin FROM sprawdzian; uczen egzamin Abacki 0 Babacki 80 Cabacki 90 Dabacki 70 Klauzula ORDER BY SELECT uczen, klasowka, egzamin FROM sprawdzian ORDER BY uczen; SELECT uczen, klasowka, egzamin FROM sprawdzian ORDER BY uczen DESC ; uczen Abacki Babacki Cabacki Dabacki uczen Dabacki Cabacki Babacki Abacki SELECT uczen, klasowka, egzamin FROM sprawdzian ORDER BY uczen ASC, klasowka DESC ; klasowka 45 50 100 80 klasowka 80 100 50 45 egzamin 0 80 90 70 egzamin 70 90 80 0 Wyrażenia w instrukcji SELECT WHERE SELECT uczen, klasowka FROM sprawdzian WHERE klasowka>egzamin ORDER BY uczen DESC; uczen Dabacki Cabacki Abacki klasowka 80 100 45 UWAGA! <>, >=, <=, = Wyrażenia w instrukcji SELECT WHERE z predykatem LIKE SELECT * FROM sprawdzian WHERE uczen LIKE ”%backi”; uczen Cabacki Babacki Abacki klasowka 100 50 45 egzamin 90 80 0 Wyrażenia w instrukcji SELECT WHERE z predykatem NOT LIKE SELECT uczen, klasowka, egzamin FROM sprawdzian WHERE uczen NOT LIKE ”%cki”; Wyrażenia w instrukcji SELECT WHERE z predykatem BETWEEN SELECT uczen FROM sprawdzian WHERE klasowka BETWEEN 50 AND 100; uczen Dabacki Cabacki Babacki SELECT uczen FROM sprawdzian WHERE klasowka >=50 AND <=100; klasowka 80 100 50 egzamin 70 90 80 Wyrażenia w instrukcji SELECT WHERE z operatorem logicznym AND SELECT [id uczen], klasowka, egzamin FROM sprawdzian WHERE klasowka>egzamin AND egzamin>75 ORDER BY uczen; Wyrażenia w instrukcji SELECT WHERE z operatorem logicznym AND SELECT [id uczen], klasowka, egzamin FROM sprawdzian WHERE klasowka>egzamin AND egzamin>75 ORDER BY uczen; Klauzula INNER JOIN … ON - dokonuje wewnętrznego złączenia tabel (połączenie zawężające) ; wyświetlane są te rekordy, dla których w polu wspólnym dla dwóch tabel znajdują się takie same wartości SELECT Pacjenci.Nazwisko, Pacjenci.Imie, Wizyty.Data_wizyty FROM Pacjenci INNER JOIN Wizyty ON Pacjenci.[Id_pacjenta] = Wizyty.[Id_pacjenta]; Klauzula INNER JOIN … ON - dokonuje wewnętrznego złączenia tabel ; wyświetlane są te rekordy, dla których w polu wspólnym dla dwóch tabel znajdują się takie same wartości SELECT Pacjenci.Nazwisko, Pacjenci.Imie, Wizyty.Data_wizyty FROM Pacjenci INNER JOIN Wizyty ON Pacjenci.[Id_pacjenta] = Wizyty.[Id_pacjenta]; SELECT Pacjenci.Nazwisko, Pacjenci.Imie, Wizyty.Data_wizyty FROM Pacjenci , Wizyty WHERE Pacjenci.[Id_pacjenta] = Wizyty.[Id_pacjenta]; Klauzula LEFT JOIN … ON - dokonuje lewostronnego złączenia tabel (lewe połączenie rozszerzające); oznacza to, że w wynikach będą uwzględnione wszystkie rekordy z tabeli znajdującej się po lewej stronie napisu LEFT JOIN (Tabela1), nawet jeśli w tabeli po prawej stronie nie ma odpowiadających im wpisów. W takim przypadku do pól z tabeli tabela 1 dołączone będą pola o wartościach Null SELECT Pacjenci.Nazwisko, Pacjenci.Imie, Wizyty.Data_wizyty FROM Pacjenci LEFT JOIN Wizyty ON Pacjenci.[Id_pacjenta] = Wizyty.[Id_pacjenta]; Klauzula DISTINCT - używamy, gdy chcemy ograniczyć wystąpienia takich samych wartości w kolejnych rekordach SELECT Miejscowość FROM Klient WHERE Miejscowość<>”Poznań” ; Uruchomienie tej kwerendy spowoduje wyświetlenie informacji, z jakich miejscowości poza Poznaniem, pochodzą klienci. Nazwa miejscowości pojawi się na liście tyle razy ilu klientów jest z danej miejscowości. SELECT DISTINCT Miejscowość FROM Klient WHERE Miejscowość<>”Poznań” ; GRUPOWANIE DANYCH Funkcje agregujące COUNT (nazwa kolumny) – zwraca liczbę wierszy w grupie SUM (nazwa kolumny) – zwraca sumę wartości w grupie dla wskazanej kolumny AVG - zwraca średnią wartość w grupie dla wskazanej kolumny MIN - zwraca najmniejszą wartości w grupie dla wskazanej kolumny MAX - zwraca największą wartości w grupie dla wskazanej kolumny Funkcja COUNT uczen Abacki Babacki Dabacki Iksiński Znudzony klasowka 45 50 80 50 80 egzamin 0 80 90 70 80 90 SELECT COUNT (*) AS [LICZBA UCZNIÓW] Liczba uczniów FROM sprawdzian; 6 Funkcja COUNT uczen Kod pocztowy Abacki 45 Babacki 50 Cabacki 100 Dabacki Dabacki 80 Iksiński 50 Znudzony 80 SELECT COUNT ([kod pocztowy]) AS [Liczba uczniów] Liczba uczniów FROM Klient; 6 Funkcja SUM (sumowanie wartości kolumn) uczen klasowka Abacki 45 Babacki 50 Cabacki 100 Dabacki 80 Iksiński 50 Znudzony 80 egzamin 0 80 90 70 80 90 SELECT SUM (klasowka) FROM sprawdzian; SELECT SUM (klasowka) As wynik FROM sprawdzian; klasowka 405 wynik 405 Funkcja AVG (średnia wartości kolumn) uczen klasowka Abacki 45 Babacki 50 Cabacki 100 Dabacki 80 Iksiński 50 Znudzony 80 egzamin 0 80 90 70 80 90 SELECT AVG (klasowka) FROM sprawdzian; klasowka 67,5 Funkcja MAX (MAX wartości kolumn) uczen klasowka Abacki 45 Babacki 50 Cabacki 100 Dabacki 80 Iksiński 50 Znudzony 80 egzamin 0 80 90 70 80 90 SELECT MAX (klasowka) FROM sprawdzian; klasowka 100 Funkcja MIN (MIN wartości kolumn) uczen klasowka Abacki 45 Babacki 50 Cabacki 100 Dabacki 80 Iksiński 50 Znudzony 80 egzamin 0 80 90 70 80 90 SELECT MIN (klasowka) AS [wynik z klasowski] Wynik z klasowki FROM sprawdzian; 45