Poradnik SQL PDF

Title Poradnik SQL
Course Bazy Danych
Institution Politechnika Wroclawska
Pages 4
File Size 58.3 KB
File Type PDF
Total Downloads 164
Total Views 752

Summary

ZAPYTANIA W SQL Niniejszy dokument opisuje SQL i ogranicza jedynie do wiersze (klauzula SELECT). Zapytanie (ang. query) zasadniczo z 3 CO (jakie atrybuty lub funkcje tabele danych) JAK wiersze wybieramy, jak jak grupujemy) POGRUBIONYM KAPITALIKIEM napisane elementy zapytania W nawiasach opcjonalne e...


Description

ZAPYTANIA WYBIERAJCE W JZYKU SQL Niniejszy dokument opisuje własnoci jzyka SQL i ogranicza si jedynie do zapyta wybierajcych wiersze (klauzula SELECT). Zapytanie (ang. query) składa si zasadniczo z 3 czci: - CO (jakie atrybuty lub funkcje atrybutów) - SKD (które tabele s ródłem danych) - JAK (które wiersze wybieramy, jak porzdkujemy, jak grupujemy) POGRUBIONYM KAPITALIKIEM napisane s obowizkowe elementy zapytania W nawiasach [ ] ujte s opcjonalne elementy zapytania

Sekcja „CO” SELECT LISTA_ATRYBUTÓW_ROZDZIELONA_PRZECINKAMI, LISTA_FUNKCJI_NA_ATRYBUTACH_ROZDZIELONA_PRZECINKAMI Komentarze: * - oznacza wybranie wszystkich atrybutów AS ALIAS_ATRYBUTU – oznacza przemianowanie atrybutu DISTINCT – wypisanie tylko rónych wierszy TOP N [PERCENT] – wypisanie pierwszych N [procent] wierszy (działa dla MS SQL Server, nie działa dla Oracle)

Sekcja „SKD” FROM NAZWA_TABELI [AS ALIAS_TABELI] [... JOIN INNA_TABELA ON ATRYBUT_Z_1_TABELI = ATRYBUT_Z_2_TABELI] Komentarze: AS ALIAS_TABELI – oznacza przemianowanie tabeli

Sekcja „JAK” 1. Warunki selekcji [WHERE NAZWA_TABELI.ATRYBUT = WARTO AND|OR NAZWA_TABELI.ATRYBUT BETWEEN WARTO_1 AND WARTO_2 AND|OR NAZWA_TABELI.ATRYBUT IN (ZBIÓR_WARTOCI) AND|OR NAZWA_TABELI.ATRYBUT LIKE NAPIS] 2. Warunki grupowania (jeli uywamy funkcji agregujcych) [GROUP BY NAZWA_TABELI.ATRYBUT_1, NAZWA_TABELI.ATRYBUT_2] 3. Warunki sortowania [ORDER BY NAZWA_TABELI.ATRYBUT_1, NAZWA_TABELI.ATRYBUT_2] 4. Warunki selekcji grupujcej [HAVING WARUNKI_SELEKCJI_GRUPUJCEJ] Funkcje grupujce: COUNT – zliczanie liczby wierszy MAX – wyszukanie wartoci maksymalnej MIN – wyszukanie wartoci minimalnej AVG – wyszukanie wartoci redniej SUM – posumowanie wszystkich wartoci

Przykłady zapyta bazujce na bazie fakturowanie.mdb (dostpnej na sieci): 1. Wywietl list numerów faktur wraz z dat wystawienia SELECT FAKTURY.numer, FAKTURY.data_wystawienia FROM FAKTURY; 2. Wywietl list numerów faktur zapłaconych wraz z dat wystawienia SELECT FAKTURY.numer, FAKTURY.data_wystawienia FROM FAKTURY WHERE FAKTURY.zaplacona=True; 3. Wywietl list numerów faktur niezapłaconych wraz z dat wystawienia oraz nazw kontrahenta SELECT FAKTURY.numer, FAKTURY.data_wystawienia, KONTRAHENCI.nazwa FROM KONTRAHENCI INNER JOIN FAKTURY ON KONTRAHENCI.kontrahent_id = FAKTURY.kontrahent_id WHERE FAKTURY.zaplacona=False; 4. Wywietl list faktur wraz z pozycjami na fakturze, obliczajc warto brutto kadej z pozycji SELECT FAKTURY.numer, FAKTURY.data_wystawienia, TOWARY.nazwa, POZYCJE_FAKTURY.liczba_sztuk * POZYCJE_FAKTURY.wartosc_netto * (100+ POZYCJE_FAKTURY.podatek)/100 *(100POZYCJE_FAKTURY.upust)/100 as WARTOSC_BRUTTO FROM TOWARY INNER JOIN (FAKTURY INNER JOIN POZYCJE_FAKTURY ON FAKTURY.faktura_id = POZYCJE_FAKTURY.faktura_id) ON TOWARY.towar_id = POZYCJE_FAKTURY.towar_id; 5. Wywietl list faktur wraz z sumaryczn kwot brutto SELECT FAKTURY.numer, FAKTURY.data_wystawienia, SUM(POZYCJE_FAKTURY.liczba_sztuk*POZYCJE_FAKTURY.wartosc_netto*(1 00+POZYCJE_FAKTURY.podatek)/100*(100-POZYCJE_FAKTURY.upust)/100) AS WARTOSC_BRUTTO FROM FAKTURY INNER JOIN POZYCJE_FAKTURY ON FAKTURY.faktura_id = POZYCJE_FAKTURY.faktura_id GROUP BY FAKTURY.numer, FAKTURY.data_wystawienia ; 6. Wywietl wszystkich kontrahentów wraz z sumarycznymi kwotami zakupu w podziale na rok 2003 i 2004 SELECT Year(FAKTURY.data_wystawienia) AS ROK, SUM(POZYCJE_FAKTURY.liczba_sztuk*POZYCJE_FAKTURY.wartosc_netto*(1 00+POZYCJE_FAKTURY.podatek)/100*(100-POZYCJE_FAKTURY.upust)/100) AS WARTOSC, KONTRAHENCI.nazwa FROM KONTRAHENCI INNER JOIN (FAKTURY INNER JOIN POZYCJE_FAKTURY ON FAKTURY.faktura_id = POZYCJE_FAKTURY.faktura_id) ON KONTRAHENCI.kontrahent_id = FAKTURY.kontrahent_id WHERE (((Year([FAKTURY].[data_wystawienia])) Between 2003 And 2004)) GROUP BY FAKTURY.numer, Year(FAKTURY.data_wystawienia), KONTRAHENCI.nazwa ORDER BY KONTRAHENCI.nazwa, Year(FAKTURY.data_wystawienia); 7. Znajd najlepszego kontrahenta (czyli tego, który zrobił u nas najwiksze zakupy – uwzgldniamy tylko zapłacone faktury)

