Professional Documents
Culture Documents
2.2 Wywietl zawarto kolumn nazwisko i imi z tabeli pracownik. Wynik posortuj rosnco (leksykograficznie)
wzgldem nazwiska i imienia.
2.3 Wywietli zawarto kolumn nazwisko, dzia, stanowisko z tabeli pracownik. Wynik posortuj rosnco wzgldem
dziau, a dla tych samych nazw dziaw malejco wzgldem stanowiska.
3.2 Wywietli unikatowe wiersze zawierajce wartoci kolumn dzia i stanowisko w tabeli pracownik.
3.3 Wywietli unikatowe wiersze zawierajce wartoci kolumn dzia i stanowisko w tabeli pracownik. Wynik posortuj
malejco wzgldem dziau i stanowiska.
4.3 Wywietli imiona, nazwiska, pensje pracownikw, ktrzy zarabiaj powyej 1500 z. Wynik posortuj malejco
wzgldem pensji.
5.2 Znale pracownikw pracujcych w dziale technicznym na stanowisku kierownika lub sprzedawcy. Wywietl
imi, nazwisko, dzia, stanowisko.
6.2 Znajd pracownikw o imionach Anna, Marzena i Alicja. Wywietl ich imiona, nazwiska i daty zatrudnienia.
6.3 Znajd klientw, ktrzy nie mieszkaj w Warszawie lub we Wrocawiu. Wywietl ich imiona, nazwiska i miasta
zamieszkania.
7 Predykat LIKE
7.1 Wywietli imiona i nazwiska klientw, ktrych nazwisko zawiera liter K.
7.2 Wywietli imiona i nazwiska klientw, dla ktrych nazwisko zaczyna si na D, a koczy si na SKI.
7.3 Znale imiona i nazwiska klientw, ktrych nazwisko zawiera drug liter O lub A.
8 Predykat BETWEEN
8.1 Z tabeli samochd wywietli wiersze, dla ktrych pojemno silnika jest z przedziau [1100,1600].
8.2 Znale pracownikw, ktrzy zostali zatrudnieni pomidzy datami 1997-01-01 a 1997-12-31.
8.3 Znale samochody, dla ktrych przebieg jest pomidzy 10000 a 20000 km lub pomidzy 30000 a 40000 km.
9 Warto NULL
9.1 Znale pracownikw, ktrzy nie maj okrelonego dodatku do pensji.
9.3 Dla kadego pracownika wywietl imi, nazwisko i wysoko dodatku. Warto NULL z kolumny dodatek powinna
by wywietlona jako 0. Wskazwka: Uyj funkcji COALESCE.
10.2 Dla kadego pracownika wywietl imi, nazwisko i wyliczeniow kolumn nowa_pensja, ktra bdzie miaa o
50% wiksz warto ni dotychczasowa pensja.
10.3 Dla kadego pracownika oblicz ile wynosi 1% zarobkw (pensja + dodatek). Wywietl imi, nazwisko i obliczony
1%. Wyniki posortuj rosnco wzgldem obliczonego 1%.
11.2 Wywietl pierwszych czterech pracownikw z alfabetycznej listy (nazwiska i imiona) wszystkich pracownikw.
(W tym zadaniu nie musisz si przejmowa powtrkami imion i nazwisk, ale gdyby chcia to sprawd konstrukcj
SELECT TOP x WITH TIES )
12.2 Dla kadego pracownika (imi i nazwisko) oblicz ile ju pracuje dni. Wynik posortuj malejco wedug iloci
przepracowanych dni.
12.3 Dla kadego samochodu (marka, typ) oblicz ile lat upyno od jego produkcji. Wynik posortuj malejco po iloci
lat.
13.2 Wywietl imiona i nazwiska klientw w taki sposb, aby pierwsza litera imienia i nazwiska bya wielka, a
pozostae mae.
13.3 Wywietl imiona, nazwiska i numery kart kredytowych klientw. Kada z ostatnich szeciu cyfr wywietlanego
numeru karty kredytowej klienta powinna by zastpiona znakiem x .
14.3 Zwiksz o 100 z dodatek pracownikom, ktrych pensja jest mniejsza ni 1500 z.
15.2 Usun wszystkie informacje o wypoyczeniach dla klienta o identyfikatorze rwnym 17.
16.2 Dodaj do bazy danych nowy samochd o identyfikatorze rwnym 50: srebrna skoda octavia o pojemnoci silnika
1896 cm3 wyprodukowana 1 wrzenia 2012 r. i o przebiegu 5 000 km.
17.2 Wyszukaj klientw, ktrzy nie zwrcili jeszcze samochodu. (Data oddania samochodu ma mie warto NULL.)
Wywietl imi i nazwisko klienta oraz identyfikator samochodu i dat wypoyczenia nie zwrconego jeszcze
samochodu. Wynik posortuj rosnco wzgldem nazwiska i imienia klienta.
17.3 Wrd klientw wypoyczalni wyszukaj daty i kwoty wpaconych przez nich kaucji. Wywietl imi i nazwisko
klienta oraz dat wpacenia kaucji (data wypoyczenia samochodu jest rwnoczenie dat wpacenia kaucji) i jej
wysoko (pomi kaucje majce warto NULL).
18.2 Dla kadej filii wypoyczalni samochodw (tabela miejsce) wyszukaj jakie samochody byy wypoyczane.
Wywietl adres filii (ulica i numer) oraz mark i typ wypoyczonego samochodu. Wyniki posortuj rosnco wzgldem
adresu filii, marki i typu samochodu.
18.3 Dla kadego wypoyczonego samochodu wyszukaj informacj jacy klienci go wypoyczali. Wywietl
identyfikator, mark i typ samochodu oraz imi i nazwisko klienta. Wyniki posortuj rosnco po identyfikatorze
samochodu oraz nazwisku i imieniu klienta.
20.2 Dla kadego samochodu (identyfikator, marka, typ) oblicz ilo wypoycze. Wynik posortuj rosnco wzgldem
iloci wypoycze. (Nie zapomnij o samochodach, ktre ani razu nie zostay wypoyczone.)
21.2 Znajd samochody, ktre byy wypoyczone co najmniej 5 razy. Wywietl identyfikator samochodu, mark, typ i
ilo wypoycze. Wynik posortuj rosnco wzgldem marki i typu samochodu.
21.3 Znajd pracownikw, ktrzy klientom wypoyczyli co najwyej 20 razy samochd. Wywietl imiona i nazwiska
pracownikw razem z iloci wypoycze. Wynik posortuj rosnco wzgldem iloci wypoycze, nazwiska i imienia
pracownika. (Uwzgldnij pracownikw, ktrzy nie wypoyczyli adnego samochodu.)
22.2 Wywietl pracownikw (imiona, nazwiska, pensje), ktrzy zarabiaj powyej redniej pensji.
22.3 Wyszukaj samochd (marka, typ, data produkcji), ktry zosta wyprodukowany najwczeniej. Moe si tak
zdarzy, e kilka samochodw zostao wyprodukowanych w ten sam "najwczeniejszy" dzie.
23.2 Wywietl klientw (imi i nazwisko), ktrzy do tej pory nie wypoyczyli adnego samochodu. Wynik posortuj
rosnco wzgldem nazwiska i imienia klienta.
23.3 Znale pracownikw (imi i nazwisko), ktrzy do tej pory nie wypoyczyli adnego samochodu klientowi.
24.2 Znajd klienta/klientw (id_klient, imie, nazwisko), ktrzy najrzadziej wypoyczali samochody. Wynik posortuj
rosnco wzgldem nazwiska i imienia. Nie uwzgldniaj klientw, ktrzy ani razu nie wypoyczyli samochodu.
24.3 Znajd pracownika/pracownikw (id_pracownik, nazwisko, imie), ktry wypoyczy najwicej samochodw
klientom. Wynik posortuj rosnco (leksykograficznie) wzgldem nazwiska i imienia pracownika.
25.3 Obniy pensje o 5% wszystkim pracownikom ktrzy nie wypoyczyli klientowi samochodu w 1999 roku.
27.2 Wywietl powtarzajce si imiona i nazwiska klientw i pracownikw. (Cz wsplna dwch zbiorw.)
27.3 Wywietl imiona i nazwiska klientw, ktrzy nazywaj si inaczej ni pracownicy. (Rnica dwch zbiorw.)
Wynik posortuj wzgldem nazwiska i imienia.
29.3 Dane s tabele: CREATE TABLE kraj2(id_kraj INT IDENTITY(1,1) PRIMARY KEY, nazwa VARCHAR(30));
CREATE TABLE gatunek2(id_gatunek INT IDENTITY(1,1) PRIMARY KEY, nazwa VARCHAR(30));
CREATE TABLE zwierze2(id_zwierze INT IDENTITY(1,1) PRIMARY KEY, id_gatunek INT, id_kraj INT, cena MONEY);
Zmodyfikuj powysze tabele:
* kolumny nazwa z tabel kraj2 i gatunek2 maj by niepuste,
* kolumna id_gatunek z tabeli zwierze2 jest kluczem obcym z tabeli gatunek2,
* kolumna id_kraj z tabeli zwierze2 jest kluczem obcym z tabeli kraj2.
30.2 Dana jest tabela: CREATE TABLE osoba2(id_osoba INT, imie VARCHAR(15), imie2 VARCHAR(15) );
Napisa instrukcj SQL, ktra z tabeli osoba2 usunie kolumn imie2.
30.3 Dana jest tabela: CREATE TABLE uczen2(id_uczen INT PRIMARY KEY, imie VARCHAR(15), nazwisko VARCHAR(20)
CONSTRAINT uczen_nazwisko_unique UNIQUE);
Napisa instrukcj SQL, ktra usunie narzucony warunek unikatowoci na kolumn nazwisko.
Wersja trudniejsza: Czy potrafiby zrobi powysze zadanie dla definicji tabeli: CREATE TABLE uczen2(id_uczen INT
PRIMARY KEY, imie VARCHAR(15), nazwisko VARCHAR(20) CONSTRAINT UNIQUE); ?
31.2 Dane s tabele: CREATE TABLE film2(id_film INT PRIMARY KEY,tytul VARCHAR(50) NOT NULL);
CREATE TABLE gatunek2(id_gatunek INT PRIMARY KEY,nazwa VARCHAR(50) NOT NULL);
CREATE TABLE film2_gatunek2(id_film INT,id_gatunek INT,PRIMARY KEY(id_film,id_gatunek));
Zmodyfikuj struktur powyszych tabel (polecenie ALTER) taka aby:
a) w przypadku usunicia filmu z tabeli film2 zostay automatycznie usuwane informacje jakich gatunkw by
usunity film (nie usuwamy gatunkw z tabeli gatunek2),
b) w przypadku usunicia gatunku z tabeli gatunek2 zostay automatycznie usuwane informacje jakie filmy byy tego
gatunku (nie usuwamy filmw z tabeli film2).
31.3 Dane s tabele: CREATE TABLE stanowisko2 (id_stanowisko INT PRIMARY KEY, nazwa VARCHAR(30));
CREATE TABLE pracownik2(id_pracownik INT PRIMARY KEY, id_stanowisko INT, nazwisko VARCHAR(20));
Zmodyfikuj struktury powyszych tabel tak, aby po usuniciu stanowiska z tabeli stanowisko2 identyfikator
32.2 Napisa procedur o nazwie zwieksz_pensje posiadajc dwa parametry: identyfikator pracownika i kwot.
Procedura powinna zwikszy pensj pracownikowi, na ktrego wskazuje zadany identyfikator o zadan kwot.
Przetestuj utworzon procedur zwiksz pracownikowi o identyfikatorze rwnym 1 pensj o 1000 z.
32.3 Napisz procedur o nazwie dodaj_klienta umoliwiajc dodanie nowego klienta. Dane klienta powinny by
odczytane z parametrw procedury. Dobierz odpowiednio parametry dla tworzonej procedury na podstawie kolumn
tabeli klient. Przetestuj utworzon procedur dodaj nowego klienta.
33.2 Napisa funkcj o nazwie ile_wypozyczen posiadajc dwa parametry data_od i data_do. Funkcja powinna
zwrci ilo wypoycze samochodw w zadanym przedziale czasowym. Przetestuj utworzon funkcj sprawd ile
zostao wypoyczonych samochodw od 01.01.2000r. do 31.12.2000r.
33.3 Napisa funkcj o nazwie roznica_pensji nie posiadajc parametrw i zwracajc rnic pomidzy najwiksz i
najmniejsz pensj wrd pracownikw wypoyczalni. Przetestuj utworzon funkcj.
34.2 Utwrz widok o nazwie samochod_raport zawierajcy informacje o iloci wypoycze kadego z samochodw
(id_samochod, marka, typ). Uwzgldnij samochody, ktre ani razu nie zostay wypoyczone. Za pomoc utworzonego
widoku znajd samochd/samochody, ktre byy najczciej wypoyczane.
34.3 Utwrz widok o nazwie pracownik_raport zawierajcy informacje o iloci wypoycze samochodw przez
pracownikw. Nie zapomnij uwzgldni pracownikw, ktrzy nie wypoyczyli adnego samochodu. Za pomoc
utworzonego widoku znajd pracownikw, dla ktrych ilo wypoycze jest wiksza od redniej iloci wypoycze
samochodw przez pracownikw.
35.3 Utwrz indeks nieklastrowy dla kolumn marka i typ w tabeli samochd.
36.2 Napisa wyzwalacz, ktry uniemoliwi dodanie pracownika z pensj lub dodatkiem rwnym zero lub NULL.
Przetestuj utworzony wyzwalacz sprbuj doda kilku pracownikw jednoczenie.
36.3 Napisa wyzwalacz o nazwie "duplikat_miejsce", ktry uniemoliwi jednorazowo dodanie wicej ni jednego
miejsca oraz dodatkowo uniemoliwi dodanie miejsca o takich samych ulicach, numerze, miecie i kodzie.
37.2 Utwrz wyzwalacz o nazwie "usun_miejsce_i_wypozyczenia", ktry uniemoliwi usunicie rwnoczenie wicej
ni 1 miejsca z tabeli miejsce oraz przed usuniciem pojedynczego miejsca usunie najpierw wszystkie rekordy w tabeli
wypoyczenie zawierajce informacj o usuwanym miejscu (id_miejsca_wyp, id_miejsca_odd).
Przetestuj napisany wyzwalacz.
37.3 Utwrz wyzwalacz o nazwie "samochod_blokada", ktry uniemoliwia wprowadzenie jakiejkolwiek zmiany w
tabeli samochd. Przetestuj utworzony wyzwalacz dla instrukcji INSERT, UPDATE, DELETE.
38 Wyzwalacze i kursory
38.1 Napisa wyzwalacz, ktry bdzie wypisywa na ekranie nazwiska i imiona usunitych pracownikw. Uyj kursora.
Przetestuj utworzony wyzwalacz usu wszystkich pracownikw.
38.2 Stwrz tabel o nazwie samochod_delete o identycznej strukturze jak tabela samochd.
Napisz wyzwalacz, ktry wszystkie usunite samochody z tabeli samochd wpisze do tabeli samochod_delete.
Przetestuj utworzony wyzwalacz usu z tabeli samochd samochody o identyfikatorach z przedziau od 1 do 4.
38.3 Napisa wyzwalacz, ktry po podwyce pensji pracownikowi bdzie zerowa jego dodatek.
Przetestuj utworzony wyzwalacz pracownikom o identyfikatorach rwnych 1, 2 i 3 zwiksz pensj o 200 z.
39 Widoki + CASE
39.1 Utwrz widok o nazwie ocena_klienta, ktry dla kadego klienta (id_klient, imie, nazwisko) wywietli informacj,
czy to jest stay klient (czyli wypisze sowo TAK lub NIE jako warto kolumny "staly_klient").
Przyjmijmy, e stay klient to taki, ktry wypoyczy co najmniej dwa razy samochd.
Uyj powyszego widoku i wypisz staych klientw sortujc wynik alfabetycznie po nazwisku i imieniu klienta.
39.3 Utwrz widok o nazwie "pracownik_informacje", ktry wywietla o kadym pracowniku takie informacje jak:
a) id_pracownik, b) imie, c) nazwisko, d) kolumna wyliczeniowa "staz_pracy", czyli dugo zatrudnienia w latach,
e) kolumna wyliczeniowa "wypozyczenia", czyli cakowita ilo wypoycze samochodw, f) kolumna wyliczeniowa
"dodatek" z wartociami TAK/NIE/BRAK (TAK gdy dodatek>0, NIE gdy dodatek=0, BRAK w pozostaych przypadkach).
Przetestuj utworzony widok wyszukujc pracownikw, dla ktrych dodatek nie zosta przyznany.
40.2 Napisa procedur o nazwie "usun_klucze_obce", ktra z biecej bazy danych usunie wszystkie klucze obce.
Przetestuj dziaanie utworzonej procedury.
Wsk 1: SELECT * FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS;
40.3 Napisa procedur o nazwie "klient_dodaj_kolumne_rabat", ktra sprawdza czy w tabeli klient istnieje kolumna
o nazwie "rabat", jeli nie to dodaje j do tabeli klient. Kolumna "rabat" powinna by typu INT i przyjmowa
domylnie warto 0. Wszyscy istniejcy klienci w tabeli klient powinni mie ustawion warto rabatu na 0.
Przetestuj dziaanie procedury.
40.4 Napisa procedur o nazwie "baza_reset" posiadajc jeden parametr, ktry jest nazw bazy danych.
Procedura ma usun zadan baz danych (o ile taka istnieje) i utworzy j na nowo.
Przetestuj dziaanie procedury.
40.5 Napisa procedur o nazwie "tabele_statystyka", ktra dla biecej bazy danych wywietli w formie
tabelarycznej informacj o wszystkich tabelach znajdujcych si w biecej bazie danych oraz iloci rekordw w
kadej z tych tabel. Przyjmij, e kolumny uzyskanego zestawienia bd mie nazwy: nazwa_tabeli, ilosc_rekordow.
Przetestuj dziaanie utworzonej procedury.
41.2 Jakim skrtem klawiszowym zakomentowa/odkomentowa fragment kodu T-SQL pisanym w SQL Server
Management Studio.
2.1 SELECT imie, nazwisko, pensja FROM pracownik ORDER BY pensja DESC;
5.1 SELECT imie, nazwisko, dzial, stanowisko FROM pracownik WHERE dzial='obsuga klienta' AND
stanowisko='sprzedawca';
7.1 SELECT imie, nazwisko FROM klient WHERE nazwisko LIKE '%k%';
8.1 SELECT * FROM samochod WHERE poj_silnika BETWEEN 1100 AND 1600;
11.1 SELECT TOP 1 imie, nazwisko FROM pracownik ORDER BY data_zatr ASC;
22.1 SELECT imie, nazwisko, pensja FROM pracownik WHERE pensja=(SELECT MAX(pensja) FROM pracownik);
23.1 SELECT marka, typ, data_prod FROM samochod WHERE id_samochod NOT IN (SELECT DISTINCT id_samochod
FROM wypozyczenie);
25.1 UPDATE pracownik SET pensja=1.1*pensja WHERE pensja < (SELECT AVG(pensja) FROM pracownik);
26.1 DELETE FROM klient WHERE id_klient NOT IN (SELECT DISTINCT id_klient FROM wypozyczenie);
29.1 ALTER TABLE student2 ALTER COLUMN nazwisko VARCHAR(20) NOT NULL;
ALTER TABLE student2 ADD CONSTRAINT unikatowy_nr_indeksu UNIQUE (nr_indeksu);
ALTER TABLE student2 ADD CONSTRAINT sprawdz_stypendium CHECK (stypendium>=1000);
ALTER TABLE student2 ADD imie VARCHAR(15) NOT NULL;
GO
DELETE FROM klient;