Informatyka sem. III studia inżynierskie Transport 2018/19 Lab 2 LAB 2 1. Backup bazy danych Tworzenie kopii (backup) bazy danych
Odtwarzanie bazy z kopii (z backup u) 1. Pobieramy skrypt Restore 2. Pobieramy Biblioteka4.bak 3. Rozpakowujemy plik.zip otrzymując plik.bak (backup bazy danych) 4. Uruchamiamy skrypt RESTORE FILELISTONLY FROM DISK ='c:\wyklady\lab2\biblioteka_zzti.bak' 5. Odczytujemy LogicalName pliku _Data i pliku _Log 6. Uruchamiamy skrypt RESTORE DATABASE Biblioteka FROM DISK ='c:\wyklady\lab2\biblioteka_zzti.bak' WITH MOVE 'Biblioteka' TO 'C:\wyklady\lab2\bib_Data.mdf', MOVE 'Biblioteka_Log' TO 'c:\wyklady\lab2\bib_log.ldf' 7. Powtarzamy 4-5 w odniesieniu do backupu Firma.bak RESTORE FILELISTONLY FROM DISK ='c:\wyklady\lab2\firma.bak' RESTORE DATABASE Firma6 FROM DISK ='c:\wyklady\lab2\firma.bak' WITH MOVE 'Firma' TO 'C:\wyklady\lab2\fir_Data.mdf', MOVE 'Firma_Log' TO 'c:\wyklady\lab2\fir_log.ldf' GO
Generowanie skryptów
2. Projekt bazy danych Analiza wymagań Firma prowadzi sprzedaż towarów poprzez sieć hurtowni w różnych miastach. Klienci kupują towary. Hurtownie wystawiają faktury. Projekt schematu bazy danych Plik schemat6.sql zawiera polecenia SQL tworzące bazę o schemacie przedstawionym na Rys.1. platnosc * id id_faktury kwota data_wplaty klient id imie nazwisko NIP miasto rabat faktura * id numer id_klienta data_wystawienia data_sprzedazy kwota id_hurtowni hurtownia id nazwa NIP miasto towar id nazwa cena pozycja id id_faktury id_towaru ilosc cena Rys. 1. Schemat bazy danych Sprzedaz Zasilenie bazy danych danymi Plik dane6.sql zawiera instrukcje INSERT INTO, które wstawiają przykładowe dane.
Uruchamianie skryptów Use Biblioteka INSERT INTO Wypozyczenie (id_czytelnika,id_sygnatury,data_wypozyczenia,termin_zwrotu,data_zwrotu) VALUES (1,10,'2017-10-01','2017-10-15','2017-10-12') INSERT INTO Wypozyczenie (id_czytelnika,id_sygnatury,data_wypozyczenia,termin_zwrotu,data_zwrotu) VALUES (2,12,'2017-10-01','2017-10-16','2017-10-11') INSERT INTO Wypozyczenie (id_czytelnika,id_sygnatury,data_wypozyczenia,termin_zwrotu) VALUES (3,13,'2017-10-01','2017-10-10') INSERT INTO Wypozyczenie (id_czytelnika,id_sygnatury,data_wypozyczenia,termin_zwrotu) VALUES (4,18,'2017-10-01','2017-10-10') UPDATE Czytelnik SET Imie= Andrzej WHERE Nazwisko = Kowalski UPDATE Czytelnik SET Imie= Andrzej WHERE ID = 5
Diagram bazy danych
3. Zapytania SQL Przykładowe zapytania: 1. Wyszukaj najlepiej sprzedający się towar (ilość) 2. Wyszukaj najlepiej sprzedający się towar (łączna kwota) 3. Ranking klientów pod względem wydanych kwot 4. Wyszukaj klientów zadłużonych 5. Wyszukaj klientów mających nadpłatę 6. Pokaż łączne kwoty wystawionych faktur z podziałem na hurtownie w poszczególnych miesiącach Kategorie zapytań (nieformalna klasyfikacja): 1. Lista uporządkowana (SELECT ORDER BY) AS, ASC/DESC, DISTINCT, TOP 10 2. Lista uporządkowana z warunkiem (SELECT WHERE ORDER BY) IS NULL/IS NOT NULL, BETWEEN 3. Lista uporządkowana z warunkiem złożonym (będącym sumą logiczną / iloczynem logicznym innych warunków) (SELECT WHERE (OR/AND) ORDER BY) 4. Lista uporządkowana z użyciem operatora LIKE w warunku 5. Lista uporządkowana z użyciem operatora NOT IN / IN w warunku 6. Lista uporządkowana zawierająca kolumny z więcej niż jednej tabeli (INNER JOIN) 7. Lista uporządkowana zawierająca kolumny z więcej niż jednej tabeli (LEFT/RIGHT OUTER JOIN) 8. Lista uporządkowana z warunkiem opartym na wyniku zapytania zagnieżdżonego 9. Lista uporządkowana z kolumną będącą wynikiem zapytania zagnieżdżonego 10. Lista z użyciem funkcji MONTH()/ YEAR()/ DAY() 11. Lista z użyciem funkcji operujących na datach DateADD/ DateDIFF 12. Lista uporządkowana z operatorem UNION 13. Lista uporządkowana z operatorem INTERSECT 14. Lista uporządkowana z operatorem EXCEPT 15. Lista z użyciem funkcji agregującej SUM() (SELECT.. GROUP BY ) 16. Lista z użyciem funkcji agregującej COUNT() (SELECT.. GROUP BY ) 17. Lista z użyciem funkcji agregującej AVG(), MIN(), MAX() (SELECT.. GROUP BY ) 18. Lista z użyciem funkcji agregującej i opóźnionym warunkiem (SELECT..GROUP BY HAVING) 19. Lista z użyciem widoku, CASE WHEN END, IIF(,,) 20. Lista z użyciem PIVOT
SELECT
JOIN Łączenie tabel select * from czytelnik 5 rekordów select nazwisko,imie,akronim from czytelnik,wydzial iloczyn kartezjański 5 x 4 = 20 rekordów
select nazwisko,imie,akronim from czytelnik inner join wydzial on wydzial.id=czytelnik.id_wydzialu 4 rekordy! select nazwisko,imie,akronim from czytelnik left outer join wydzial on wydzial.id=czytelnik.id_wydzialu select nazwisko,imie,akronim from czytelnik right outer join wydzial on wydzial.id=czytelnik.id_wydzialu select nazwisko,imie,akronim from czytelnik full outer join wydzial on wydzial.id=czytelnik.id_wydzialu
UNION, EXCEPT, INTERSECTION Suma, Różnica, Iloczyn zbiorów Funkcje agregujące