- Wyświetlić zawartość tabeli
grupy_cen
według kolumny grc_rabat
rosnąco.
- Wyświetlić opis zamówień i numery klientów, którzy je składali malejąco według numeru klienta. W wyniku nie powinny się pojawić zamówienia bez wprowadzonego opisu i zamówienia klienta nr 1003.
- Wybrać bez powtórzeń numery wszystkich klientów, którzy składali zamówienia.
- Wypisać adresy e-mail wszystkich klientów, którzy mają numer kierunkowy telefonu 32.
- Wyświetlić informacje o wszystkich klientach indywidualnych w formacie: „Pan/Pani [imię] [nazwisko] mieszka pod adresem [adres].”
- Wypisać nazwy i ceny towarów, dla których w nazwie towaru znajduje się przynajmniej jedna cyfra.
- Obliczyć średnią cenę towarów ze stawką podatku 22%.
- Obliczyć, ile zamówień złożył klient o numerze 1004.
- Wyświetlić następujące informacje o wszystkich klientach: e-mail, numer telefonu, pełny adres zawierający imię, nazwisko i adres dla klientów indywidualnych, natomiast nazwę i adres dla pozostałych klientów. Wynik posortować rosnąco według kolumny zawierającej pełny adres.
- Znaleźć największą długość, jaką posiada nazwa towaru.
- Wyświetlić imię, nazwisko i PESEL w poprawnym formacie dla klientów indywidualnych.
- Wyświetlić nazwy towarów wyśrodkowane (w środku kolumny). Nazwać tę kolumnę „W środku”.
- Wyświetlić nazwy towarów w taki sposób, aby zmienić pierwsze wystąpienie litery „a” w nazwie towaru na literę „X”.
- Wypisać w jednym wierszu raport zawierający ilość towarów objętych podatkiem 22%, 7% i pozostałymi stawkami. Raport powinien wyglądać następująco:
22% 7% pozostałe
-----.---- -----------
16 5 1
- Wyświetlić aktualną datę w postaci „styczeń 24, 1999”. Niepotrzebnych spacji i zer pozbyć się przy pomocy przedrostka fm.
- Sprawdzić dzień tygodnia swoich urodzin.
- Sprawdzić, czy luty 1932 roku był przestępny.
- Ile pełnych dni upłynęło od bitwy pod Grunwaldem?
- Znaleźć minimalny czas realizacji zamówienia.
- Wypisać wszystkie zamówienia złożone w parzyste miesiące.
- Znaleźć minimalną, maksymalną i średnią cenę towarów obłożonych tymi samymi stawkami podatku.
- Obliczyć, ile niezrealizowanych zamówień złożył każdy klient. W wyniku powinni się też pojawić klienci z ilością 0.
- Znaleźć, ile razy był zamawiany każdy towar, i ile średnio, zamawiano sztuk (tylko towary, które były zamawiane przynajmniej jeden raz).
- Wyznaczyć średni czas realizacji zrealizowanych zadań dla każdego klienta, który ma zrealizowane co najmniej dwa zadania.
- Znaleźć różnice pomiędzy najniższą a najwyższą ceną.
- Znaleźć identyfikatory zamówień mające co najmniej 3 pozycje. Wypisać ilość pozycji. Wynik uporządkować według ilości pozycji rosnąco.
- Sprawdź, czy wszystkie numery zamówień są unikatowe?
- Podaj cenę najtańszego komponentu każdego złożonego towaru (numer towaru złożonego i cenę najtańszego komponentu).
- Wypisać wszystkie dane o klientach, którzy złożyli niezrealizowane dotychczas zamówienia.
- Wypisać klientów, którzy składali zamówienie w 1999 roku, oraz nazwy, ilości i ceny towarów, które zamawiali.
- Wypisać bez powtórzeń nazwy towarów zamówionych przez klientów indywidualnych z dopiskiem „”indywidualny” oraz nazwy towarów zamówionych przez klientów instytucjonalnych z dopiskiem „gospodarczy”.
- Znaleźć identyfikatory towarów, których nikt nie zamawiał w 1999 roku.
- Wypisać nazwy i ceny wszystkich towarów oraz nazwy i ceny towarów, których są składnikiem. W wyniku powinny się znaleźć wszystkie towary, nawet te, które nie są składnikami innych towarów.
- Wypisać imiona, nazwiska i nazwy klientów, oraz łączną kwotę wszystkich zrealizowanych przez nich zamówień z roku 1999 i 2000.
- Wypisz wszystkie towary, oraz łączne kwoty, jakie uzyskano z ich sprzedaży klientom instytucjonalnym. Wynik uporządkuj według łącznych kwot.
- Wypisz informację o towarach najdroższych w swoich grupach podatkowych?
- Wypisz opis zamówienia i informację o najdroższych towarach z każdego zamówienia złożonego poza rokiem 2000. Uporządkuj wyniki rosnąco według nazwy towaru.
- Wypisać pełne informacje o klientach, którzy zamawiali w 1999 roku najdroższy towar z oferty.
- Wypisz dla każdego klienta jego nazwisko, imię, nazwę i opis zamówienia, które złożył najwcześniej.
- Wypisz opisy wszystkich zamówień. Przed opisem zamówienia złożonego jako ostatnie dodaj znaczek „*”.
- Wypisz informacje o trzech najdroższych towarach.
- Na który rok przypada największa ilość złożonych zamówień? Podaj ten rok i liczbę złożonych zamówień.
- Podaj adresy pracowników, którzy zamówili towarów za większą kwotę w roku 2000 niż w roku 1999. Wypisz również dla każdego z nich łączne kwoty zamówień z 1999 roku i z 2000 roku.
- Wypisać nazwy wszystkich towarów w postaci drzewa z wcięciami, tak, żeby na najwyższym poziomie znalazły się komponenty najbardziej złożone.
- Wypisać nazwy wszystkich towarów w postaci drzewa z wcięciami, tak, żeby na najwyższym poziomie znalazły się komponenty, które nie posiadają żadnych składników.
- Utworzyć i zalogować się na własnego użytkownika.
- Utworzyć rolę, nadać tej roli uprawnienia do przeglądania tabeli student.towary.
- Nadać wcześniej utworzoną rolę własnemu użytkownikowi.
- Sprawdzić, czy utworzony użytkownik może przeglądać tabelę towary użytkownika student.
- Nadać bezpośrednio utworzonemu wcześniej użytkownikowi prawo do przeglądania tabeli student.klienci. Sprawdzić, czy użytkownik może przeglądać tabelę klienci.
Ćwiczenia 51-57 należy wykonać na stworzonym uprzednio przez siebie użytkowniku.
- Utworzyć następujące tabele wraz z ograniczeniami:
- Tabela „klasy”, do przechowywania identyfikatora klasy, nazwy klasy (np. 3b), numeru sali macierzystej.
- Tabela „uczniowie” do przechowywania identyfikatora, imienia, nazwiska, wieku ucznia oraz do przechowywania informacji o klasie, do której uczęszcza uczeń.
Na dane mają zostać nałożone następujące ograniczenia:
- Nie mogą być puste następujące kolumny: identyfikatory uczniów i klas, nazwisko ucznia, imię ucznia, nazwa klasy.
- Nie mogą się powtarzać: nazwa klasy, łącznie imię i nazwisko ucznia.
- Kluczami głównymi w tabelach powinny być identyfikatory numeryczne.
- Wiek uczniów nie może być mniejszy od 5.
- Imiona i nazwiska powinny być wpisane małymi literami z wyjątkiem pierwszej litery każdego wyrazu.
- Nie może istnieć uczeń nie przyporządkowany do żadnej klasy
- Wstawić do tabeli uczniowie 5 rekordów, a do tabeli klasy 3 rekordy.
- Dodać do tabeli klasy nową kolumnę not null do przechowywania nazwiska wychowawczyni.
- Stworzyć tabelę nazywającą się klienci2, która będzie dokładną kopią wraz z danymi tabeli klienci z użytkownika student.
- Utworzyć ze skryptu dostarczonego przez instruktora tabele takie jak na użytkowniku student.
- Usunąć z tabeli klienci klienta o identyfikatorze 1004.
- Uzupełnić wszystkie potrzebne tabele danymi tak, aby klienci Piotr Pasko złożył zamówienie z opisem „Nowe zamówienie na meble”, w skład którego będzie wchodzić szafka i 2 sztuki krzeseł.
- Otworzyć dwie sesje na swojego użytkownika. W pierwszej sesji podnieść o 1000 ceny wszystkich towarów, w drugiej sesji sprawdzić jakie są ceny towarów.
- Zatwierdzić transakcję w pierwszej sesji, sprawdzić ceny towarów w drugiej sesji.
- W pierwszej sesji obniżyć ceny towarów objętych podatkiem 22% o 100. W drugiej sesji obniżyć o 200 ceny towarów objętych podatkiem 7%. Następnie w drugiej sesji obniżyć cenę zestawu komputerowego o 1000.
- Zatwierdzić transakcję w pierwszej sesji. Co stało się w drugiej sesji?
- W pierwszej sesji podnieść ceny wszystkich towarów. W drugiej sesji zmodyfikować typ wszystkich klientów na ‘IND’. Następnie w pierwszej sesji zmienić typ wszystkich klientów na ‘GSP’, natomiast w drugiej sesji obniżyć ceny wszystkich towarów o 100.
- Utwórz perspektywę, w której będą się znajdować wszystkie informacje o klientach indywidualnych. Następnie dodaj do tej perspektywy klienta indywidualnego, sprawdź, czy się znalazł w perspektywie. Następnie dodaj do perspektywy klienta gospodarczego. Sprawdź czy rekord został wstawiony.
- Zmodyfikuj definicję perspektywy w taki sposób, aby można było wstawić do perspektywy tylko wiersze, które będą w niej widoczne.
- Utwórz sekwencję, którą będziesz używał do generowania klucza głównego w tabeli towary. Dodaj kilka towarów do tabeli używając sekwencji.
- Przejrzyj informację o obiektach których jesteś właścicielem: tabelach, indeksach, konstraintach, widokach. Przejrzyj zawartość widoku DICTIONARY.
- Napisać i wykonać prosty blok anonimowy, który wypisze napis: „Wykonałem się” na konsolę klienta. Skorzystać z procedury wbudowanej dbms_output.put_line(tekst). Należy pamiętać o włączeniu opcji SQL*Plus serveroutput.
- Zamienić powyższy blok na procedurę i wykonać ją.
- Sprawdź, jaki jest format przechowywania danych w zmiennych typu char i varchar2. Jak są przechowywane spacje?
- Utwórz i uruchom następujący blok anonimowy:
- Zadeklaruj w nim dwie zmienne typu
char(25)
i jedną zmienną typu varchar2(25)
.
- Przypisz do jednej ze zmiennych typu char wartość 'Ala ma kota', do dwu pozostałych zmiennych przypisz po pięć spacji.
- Wypisz zawartość zmiennych na konsolę korzystając z procedury
dbms_output.put_line(tekst)
.
Dla lepszego zobrazowania wyników przekształć zmienne przed wypisaniem wywołując funkcję translate:
translate(zmienna, ' ', '*')
.
- Przeanalizuj wyniki.
- Napisz i wykonaj blok PL/SQL, który wstawi do pewnej tabeli liczby podzielne przez 7 i liczby podzielne przez 13 z zakresu od jeden do tysiąca.
- Utwórz tabelę z kolumną typu
number(9)
.
- Napisz blok anonimowy, który:
- Wyczyści tę tabelę i włoży do kolumny numerycznej odpowiednie wartości zgodne z wymaganiami zadania. Skorzystaj z funkcji
mod
.
Dlaczego do czyszczenia tabeli nie mogłeś użyć polecenia truncate table?
-
Zatwierdzi transakcję.
- Policz, ile wierszy zostało wstawionych? Poprawna ilość to 208.
- Zapisz skrypt w pliku tekstowym.
- Przekształć skrypt wstawiający liczby podzielne przez 7 i liczby podzielne przez 13 na procedurę. Uruchom ją.
- Napisz funkcję, która będzie sprawdzała, czy liczba przekazana jej jako parametr jest podzielna przez 7 lub przez 13. Funkcja powinna zwracać fałsz lub prawdę.
- Zmodyfikuj i uruchom procedurę z ćwiczenia 71, w taki sposób, aby wykorzystywała funkcję napisaną w ćwiczeniu 72.
- Zmodyfikuj i uruchom procedurę z poprzedniego ćwiczenia w taki sposób, aby miała ona trzy parametry: pierwszy i drugi mają określać zakres, z jakiego liczby mają być wstawiane do tabeli, trzeci ma być parametrem wyjściowym, w którym po wykonaniu się procedury powinna się znaleźć ilość wstawionych do tabeli elementów.
- Napisz procedurę, dzięki której dowiesz się jaki numer błędu i jaki komunikat jest generowany w momencie, gdy następuje próba wprowadzenia do zmiennej typu data wartości spoza dopuszczalnego zakresu dat. W tym celu zadeklaruj zmienną typu data, przypisz jej datę dzisiejszą, a następnie w pętli nieskończonej zwiększaj datę o 1000 dni. W pewnym momencie wystąpi błąd. Przechwyć go i wyświetl numer i komunikat.
- Napisać procedurę, która wypisze na konsolę raport obejmujący wszystkie zamówienia w postaci:
Lp Opis Zamówiono Zrealizowano
--------------------------------------------------
1 Zestaw komputerowy 2000.12.10
2 Meble biurowe 2000.05.08 2000.05.12
3 Wyposażenie biura 1999.03.01 2000.05.30
...
...
-------------------------------------------------
Ilość zamówień zrealizowanych: 9
Ilość zamówień nie zrealizowanych: 3
Skorzystać z kursora opartego na tabeli zamowienia
.
- Zmodyfikować poprzednio napisany blok, w taki sposób, aby raport przyjął postać:
KLIENT: Jan Kowalski
Lp Opis Zamówiono Zrealizowano
----------------------------------------------------
1 Zestaw komputerowy 2000.12.10
----------------------------------------------------
Ilość zamówień zrealizowanych: 0
Ilość zamówień nie zrealizowanych: 1
KLIENT: Biuro nieruchomości „Swój domek”
Lp Opis Zamówiono Zrealizowano
----------------------------------------------------
1 Akcesoria komputerowe 2000.07.26 2000.07.29
...
...
------------------------------
Ilość zamówień zrealizowanych: 9
Ilość zamówień nie zrealizowanych: 3
...
...
- Stworzyć kursor oparty na tabeli klienci oraz kursor z parametrem oparty na tabeli zamowienia.
- Zmodyfikować procedurę z pierwszego ćwiczenia, w taki sposób, aby do procedury było przekazywane jako parametr nazwisko klienta lub jego nazwa. Procedura powinna wypisywać tylko zamówienia wskazanego klienta. Jeżeli nie istnieje żaden klient o podanym nazwisku, powinien zostać wypisany odpowiedni komunikat o błędzie: „Podany klient nie istnieje”.
- Utwórz pakiet, który będzie zawierał funkcję i procedurę do wstawiania liczb podzielnych przez 7 i 13, które zostały utworzone w poprzednich ćwiczeniach. Procedura powinna być publiczna, a funkcja powinna być prywatna. Uruchom procedurę i spróbuj uruchomić funkcję.
- Napisać wyzwalacz, który będzie odnotowywał wszystkie operacje DML wykonane na tabeli towary.
- Utworzyć tabelę tglog składającą się z kolumn do przechowywania nazwy użytkownika, czasu, typu operacji, numeru towaru, na którym wykonano operację.
- W odpowiednio zapisanym wyzwalaczu umieścić instrukcję
INSERT
, która zanotuje wszystkie operacje wykonane na tabeli towary w tabeli test.
- Napisz wyzwalacz, który niezależnie od polecenia
INSERT
wykonywanego przez użytkowników zawsze będzie wpisywał do tabeli towary nazwy towarów małymi literami zaczynające się tylko od dużej litery.
- Napisz wyzwalacz, który nie pozwoli zmniejszyć ceny żadnemu towarowi objętemu stawką podatku 7%.
- Napisz wyzwalacz, który nie pozwoli żadnemu użytkownikowi stworzyć tabeli, w której będzie się znajdowała kolumna typu
LONG
.