BAZY DANYCH laboratorium 2 tworzenie bazy danych, podstawy języka SQL Wstęp Dane w relacyjnych bazach danych zapisywane są w tabelach. KaŜda tabela składa się z pół (czyli jej nagłówków) oraz rekordów (czyli wierszy). Rekord to logicznie wyodrębniony zestaw informacji związany z jednym konkretnych obiektem (np. dane teleadresowe jednej osoby). POLA REKORDY Językiem, pozwalającym na pobieranie, modyfikowanie i tworzenie informacji w bazach danych jest SQL (ang. Structured Query Language). SQL pozwala przekształcić potoczne pytania w konstrukcje zrozumiałe dla systemu zarządzania relacyjnymi bazami danych (DBMS Database Management Systems). Język SQL jest zdefiniowany przez zasady składni, która określa dopuszczalne słowa i symbole oraz sposób ich zestawiania oraz przez semantykę, która określa znaczenie konstrukcji zbudowanej poprawnie pod względem składniowym. Cel Stworzenie bazy danych na uprzednio zainstalowanej instancji serwera MS Server 2008 Express w ramach własnej maszyny wirtualnej Import danych z zewnętrznego pliku Zapoznanie się z językiem SQL w zakresie przeglądania bazy (instrukcja SELECT) Zrealizuj poszczególne kroki ćwiczenia według wytycznych jak niŝej. 1. Stworzenie własnej bazy danych Tok postępowania Uruchom aplikację SQL Server Management Studio START Wszystkie Programy Microsoft SQL Server 2008 SQL Server Management Studio Połącz się do serwera (na ekranie logowania CONNECT) lab2 1
W panelu Object Explorer przyjrzyj się dostępnym bazom danych. Stwórz nową bazę danych kliknij prawym klawiszem na Databases i wybierz New Database Nadaj nazwę nowej bazie Biblioteka Zwróć uwagę, Ŝe tworzone są dwa pliki (właściwa baza i trasaction log). Sprawdź teŝ, gdzie fizycznie znajdują się na dysku (Path). Przyjrzyj się obiektom w nowostworzonej bazie: czy są w niej jakieś tabele? jakie inne obiekty zostały stworzone automatycznie? lab2 2
2. Import danych do bazy z pliku Tok postępowania Z witryny http://www.zie.pg.gda.pl/zzti/dydaktyka_bazy_danych.htm pobierz plik Bilioteka_ZZTI.bak Przejdź do SQL Sever Management Studio; kilknij w Object Explorerze prawym klawiszem myszy na bazie Biblioteka i wybierz opcję Tasks Restore Database Upewnij się, Ŝe wybrana jest opcja To Database: Biblioteka Wybierz opcję From device i wskaŝ pobrany plik Bilioteka_ZZTI.bak (Backup media File, przycisk Add). Zanacz pole wyboru Restore lab2 3
Wybierz z panelu Select a Page drugą stronę opcji Options Zaznacz opcję Overwrite the existing database (WITH REPLACE) Kliknij OK. Tok postępowania 3. Analiza zaimportowanych danych do bazy Biblioteka Sprawdź ponownie ile tabel zawiera baza Bibiloteka Rozwiń dla kaŝdej z tabel wszystkie gałęzie drzewa zwracając uwagę szczególnie na opcję Columns Z paska opcji wybierz przycisk New Query. W oknie edytora wpisz następujące zapytanie w języku SQL: Wciśnij przycisk Execute lub klawisz F5 Ile rekordów zwróciło to zapytanie? (zwróć uwagę na dane na pasku stanu u dołu ekranu lub wybierz zakładkę Messages) W analogiczny sposób przejrzyj zawartość pozostałych dwóch tabel. lab2 4
- Ustawienie domyślnej bazy dla zapytań SQL Podczas kaŝdej operacji na Twojej bazie Biblioteka zwróć uwagę czy jest ona ustawiona na pasku narzędzi jako bieŝąca. Domyślnie zwykle bieŝącą bazą jest baza master. Ustaw dla swojego uŝytkownika domyślną bazę Biblioteka. (logujesz się jako uŝytkownik szef, w trakcie instalacji ustawione zostało uwierzytelnianie do bazy w oparciu o login systemu Windows) W ramach Object Explorer wybierz: Security Logins PG-C12B76E72A94\szef Prawy klawisz Properties opcja Default Database - Pobranie danych z tabeli (SELECT) Wprowadź kolejne zapytanie SQL, które pokaŝe w wyniku wybrane kolumny z tabeli ksiazka: SELECT Sygnatura, Autor_nazwisko, Rok_wydania, Tytul from dbo.ksiazka Uruchom zapytanie (Execute) ZauwaŜ, Ŝe wymuszasz wyświetlanie kolumn w innej kolejności, niŝ zostały one zdefiniowane tabeli. lab2 5
Wprowadź celowo do zapytania błąd składniowy np. zamiast któregokolwiek przecinka postaw średnik. Wybierz opcję Parse (ikona na pasku narzędzi: - Aliasy kolumn (AS) Dodaj do stworzonego uprzednio zapytania aliasy kolumn (alternatywne nazwy nagłówków) uŝywając słowa kluczowego AS SELECT Sygnatura AS NumerWBazie, Autor_nazwisko AS KtoNapisal, Rok_wydania AS JakBardzoStara, Tytul AS NazwaKsiazki FROM dbo.ksiazka Aliasy kolumn są nieobowiązkowe (aczkolwiek zalecane np. jeśli pola w bazie nazywane są w sposób skrótowy) - Sortowanie danych (ORDER BY) Zmodyfikuj powyŝsze zapytanie SQL do takiej postaci, by zwróciło te same dane posortowane według roku wydania rosnąco: SELECT Sygnatura AS NumerWBazie, Autor_nazwisko AS KtoNapisal, Rok_wydania AS JakBardzoStara, Tytul AS NazwaKsiazki FROM dbo.ksiazka ORDER BY Rok_wydania Dodaj na końcu sekcji ORDER BY słowo DESC: ORDER BY Rok_wydania DESC Jaki efekt został osiągnięty? Zamień w sekcji ORDER BY nazwę kolumny po której sortujesz na liczbę kolejny numer tej kolumny : ORDER BY 3 Posortuj listę ksiąŝek po dwóch polach: po roku wydania i w ramach kaŝdej roku po nazwisku autora: ORDER BY Rok_wydania, Autor_nazwisko - Eliminacja powtarzających się wartości (DISTINCT) Napisz zapytanie SQL, które pobierze z tabeli ksiazka pole Wydawnictwo: SELECT Wydawnictwo FROM dbo.ksiazka Ile rekordów zwróciło zapytanie? Posortuj wyniki tego zapytania po polu Wydawnictwo zauwaŝ, Ŝe wiele nazw wydawnictw się powtarza. Dlaczego? lab2 6
Dodaj do zapytania słowo kluczowe DISTINCT: opracowanie: mgr inŝ. Leszek Zięba, mgr inŝ. Tomasz Sitek SELECT DISTINCT Wydawnictwo FROM dbo.ksiazka Ile rekordów zwróciło zapytanie? Na podobnej zasadzie napisz zapytanie, które pokaŝe wszystkich autorów ksiąŝek w bazie. Czy takie proste usunięcie duplikatów nazwisk oznacza wyświetlenie wszystkich autorów? Jakie moŝe tu wystąpić niebezpieczeństwo? - Ograniczanie liczby wyświetlanych wyników (TOP) Wyświetl tylko pierwsze 20 rekordów z tabeli czytelnik: SELECT TOP 20 Tytul FROM dbo.ksiazka Wyświetl najtańsze 10 ksiąŝek w bazie (wskazówka: uŝyj do tego celu instrukcji sortującej oraz TOP) - Warunki w zapytaniach (WHERE) Wyświetl z tabeli czytelnik wyłącznie rekordy z danymi osób z Wydziału Zarządzania i Ekonomii (inaczej: mające w polu Wydzial wartość ZIE ) WHERE Wydzial='ZIE' Wyświetl te osoby które mają przypisany jakiś rok studiów (inaczej: mające w polu Rok_studiow jakąś wartość) WHERE Rok_studiow IS NOT NULL PokaŜ wszystkie rekordy których nie zwróciło powyŝsze zapytanie (czyli takie które nie mają w polu Rok_studiow Ŝadnej wartości WHERE Rok_studiow IS NULL PokaŜ wszystkich czytelników będących studentami i studiujących na co najmniej 4 roku: WHERE Typ_czytelnika= student AND Rok_studiow >3 PokaŜ wszystkich czytelników z Trójmiasta: WHERE Adres= Gdańsk OR Adres= Gdynia OR Adres= Sopot Alternatywny zapis powyŝszego zapytania: lab2 7
WHERE Adres IN ('Gdańsk', 'Gdynia','Sopot') PokaŜ wszystkich czytelników z Trójmiasta, którzy są studentami (wskazówka: uŝyj słów kluczowych AND I OR oraz nawiasów) Wyświetl wszystkich czytelników, których nazwiska rozpoczynają się na literę K SELECT Czytelnik_Nazwisko FROM dbo.czytelnik WHERE Czytelnik_Nazwisko LIKE K% Wyświetl ksiąŝki, których autorzy mają nazwisko kończące się ciągiem znaków ski lub ska (wskazówka: uŝyj słowa kluczowego OR) Wyświetl te file biblioteki, których ilość stanowisk czytelniczych zawiera się między 12 a 20 (uŝyj w warunkach słowa kluczowego BETWEEN) Wprowadź do wszystkich zapytań w tym ćwiczeniu słowo kluczowej NOT (będące negacją warunku) np. SELECT Czytelnik_Nazwisko FROM dbo.czytelnik WHERE Czytelnik_Nazwisko NOT LIKE K% - Tworzenie kopii tabeli (SELECT INTO) Wyświetl wszystkich czytelników, których nazwiska rozpoczynają się na literę K i zapisz wynik takiego zapytania w nowej tabeli o nazwie czytelnik2 SELECT * INTO dbo.czytelnik2 FROM dbo.czytelnik WHERE Czytelnik_Nazwisko LIKE K% Sprawdź zawartość nowej tabeli. W panelu Object Explorer wybierz przycisk Refresh i sprawdz czy nowa tabela jest widoczna w gałęzi Tables Tok postępowania 4. Analiza typów danych pól w tabelach Kliknij prawym klawiszem na dowolną tabelę i wybierz opcję Design lab2 8
Przyjrzyj się dostępnym typom danych opracowanie: mgr inŝ. Leszek Zięba, mgr inŝ. Tomasz Sitek Zmień w wybranych polach typ danych. Czy jest to operacja bezpieczna? Jakie moŝe mieć konsekwencje? Zwróć uwagę, które pole oznaczone jest w kaŝdej z tabel ikoną klucza. Źródła Fehily Ch, SQL szybki start. Błyskawiczny kurs tworzenia i zarządzania aplikacjami bazodanowymi, Helion 2003 lab2 9