Bazy danych dr inż. Arkadiusz Mirakowski
Początek pracy z Transact SQL (T-SQL) 153.19.7.13,1401 jkowalski nr indeksu 2
Perspektywa - tabela tymczasowa - grupowanie
Perspektywa (widok) Perspektywa (widok) = trwały zapis wyniku kwerendy 1. create view widok1 as 2. select nazwisko,miasto 3. from osoby where miasto='gdańsk' 4. select*from widok1 5. drop view widok1 4
Sortowanie wewnątrz widoku 1. create view osoby_widok5 as 2. select nazwisko, miasto from osoby 3. where miasto='gdynia' 4. order by nazwisko Sortowanie wewnątrz widoku nie jest możliwe! 5
Widok na bazie widoku Zdefiniowanie nowego widoku na podstawie już istniejącego. 1. create view osoby_widok6 as 2. select nazwisko from osoby_widok1 3. where miasto='gdańsk' 4. go 5. select*from osoby_widok6 6
Tabela tymczasowa Import wybranych kolumn do tabeli tymczasowej 1. select nazwisko,miasto 2. into #tab1 3. from osoby 4. where miasto='gdańsk' 5. select*from #tab1 osoby #tab1 Połączenie dwóch tabel oraz import wyniku połączenia do tabeli tymczasowej: 7 1. select osoby.nazwisko, osoby.miasto, wojewodztwo.nazwa_woj 2. into #tab1 3. from osoby,wojewodztwo 4. where osoby.nazwisko=wojewodztwo.nazwisko 5. select*from #tab1
Tabela tymczasowa + inner join Import wybranych kolumn do tabeli tymczasowej: 1. select nazwisko,miasto 2. into #tab1 from osoby 1 osoby #tab1 Połączenie wewnętrzne tabeli tymczasowej: z tabelą 1. select #tab1.nazwisko, #tab1.miasto 2. from #tab1 inner join wojewodztwo 3. on #tab1.nazwisko=wojewodztwo.nazwisko 2 #tab1 wojewodztwo 8
Grupowanie Tabela wejściowa: 1. select count(*) 'ilość osób',miasto 2. from osoby 3. where 4. group by miasto 1. WHERE wyszukuje rekordy (po kolei) spełniające warunek (warunki) 2. GROUP BY grupuje w/w rekordy 5. select count(*) 'ilość osób',miasto 6. from osoby 7. group by miasto 8. having miasto='gdańsk' 1. GROUP BY grupuje wszystkie rekordy 2. HAVING sprawdza warunek na grupie 9 kryterium miasto, musi być również po group by
Skrypt 1 skrypt, którego zadaniem jest wielokrotność tworzenia i wyświetlania zawartości tabeli: 1. drop table if exists test 2. go 3. create table test 4. (lp int primary key identity, 5. imie varchar(20)) 6. insert into test values 7. ('Adam'),('Ewa'),('Krzysztof') 8. go 9. select*from test 10
Skrypt 2 Tabela wejściowa: 1. drop view if exists test1 2. go 3. create view test1 as 4. select imie from test 5. go 6. select*from test1 11
Wskazówka do zadań Proszę, aby rozwiązania wszystkich zadań znajdowały się w jednym pliku, *.sql, zgodnie z poniższym wzorem: 12
ZADANIA (6)
Zadanie 18 Napisz skrypt w języku T-SQL, który będzie wielokrotnie tworzył i wyświetlał dwie tabele z zawartością dokładnie zgodną z poniższym wzorem: Lp Nazwisko Data 1 Kowalski 1998-09-01 2 Malinowska 1995-10-09 3 Nowak 1998-02-09 4 Kowalewski 1999-03-12 5 Jankowski 1999-09-01 Lp Nazwisko Miasto 1 Kowalski Sopot 2 Nowak Gdańsk 3 Malinowska Gdańsk 4 Kowalewski Gdynia 14 5 Jankowski Sopot
Zadanie 19 Napisz skrypt w języku T-SQL, który obliczy wiek wszystkich osób (za pomocą kwerendy), a wynik przedstawi zgodnie z poniższym wzorem. Nazwisko Rok urodzenia Wiek Miasto Wielokrotnie uruchamiany skrypt musi zawsze generować identyczny wynik. 15
Zadanie 20 Napisz skrypt w języku T-SQL, który obliczy wiek wszystkich osób (za pomocą widoku), a wynik przedstawi zgodnie z poniższym wzorem. Nazwisko Rok urodzenia Wiek Miasto Wielokrotnie uruchamiany skrypt musi zawsze generować identyczny wynik. 16
Zadanie 21 Napisz skrypt w języku T-SQL, który: utworzy i wyświetli dwie tabele z zadania 18, obliczy wiek wszystkich osób (za pomocą widoku), a wynik przedstawi zgodnie z poniższym wzorem: Nazwisko Wiek Miasto wyświetli nazwisko osoby najmłodszej. Wielokrotnie uruchamiany skrypt musi zawsze generować identyczny wynik. 17
Zadanie 22 Napisz skrypt w języku T-SQL, który: obliczy ilość osób mieszkających w poszczególnych miastach (za pomocą widoku), a wynik przedstawi zgodnie z poniższym wzorem: ilość mieszkańców miasto Wielokrotnie uruchamiany skrypt musi zawsze generować identyczny wynik. 18
Zadanie 23 Napisz skrypt w języku T-SQL, który: obliczy ilość osób mieszkających w poszczególnych miastach (za pomocą kwerendy+group+where) urodzonych po 1998 r., a wynik przedstawi zgodnie z poniższym wzorem: ilość mieszkańców miasto Wielokrotnie uruchamiany skrypt musi zawsze generować identyczny wynik. 19
Zadanie 24 Napisz skrypt w języku T-SQL, który: obliczy ilość osób mieszkających w poszczególnych miastach (za pomocą kwerendy+group+having) urodzonych po 1998 r., a wynik przedstawi zgodnie z poniższym wzorem: ilość mieszkańców miasto Wielokrotnie uruchamiany skrypt musi zawsze generować identyczny wynik. 20