SELECT TOP 1 Sum(POZYCJE_FAKTURY.liczba_sztuk*POZYCJE_FAKTURY.wartosc_netto*(1 00+POZYCJE_FAKTURY.podatek)/100*(100-POZYCJE_FAKTURY.upust)/100) AS WARTOSC_BRUTTO, KONTRAHENCI.nazwa FROM KONTRAHENCI INNER JOIN (FAKTURY INNER JOIN POZYCJE_FAKTURY ON FAKTURY.faktura_id = POZYCJE_FAKTURY.faktura_id) ON KONTRAHENCI.kontrahent_id = FAKTURY.kontrahent_id WHERE (((FAKTURY.zaplacona)=True)) GROUP BY KONTRAHENCI.nazwa, FAKTURY.numer, FAKTURY.zaplacona ORDER BY Sum(POZYCJE_FAKTURY.liczba_sztuk*POZYCJE_FAKTURY.wartosc_netto*(1 00+POZYCJE_FAKTURY.podatek)/100*(100-POZYCJE_FAKTURY.upust)/100) DESC; 8. Znajd najwikszego dłunika (czyli tego kontrahenta, który sumarycznie zalega z najwiksz kwot) SELECT TOP 1 Sum(POZYCJE_FAKTURY.liczba_sztuk*POZYCJE_FAKTURY.wartosc_netto*(1 00+POZYCJE_FAKTURY.podatek)/100*(100-POZYCJE_FAKTURY.upust)/100) AS WARTOSC_BRUTTO, KONTRAHENCI.nazwa FROM KONTRAHENCI INNER JOIN (FAKTURY INNER JOIN POZYCJE_FAKTURY ON FAKTURY.faktura_id = POZYCJE_FAKTURY.faktura_id) ON KONTRAHENCI.kontrahent_id = FAKTURY.kontrahent_id WHERE (((FAKTURY.zaplacona)=FALSE)) GROUP BY KONTRAHENCI.nazwa, FAKTURY.numer, FAKTURY.zaplacona ORDER BY Sum(POZYCJE_FAKTURY.liczba_sztuk*POZYCJE_FAKTURY.wartosc_netto*(1 00+POZYCJE_FAKTURY.podatek)/100*(100-POZYCJE_FAKTURY.upust)/100) DESC; 9. Znajd najlepszego pracownika (czyli tego, który sprzedał najwicej – uwzgldniamy tylko zapłacone faktury) SELECT TOP 1 Sum(POZYCJE_FAKTURY.liczba_sztuk*POZYCJE_FAKTURY.wartosc_netto*(1 00+POZYCJE_FAKTURY.podatek)/100*(100-POZYCJE_FAKTURY.upust)/100) AS WARTOSC_BRUTTO, PRACOWNICY.imie, PRACOWNICY.nazwisko FROM PRACOWNICY INNER JOIN (FAKTURY INNER JOIN POZYCJE_FAKTURY ON FAKTURY.faktura_id = POZYCJE_FAKTURY.faktura_id) ON PRACOWNICY.pracownik_id = FAKTURY.pracownik_id WHERE (((FAKTURY.zaplacona)=True)) GROUP BY FAKTURY.numer, FAKTURY.zaplacona, PRACOWNICY.imie, PRACOWNICY.nazwisko ORDER BY Sum(POZYCJE_FAKTURY.liczba_sztuk*POZYCJE_FAKTURY.wartosc_netto*(1 00+POZYCJE_FAKTURY.podatek)/100*(100-POZYCJE_FAKTURY.upust)/100) DESC; 10. Wywietl zestawienie, ile faktur zostało wystawionych dla kadego kontrahenta.

SELECT KONTRAHENCI.nazwa, COUNT(FAKTURY.FAKTURA_ID) AS LICZBA_FAKTUR FROM KONTRAHENCI INNER JOIN FAKTURY ON KONTRAHENCI.kontrahent_id = FAKTURY.kontrahent_id GROUP BY KONTRAHENCI.nazwa;...


Similar Free PDFs