Język SQL – polecenie Select BAZY DANYCH Język SQL – polecenie Select Mariusz Zając IV FK
BAZA ADRESÓW PRACOWNIKÓW SQL – polecenie SELECT BAZA ADRESÓW PRACOWNIKÓW Numer Ubezpieczenia Socjalnego Imię Nazwisko Adres Miasto Województwo 512687458 Jan Nowak Krakowska 23 Warszawa Mazowieckie 758420012 Maria Kowalska Al. Jana Pawła II 2a/3 Kraków Małopolskie 102254896 Adam Słomka 3 – go Maja 15 Lublin Lubelskie 876512563 Sara Kalawska Grunwaldzka 6 Gdańsk Pomorskie
SQL – polecenie SELECT Teraz powiedzmy, że chcesz obejrzeć adres każdego pracownika. Użyj polecenia SELECT w następujący sposób: SELECT Imie, Nazwisko, Adres, Miasto, Stan FROM TabelaAdresowPracownikow; Imię Nazwisko Adres Miasto Stan Jan Nowak Krakowska 23 Warszawa Mazowieckie Maria Kowalska Al. Jana Pawła II 2a/3 Kraków Małopolskie Adam Słomka 3 – go Maja 15 Lublin Lubelskie Sara Kalawska Grunwaldzka 6 Gdańsk Pomorskie
SQL – polecenie SELECT Ogólna forma polecenia SELECT, odczytująca wszystkie wiersze w tabeli to: SELECT NazwaKolumny, NazwaKolumny, ... FROM NazwaTabeli; Aby odczytać wszystkie kolumny z tabeli bez wpisywania ich nazw, wykorzystaj: SELECT * FROM NazwaTabeli;
TABLICA STATYSTYK PRACOWNIKÓW SQL – polecenie SELECT TABLICA STATYSTYK PRACOWNIKÓW Numer ID Pracownika Pensja Zyski Stanowisko 010 75000 15000 Kierownik 105 65000 152 60000 215 12500 244 50000 12000 Personel 300 45000 10000 335 40000 400 32000 7500 Ekspedient
Operatory relacyjne SQL – polecenie SELECT = równy <> / != nierówny < mniejszy < większy <= mniejszy lub równy >= większy lub równy
Klauzula WHERE SQL – polecenie SELECT Gdybyś chciał zobaczyć NumerIDPracownika osób zarabiających ponad 50000$, użyj tego: SELECT NumerIDPracownika FROM TablicaStatystykPracownikow WHERE Pensja >= 50000; Gdybyś chciał zobaczyć NumerIDPracownika wszystkich Kierowników, użyj tego: SELECT NumerIDPracownika FROM TablicaStatystykPracownikow WHERE Stanowisko = 'Kierownik';
Klauzula WHERE SQL – polecenie SELECT SELECT NumerIDPracownika FROM TablicaStatystykPraconikow WHERE Pensja > 40000 AND Stanowisko = 'Personel'; SELECT NumerIDPracownika FROM TablicaStatystykPracownikow WHERE Pensja < 40000 OR Zyski < 10000; SELECT NumerIDPracownika FROM TablicaStatystykPracownikow WHERE Stanowisko = 'Kierownik' AND Pensja > 60000 OR Zyski > 12000;
IN oraz BETWEEN SQL – polecenie SELECT Gdy chcesz otrzymać listę kierowników i personelu: SELECT NumerIDPracownika FROM TablicaStatystykPracownikow WHERE Stanowisko IN ('Kierownik', 'Personel'); albo wylistować tych zarabiających więcej lub dokładnie 30000$, ale maksymalnie 50000$, użyj: SELECT NumerIDPracownika FROM TablicaStatystykPracownikow WHERE Pensja BETWEEN 30000 AND 50000;
LIKE SQL – polecenie SELECT Spójrz na tabelę TabelaAdresowPracownikow i powiedzmy, że chciałbyś zobaczyć wszystkie osoby, których nazwiska zaczynają się na "L"; spróbuj: SELECT NumerIDPracownika FROM TabelaAdresowPracownikow WHERE Nazwisko LIKE 'L%'; ‘%L’ nazwiska kończące się na ‘L’ ‘%L%’ nazwisk, które zawierają ‘L’
SQL – polecenie SELECT ID Posiadacza Zadany Przedmiot ZAMÓWIENIA ANTYKI ID Sprzedającego ID Kupującego Rzecz 01 50 Łóżko 02 15 Stół Krzesło 21 Lustro Biurko Stolik Garnki Doniczka Gabinet ID Posiadacza Zadany Przedmiot 02 Stół Biurko 21 Krzesło POSIADACZE ANTYKÓW ID Posiadacza Nazwisko Imię 01 Jones Bill 02 Smith Bob 15 Lawson Patricia 50 Atkins Jane
DISTINCT oraz ORDER BY SQL – polecenie SELECT Powiedzmy, że chcesz wylistować ID i imiona tylko tych osób, które sprzedały antyk. Oczywiści chcesz mieć listę, w której każda osoba jest przedstawiona tylko raz -- nie interesuje cię ile antyków dana osoba sprzedała, tylko sam fakt sprzedania: SELECT DISTINCT IDSprzedajacego, NazwiskoPosiadacza, ImiePosiadacza FROM Antyki, PosiadaczeAntykow WHERE IDSprzedajacego = IDPosiadacza ORDER BY NazwiskoPosiadacza, ImiePosiadacza, IDPosiadacza; Klauzula ORDER BY sortuje nam listę według nazwiska, następnie imienia,a na koniec według ID Posiadacza.
GROUP BY oraz HAVING SQL – polecenie SELECT Chcemy zobaczyć najdroższą Rzecz kupioną przez każdego z posiadaczy. Musimy powiedzieć SQL-owi, by zgrupował nabytki każdego posiadacza i pokazał nam największą cenę: SELECT IDPosiadacza, MAX(Cena) FROM Antyki GROUP BY IDKupujacego; A teraz załóżmy, że chcemy zobaczyć tylko największe ceny nabytków jeśli cena przekraca $1000, więc użyjemy klauzuli HAVING: SELECT IDKupujacego, MAX(Cena) FROM Antyki GROUP BY IDKupujacego HAVING Cena > 1000;
ALIASY SQL – polecenie SELECT Spójrzmy na poniższe zaptanie, które drukuje nazwiska tych posiadaczy, którzy wystosowali jakieś zamówienie, wraz z tym zamówieniem, ale tylko dla tych zamówień, które moga być dokonane (tzn. gdy istnieje kupiec, który posiada zamawianą rzecz): SELECT Posiad.NazwiskoPosiadacza Nazwisko, Zam.ZadanyPrzemiot Zamawiany przedmiot FROM Zamowienia Zam, PosiadaczeAntykow Posiad WHERE Zam.IDPosiadacza = Posiad.IDPosiadacza AND Zam.ZadanyPrzedmiot IN (SELECT Rzecz FROM Antyki);
ALIASY SQL – polecenie SELECT Zamawiany przedmiot Nazwisko To nam daje: Nazwisko Zamawiany przedmiot Smith Stół Biurko Atkins Krzesło Lawson Lustro
Funkcje agregacyjne SQL – polecenie SELECT SUM () zwraca sumę wartości z wierszy spełniających zapytanie dla kolumny numerycznej. AVG () zwraca średnią dla danej kolumny. MAX () zwraca największą wartość w danej kolumnie. MIN () zwraca najmniejszą wartość w danej kolumnie. COUNT(*) zwraca liczbę określającą ilość wierszy spełniających warunki.
Funkcje agregacyjne SQL – polecenie SELECT Mając w pamięci tabele z początku tego dokumentu, spójrzmy na trzy przykłady: SELECT SUM(Pensja), AVG(Pensja) FROM TablicaStatystykPracownikow; To zapytanie pokazuje sumę wszystkich pensji w tabeli i średnią pensję wyliczoną ze wszystkich wpisów w tabeli. SELECT MIN(Zyski) FROM TablicaStatystykPracownikow WHERE Stanowisko = 'Kierownik'; To zapytanie pokazuje najmniejszą wartość kolumny "Zyski" wśród pracowników, którzy są kierownikami. Wartość ta to 12500. SELECT COUNT(*) FROM TablicaStatystykPracownikow WHERE Stanowisko = 'Personel'; To zapytanie pokazuje, ilu pracownikow ma status personelu (3).