﻿Język SQL. Przyjazny podręcznik, wydanie 2, wydawnictwo Helion SA, 2017

.

Instrukcje SQL dla Oracle



- - - - - - — - - - - - - - - - - - - -
JAK KORZYSTAĆ Z TEGO PLIKU
- - - - - - — - - - - - - - - - - - - -




Znajdziesz tu wszystkie instrukcje SQL o składni dedykowanej dla Oracle, które zamieszczono w książce „Język SQL. Przyjazny podręcznik”. 

Wśród nich znajdziesz również takie, które umożliwią Ci utworzenie tych samych struktur danych, do których występują odwołania w tej książce. Dzięki temu będziesz mógł uruchomić każde z poniższych zapytań i zobaczyć jego wyniki.

Zanim przystąpisz do tworzenia struktur bazodanowych, wypełniania ich danymi i uruchamiania zapytań, będziesz musiał zainstalować jeden komponent: 

1) Oracle Database Express Edition

W dodatku C do książki „Język SQL. Przyjazny podręcznik” znajdziesz instrukcje ich poprawnej instalacji, a także wskazówki odnośnie tworzenia bazy danych.

Aby zobaczyć wynik danego zapytania umieszczonego w tym pliku, wystarczy je skopiować, wkleić w oknie przeznaczonym do wpisywania zapytań w Oracle Database Express i uruchomić.

W tym pliku znajdziesz:

1) Skrypt do tworzenia tabel oraz umieszczania w nich danych, bądź ich usuwania

Skryptu należy użyć do utworzenia struktr bazodanowych oraz wstawienia do nich danych. Wówczas możliwe będzie wykonanie znajdujących się w książce zapytań. Znajdują się w nim polecenia CREATE TABLE za pomocą których zostaną utworzone tabele, instrukcje ze słowem kluczowym INSERT umożliwiające wstawienie do nich danych, a także polecenia DROP TABLE dające możliwość usunięcia tabeli z bazy danych, jeśli dana tabela już w niej istnieje i chcielibyśmy zastąpić ją inną. Jak już wspomniano, przed uruchomieniem poniższego skryptu konieczne będzie utworzenie bazy danych. Gdy już powstanie, wystarczy skopiować cały skrypt i umieścić go w oknie przeznaczonym do tworzenia zapytań i uruchomić.

2) Instrukcje SQL z książki

W tej sekcji znajdziesz wszystkie instrukcje SQL zamieszczone w kolejnych rozdziałach książki, o składni dedykowanej dla Oracle. Jeśli dane zapytanie nie miało zastosowania w przypadku tej bazy danych, zostało pominięte. W rozdziałach 1., 16., 19. oraz 20. nie umieszczono żadnych instrukcji SQL.


- - - - - - — - - - - - - - - - - - - -
SKRYPT DO TWORZENIA TABEL I UMIESZCZANIA W NICH DANYCH
- - - - - - — - - - - - - - - - - - - -



-- Tabela Klienci:

DROP TABLE Klienci;

CREATE TABLE Klienci
(IDKlienta INT NOT NULL,
ImięKlienta VARCHAR(30) NULL,
NazwiskoKlienta VARCHAR(30) NULL);

INSERT INTO Klienci (IDKlienta, ImięKlienta, NazwiskoKlienta)
VALUES (1, 'Sylwia', 'Dudziak');

INSERT INTO Klienci (IDKlienta, ImięKlienta, NazwiskoKlienta)
VALUES (2, 'Ryszard', 'Wieczorek');

INSERT INTO Klienci (IDKlienta, ImięKlienta, NazwiskoKlienta)
VALUES (3, 'Paweł', 'Janas');

INSERT INTO Klienci (IDKlienta, ImięKlienta, NazwiskoKlienta)
VALUES (4, 'Szymon', 'Majkowski');

-- Tabela Sprzedaż:

DROP TABLE Sprzedaż;

CREATE TABLE Sprzedaż
(IDSprzedaży INT NOT NULL,
ImięKlienta VARCHAR(30) NULL,
NazwiskoKlienta VARCHAR(30) NULL,
ZakupionaIlość INT NULL,
CenaZaSztukę FLOAT NULL);

INSERT INTO Sprzedaż (IDSprzedaży, ImięKlienta, NazwiskoKlienta, ZakupionaIlość, CenaZaSztukę)
VALUES (1, 'Andrzej', 'Lipkowski', 4, 2.5);

INSERT INTO Sprzedaż (IDSprzedaży, ImięKlienta, NazwiskoKlienta, ZakupionaIlość, CenaZaSztukę)
VALUES (2, 'Karolina', 'Bielska', 10, 1.25);

INSERT INTO Sprzedaż (IDSprzedaży, ImięKlienta, NazwiskoKlienta, ZakupionaIlość, CenaZaSztukę)
VALUES (3, 'Janusz', 'Solecki', 5, 4);

-- Tabela Produkty:

DROP TABLE Produkty;

CREATE TABLE Produkty
(IDProduktu INT NOT NULL,
Opis VARCHAR(30) NULL,
Waga INT NULL);

INSERT INTO Produkty (IDProduktu, Opis)
VALUES (1, 'Drukarka A');

INSERT INTO Produkty (IDProduktu, Opis, Waga)
VALUES (2, 'Drukarka B', 0);

INSERT INTO Produkty (IDProduktu, Opis, Waga)
VALUES (3, 'Monitor C', 2);

INSERT INTO Produkty (IDProduktu, Opis, Waga)
VALUES (4, 'Laptop D', 4);

-- Tabela Sprzedawcy:

DROP TABLE Sprzedawcy;

CREATE TABLE Sprzedawcy
(IDSprzedawcy INT NOT NULL,
ImięSprzedawcy VARCHAR(30) NULL,
NazwiskoSprzedawcy VARCHAR(30) NULL);

INSERT INTO Sprzedawcy (IDSprzedawcy, ImięSprzedawcy, NazwiskoSprzedawcy)
VALUES (1, 'Grzegorz', 'Dubiel');

INSERT INTO Sprzedawcy (IDSprzedawcy, ImięSprzedawcy, NazwiskoSprzedawcy)
VALUES (2, 'Karolina', 'Dubiel');

INSERT INTO Sprzedawcy (IDSprzedawcy, ImięSprzedawcy, NazwiskoSprzedawcy)
VALUES (3, 'Natalia', 'Lipska');

INSERT INTO Sprzedawcy (IDSprzedawcy, ImięSprzedawcy, NazwiskoSprzedawcy)
VALUES (4, 'Justyna', 'Kowalska');

-- Tabela SortowanieDanych:

DROP TABLE SortowanieDanych;

CREATE TABLE SortowanieDanych
(IDTabeli INT NOT NULL,
DaneZnakowe VARCHAR(30) NULL,
DaneLiczbowe INT NULL);

INSERT INTO SortowanieDanych (IDTabeli, DaneZnakowe, DaneLiczbowe)
VALUES (1, '23', 23);

INSERT INTO SortowanieDanych (IDTabeli, DaneZnakowe, DaneLiczbowe)
VALUES (2, '5', 5);

INSERT INTO SortowanieDanych (IDTabeli, DaneZnakowe)
VALUES (3, 'Pies');

INSERT INTO SortowanieDanych (IDTabeli, DaneLiczbowe)
VALUES (4, -6);

-- Tabela Książki:

DROP TABLE Książki;

CREATE TABLE Książki
(IDKsiążki INT NOT NULL,
Tytuł VARCHAR(30) NULL,
Autor VARCHAR (30) NULL,
SprzedażWBieżącymMiesiącu INT NULL);

INSERT INTO Książki (IDKsiążki, Tytuł, Autor, SprzedażWBieżącymMiesiącu) VALUES (1, 'Duma i uprzedzenie', 'Austen', 15);

INSERT INTO Książki (IDKsiążki, Tytuł, Autor, SprzedażWBieżącymMiesiącu) VALUES (2, 'Folwark zwierzęcy', 'Orwell', 7);

INSERT INTO Książki (IDKsiążki, Tytuł, Autor, SprzedażWBieżącymMiesiącu) VALUES (3, 'Kupiec wenecki', 'Szekspir', 5);

INSERT INTO Książki (IDKsiążki, Tytuł, Autor, SprzedażWBieżącymMiesiącu) VALUES (4, 'Romeo i Julia', 'Szekspir', 8);

INSERT INTO Książki (IDKsiążki, Tytuł, Autor, SprzedażWBieżącymMiesiącu) VALUES (5, 'Oliver Twist', 'DIckens', 3);

INSERT INTO Książki (IDKsiążki, Tytuł, Autor, SprzedażWBieżącymMiesiącu) VALUES (6, 'Kandyd', 'Wolter', 9);

INSERT INTO Książki (IDKsiążki, Tytuł, Autor, SprzedażWBieżącymMiesiącu) VALUES (7, 'Szkarłatna litera', 'Hawthorne', 12);

INSERT INTO Książki (IDKsiążki, Tytuł, Autor, SprzedażWBieżącymMiesiącu) VALUES (8, 'Hamlet', 'Szekspir', 2);

-- Tabela Filmy:

DROP TABLE Filmy;

CREATE TABLE Filmy
(IDFilmu INT NOT NULL,
TytułFilmu VARCHAR(35) NULL,
Klasyfikacja VARCHAR(30) NULL);

INSERT INTO Filmy (IDFilmu, TytułFilmu, Klasyfikacja) VALUES (1, 'To właśnie miłość', 'R');

INSERT INTO Filmy (IDFilmu, TytułFilmu, Klasyfikacja) VALUES (2, 'Północ – północny zachód', 'brak kategorii');

INSERT INTO Filmy (IDFilmu, TytułFilmu, Klasyfikacja) VALUES (3, 'Miłość i śmierć', 'PG');

INSERT INTO Filmy (IDFilmu, TytułFilmu, Klasyfikacja) VALUES (4, 'Truman Show', 'PG');

INSERT INTO Filmy (IDFilmu, TytułFilmu, Klasyfikacja) VALUES (5, 'Taka miłość się nie zdarza', 'R');

INSERT INTO Filmy (IDFilmu, TytułFilmu, Klasyfikacja) VALUES (6, 'Do diabła z miłością', 'PG-13');

INSERT INTO Filmy (IDFilmu, TytułFilmu, Klasyfikacja) VALUES (7, 'Gdzie jest Nemo?', 'G');

-- Tabela Aktorzy:

DROP TABLE Aktorzy;

CREATE TABLE Aktorzy
(IDAktora INT NOT NULL,
Imię VARCHAR(30) NULL,
Nazwisko VARCHAR(30) NULL);

INSERT INTO Aktorzy (IDAktora, Imię, Nazwisko) VALUES (1, 'Cary', 'Grant');

INSERT INTO Aktorzy (IDAktora, Imię, Nazwisko) VALUES (2, 'Mary', 'Steenburgen');

INSERT INTO Aktorzy (IDAktora, Imię, Nazwisko) VALUES (3, 'Jon', 'Voight');

INSERT INTO Aktorzy (IDAktora, Imię, Nazwisko) VALUES (4, 'Dustin', 'Hoffman');

INSERT INTO Aktorzy (IDAktora, Imię, Nazwisko) VALUES (5, 'John', 'Wayne');

INSERT INTO Aktorzy (IDAktora, Imię, Nazwisko) VALUES (6, 'Gary', 'Cooper');

-- Tabela RejestrZamówień:

DROP TABLE RejestrZamówień;

CREATE TABLE RejestrZamówień
(IDZamówienia INT NOT NULL,
Klient VARCHAR(30) NULL,
Województwo VARCHAR (30) NULL,
ZakupionaIlość INT NULL,
CenaZaSztukę FLOAT NULL);

INSERT INTO RejestrZamówień (IDZamówienia, Klient, Województwo, ZakupionaIlość, CenaZaSztukę) VALUES (1, 'Andrzej Lipkowski', 'pomorskie', 4, 2.5);

INSERT INTO RejestrZamówień (IDZamówienia, Klient, Województwo, ZakupionaIlość, CenaZaSztukę) VALUES (2, 'Karolina Bielska', 'mazowieckie', 10, 1.25);

INSERT INTO RejestrZamówień (IDZamówienia, Klient, Województwo, ZakupionaIlość, CenaZaSztukę) VALUES (3, 'Janusz Solecki', 'wielkopolskie', 5, 4);

-- Tabela ArtykułySpożywcze:

DROP TABLE ArtykułySpożywcze;

CREATE TABLE ArtykułySpożywcze
(IDArtykułu INT NOT NULL,
KodKategorii VARCHAR(5) NULL,
Opis VARCHAR (30) NULL);

INSERT INTO ArtykułySpożywcze (IDArtykułu, KodKategorii, Opis) VALUES (1, 'O', 'Jabłko');

INSERT INTO ArtykułySpożywcze (IDArtykułu, KodKategorii, Opis) VALUES (2, 'O', 'Pomarańcza');

INSERT INTO ArtykułySpożywcze (IDArtykułu, KodKategorii, Opis) VALUES (3, 'P', 'Musztarda');

INSERT INTO ArtykułySpożywcze (IDArtykułu, KodKategorii, Opis) VALUES (4, 'W', 'Marchew');

INSERT INTO ArtykułySpożywcze (IDArtykułu, KodKategorii, Opis) VALUES (5, 'N', 'Woda');

-- Tabela KategorieArtykulowSpożywczych:
/*Nazwy tabel w Oracle nie mogą przekroczyć 30 bajtów. Z uwagi na to, że polskie znaki diakrytyczne kodowane są jako dwa bajty, konieczne było ich zastąpienie innymi literami w powyższej nazwie tabeli - przyp. tłum.*/

DROP TABLE KategorieArtykulowSpożywczych;

CREATE TABLE KategorieArtykulowSpożywczych
(IDArtykułu INT NOT NULL,
Owoc VARCHAR(5) NULL,
Warzywo VARCHAR (5) NULL,
Przyprawa VARCHAR (5) NULL,
Napój VARCHAR (5) NULL,
Opis VARCHAR (30) NULL);

INSERT INTO KategorieArtykulowSpożywczych (IDArtykułu, Owoc, Warzywo, Przyprawa, Napój, Opis) VALUES (1, 'X', ' ', ' ', ' ', 'Jabłko');

INSERT INTO KategorieArtykulowSpożywczych (IDArtykułu, Owoc, Warzywo, Przyprawa, Napój, Opis) VALUES (2, 'X', ' ', ' ', ' ', 'Pomarańcza');

INSERT INTO KategorieArtykulowSpożywczych (IDArtykułu, Owoc, Warzywo, Przyprawa, Napój, Opis) VALUES (3, ' ', ' ', 'X', ' ', 'Musztarda');

INSERT INTO KategorieArtykulowSpożywczych (IDArtykułu, Owoc, Warzywo, Przyprawa, Napój, Opis) VALUES (4, ' ', 'X', ' ', ' ', 'Marchew');

INSERT INTO KategorieArtykulowSpożywczych (IDArtykułu, Owoc, Warzywo, Przyprawa, Napój, Opis) VALUES (5, ' ', ' ', ' ', 'X', 'Woda');

-- Tabela AmerykaPółnocna:

DROP TABLE AmerykaPółnocna;

CREATE TABLE AmerykaPółnocna
(IDMiasta INT NOT NULL,
Kraj VARCHAR(6) NULL,
Stan VARCHAR (8) NULL,
Prowincja VARCHAR (7) NULL,
Miasto VARCHAR (30) NULL);

INSERT INTO AmerykaPółnocna (IDMiasta, Kraj, Stan, Prowincja, Miasto) VALUES (1, 'USA', 'Vermont', ' ', 'Burlington');

INSERT INTO AmerykaPółnocna (IDMiasta, Kraj, Stan, Prowincja, Miasto) VALUES (2, 'Kanada', ' ', 'Quebec', 'Montreal');

INSERT INTO AmerykaPółnocna (IDMiasta, Kraj, Stan, Prowincja, Miasto) VALUES (3, 'USA', 'Kolorado', ' ', 'Denver');

INSERT INTO AmerykaPółnocna (IDMiasta, Kraj, Stan, Prowincja, Miasto) VALUES (4, 'USA', 'Kolorado', ' ', 'Boulder');

INSERT INTO AmerykaPółnocna (IDMiasta, Kraj, Stan, Prowincja, Miasto) VALUES (5, 'Kanada', ' ', 'Alberta', 'Edmonton');

-- Tabela ListaKlientów:

DROP TABLE ListaKlientów;

CREATE TABLE ListaKlientów
(IDKlienta INT NOT NULL,
Płeć VARCHAR(5) NULL,
Wiek INT NULL,
Dochód INT NULL);

INSERT INTO ListaKlientów (IDKlienta, Płeć, Wiek, Dochód) VALUES (1, 'M', 55, 80000);

INSERT INTO ListaKlientów (IDKlienta, Płeć, Wiek, Dochód) VALUES (2, 'K', 25, 65000);

INSERT INTO ListaKlientów (IDKlienta, Płeć, Wiek, Dochód) VALUES (3, 'M', 35, 40000);

INSERT INTO ListaKlientów (IDKlienta, Płeć, Wiek, Dochód) VALUES (4, 'K', 42, 90000);

INSERT INTO ListaKlientów (IDKlienta, Płeć, Wiek, Dochód) VALUES (5, 'K', 27, 25000);

-- Tabela TytułyUtworów:

DROP TABLE TytułyUtworów;

CREATE TABLE TytułyUtworów
(IDUtworu INT NOT NULL,
Wykonawca VARCHAR(30) NULL,
Album VARCHAR(30) NULL,
Tytuł VARCHAR(30) NULL);

INSERT INTO TytułyUtworów (IDUtworu, Wykonawca, Album, Tytuł) VALUES (1, 'The Beatles', 'Revolver', 'Yellow Submarine');

INSERT INTO TytułyUtworów (IDUtworu, Wykonawca, Album, Tytuł) VALUES (2, 'The Beatles', 'Revolver', 'Eleanor Rigby');

INSERT INTO TytułyUtworów (IDUtworu, Wykonawca, Album, Tytuł) VALUES (3, 'The Beatles', 'Abbey Road', 'Here Comes the Sun');

INSERT INTO TytułyUtworów (IDUtworu, Wykonawca, Album, Tytuł) VALUES (4, 'The Rolling Stones', 'Beggars Banquet', 'Sympathy for the Devil');

INSERT INTO TytułyUtworów (IDUtworu, Wykonawca, Album, Tytuł) VALUES (5, 'The Rolling Stones', 'Let It Bleed', 'Gimme Shelter');

INSERT INTO TytułyUtworów (IDUtworu, Wykonawca, Album, Tytuł) VALUES (6, 'Paul McCartney', 'Ram', 'Too Many People');

-- Tabela Opłaty:

DROP TABLE Opłaty;

CREATE TABLE Opłaty
(IDOpłaty INT NOT NULL,
Uczeń VARCHAR(30) NULL,
RodzajOpłaty VARCHAR(30) NULL,
Opłata INT NULL);

INSERT INTO Opłaty (IDOpłaty, Uczeń, RodzajOpłaty, Opłata) VALUES (1, 'Grzegorz', 'Siłownia', 30);

INSERT INTO Opłaty (IDOpłaty, Uczeń, RodzajOpłaty, Opłata) VALUES (2, 'Grzegorz', 'Obiad', 10);

INSERT INTO Opłaty (IDOpłaty, Uczeń, RodzajOpłaty, Opłata) VALUES (3, 'Grzegorz', 'Wycieczka', 8);

INSERT INTO Opłaty (IDOpłaty, Uczeń, RodzajOpłaty, Opłata) VALUES (4, 'Joanna', 'Siłownia', 30);

INSERT INTO Opłaty (IDOpłaty, Uczeń, RodzajOpłaty, Opłata) VALUES (5, 'Julia', 'Obiad', 10);

-- Tabela Punktacja:

DROP TABLE Punktacja;
CREATE TABLE Punktacja
(IDPunktacji INT NOT NULL,
Uczeń VARCHAR(30) NULL,
OcenianaPraca VARCHAR(30) NULL,
LiczbaPunktów DECIMAL NULL,
LiczbaLatNauki INT NULL);

INSERT INTO Punktacja (IDPunktacji, Uczeń, OcenianaPraca, LiczbaPunktów, LiczbaLatNauki) VALUES (1, 'Izabela', 'Sprawdzian', 92, 7);

INSERT INTO Punktacja (IDPunktacji, Uczeń, OcenianaPraca, LiczbaPunktów, LiczbaLatNauki) VALUES (2, 'Izabela', 'Sprawdzian', 95, 7);

INSERT INTO Punktacja (IDPunktacji, Uczeń, OcenianaPraca, LiczbaPunktów, LiczbaLatNauki) VALUES (3, 'Izabela', 'Praca domowa', 84, 7);

INSERT INTO Punktacja (IDPunktacji, Uczeń, OcenianaPraca, LiczbaPunktów, LiczbaLatNauki) VALUES (4, 'Hanna', 'Sprawdzian', 62, 8);

INSERT INTO Punktacja (IDPunktacji, Uczeń, OcenianaPraca, LiczbaPunktów, LiczbaLatNauki) VALUES (5, 'Hanna', 'Sprawdzian', 81, 8);

INSERT INTO Punktacja (IDPunktacji, Uczeń, OcenianaPraca, LiczbaLatNauki) VALUES (6, 'Hanna', 'Praca domowa', 8);

INSERT INTO Punktacja (IDPunktacji, Uczeń, OcenianaPraca, LiczbaPunktów, LiczbaLatNauki) VALUES (7, 'Piotr', 'Sprawdzian', 58, 7);

INSERT INTO Punktacja (IDPunktacji, Uczeń, OcenianaPraca, LiczbaPunktów, LiczbaLatNauki) VALUES (8, 'Piotr', 'Sprawdzian', 74, 7);

INSERT INTO Punktacja (IDPunktacji, Uczeń, OcenianaPraca, LiczbaPunktów, LiczbaLatNauki) VALUES (9, 'Piotr', 'Praca domowa', 88, 7);

-- Tabela Akcje:

DROP TABLE Akcje;

CREATE TABLE Akcje
(Skrót VARCHAR(10) NOT NULL,
NazwaFirmy VARCHAR(30) NULL,
NazwaGiełdy VARCHAR(10) NULL,
StosunekCenyDoZysku INT NULL);

INSERT INTO Akcje (Skrót, NazwaFirmy, NazwaGiełdy, StosunekCenyDoZysku) VALUES ('AAPL', 'Apple Inc', 'NASDAQ', 14);

INSERT INTO Akcje (Skrót, NazwaFirmy, NazwaGiełdy, StosunekCenyDoZysku) VALUES ('AMZN', 'Amazon.com Inc', 'NASDAQ', 489);

INSERT INTO Akcje (Skrót, NazwaFirmy, NazwaGiełdy, StosunekCenyDoZysku) VALUES ('DIS', 'The Walt Disney Company', 'NYSE', 21);

INSERT INTO Akcje (Skrót, NazwaFirmy, NazwaGiełdy, StosunekCenyDoZysku) VALUES ('GE', 'General Electric Company', 'NYSE', 18);

INSERT INTO Akcje (Skrót, NazwaFirmy, NazwaGiełdy, StosunekCenyDoZysku) VALUES ('GOOG', 'Alphabet Inc', 'NASDAQ', 30);

INSERT INTO Akcje (Skrót, NazwaFirmy, NazwaGiełdy, StosunekCenyDoZysku) VALUES ('HSY', 'The Hershey Company', 'NYSE', 26);

INSERT INTO Akcje (Skrót, NazwaFirmy, NazwaGiełdy, StosunekCenyDoZysku) VALUES ('KRFT', 'Kraft Foods Inc', 'NYSE', 12);

INSERT INTO Akcje (Skrót, NazwaFirmy, NazwaGiełdy, StosunekCenyDoZysku) VALUES ('KO', 'The Coca-Cola Company', 'NYSE', 21);

INSERT INTO Akcje (Skrót, NazwaFirmy, NazwaGiełdy, StosunekCenyDoZysku) VALUES ('MCD', 'McDonalds Corporation', 'NYSE', 18);

INSERT INTO Akcje (Skrót, NazwaFirmy, NazwaGiełdy, StosunekCenyDoZysku) VALUES ('MMM', '3M Company', 'NYSE', 20);

INSERT INTO Akcje (Skrót, NazwaFirmy, NazwaGiełdy, StosunekCenyDoZysku) VALUES ('MSFT', 'Microsoft Corporation', 'NASDAQ', 15);

INSERT INTO Akcje (Skrót, NazwaFirmy, NazwaGiełdy, StosunekCenyDoZysku) VALUES ('ORCL', 'Oracle Corporation', 'NASDAQ', 17);

INSERT INTO Akcje (Skrót, NazwaFirmy, NazwaGiełdy, StosunekCenyDoZysku) VALUES ('SBUX', 'Starbucks Corporation', 'NASDAQ', 357);

INSERT INTO Akcje (Skrót, NazwaFirmy, NazwaGiełdy, StosunekCenyDoZysku) VALUES ('WBA', 'Walgreens Boots Alliance Inc', 'NYSE', 24);

INSERT INTO Akcje (Skrót, NazwaFirmy, NazwaGiełdy, StosunekCenyDoZysku) VALUES ('WMT', 'Wal-Mart Stores Inc', 'NYSE', 15);

-- Tabela WykazProduktów:

DROP TABLE WykazProduktów;

CREATE TABLE WykazProduktów
(IDProduktu INT NOT NULL,
Kategoria VARCHAR(30) NULL,
Podkategoria VARCHAR(30) NULL,
Produkt VARCHAR(30) NULL,
LiczbaSztuk INT NULL);

INSERT INTO WykazProduktów (IDProduktu, Kategoria, Podkategoria, Produkt, LiczbaSztuk) VALUES (1, 'Meble', 'Krzesła', 'Czerwony fotel', 3);

INSERT INTO WykazProduktów (IDProduktu, Kategoria, Podkategoria, Produkt, LiczbaSztuk) VALUES (2, 'Meble', 'Krzesła', 'Zielony fotel', 2);

INSERT INTO WykazProduktów (IDProduktu, Kategoria, Podkategoria, Produkt, LiczbaSztuk) VALUES (3, 'Meble', 'Biurka', 'Niebieskie biurko komputerowe', 4);

INSERT INTO WykazProduktów (IDProduktu, Kategoria, Podkategoria, Produkt, LiczbaSztuk) VALUES (4, 'ArtykułyPapiernicze', 'PapieryDoDrukarki', 'Biały papier do drukarki', 5);

INSERT INTO WykazProduktów (IDProduktu, Kategoria, Podkategoria, Produkt, LiczbaSztuk) VALUES (5, 'ArtykułyPapiernicze', 'PapieryDoDrukarki', 'Różowy papier do drukarki', 2);

INSERT INTO WykazProduktów (IDProduktu, Kategoria, Podkategoria, Produkt, LiczbaSztuk) VALUES (6, 'ArtykułyPapiernicze', 'Notatniki', 'Notatnik z białymi kartkami', 4);

-- Tabela ZestawienieSprzedaży:

DROP TABLE ZestawienieSprzedaży;

CREATE TABLE ZestawienieSprzedaży
(DataSprzedaży DATE NULL,
IDKlienta INT NULL,
Województwo VARCHAR(10) NULL,
KanałSprzedaży VARCHAR(30) NULL,
KwotaSprzedaży INT NULL);

INSERT INTO ZestawienieSprzedaży (DataSprzedaży, IDKlienta, Województwo, KanałSprzedaży, KwotaSprzedaży) VALUES (TO_DATE('2017-04-01','YYYY-MM-DD'), 101, 'MAZ', 'Internet', 50);

INSERT INTO ZestawienieSprzedaży (DataSprzedaży, IDKlienta, Województwo, KanałSprzedaży, KwotaSprzedaży) VALUES (TO_DATE('2017-04-01','YYYY-MM-DD'), 102, 'MAZ', 'PunktSprzedażyDetalicznej', 30);

INSERT INTO ZestawienieSprzedaży (DataSprzedaży, IDKlienta, Województwo, KanałSprzedaży, KwotaSprzedaży) VALUES (TO_DATE('2017-04-01','YYYY-MM-DD'), 103, 'PDL', 'Internet', 120);

INSERT INTO ZestawienieSprzedaży (DataSprzedaży, IDKlienta, Województwo, KanałSprzedaży, KwotaSprzedaży) VALUES (TO_DATE('2017-04-02','YYYY-MM-DD'), 145, 'PDL', 'PunktSprzedażyDetalicznej', 90);

INSERT INTO ZestawienieSprzedaży (DataSprzedaży, IDKlienta, Województwo, KanałSprzedaży, KwotaSprzedaży) VALUES (TO_DATE('2017-04-02','YYYY-MM-DD'), 180, 'MAZ', 'PunktSprzedażyDetalicznej', 300);

INSERT INTO ZestawienieSprzedaży (DataSprzedaży, IDKlienta, Województwo, KanałSprzedaży, KwotaSprzedaży) VALUES (TO_DATE('2017-04-02','YYYY-MM-DD'), 181, 'PDL', 'Internet', 130);

INSERT INTO ZestawienieSprzedaży (DataSprzedaży, IDKlienta, Województwo, KanałSprzedaży, KwotaSprzedaży) VALUES (TO_DATE('2017-04-02','YYYY-MM-DD'), 182, 'MAZ', 'Internet', 520);

INSERT INTO ZestawienieSprzedaży (DataSprzedaży, IDKlienta, Województwo, KanałSprzedaży, KwotaSprzedaży) VALUES (TO_DATE('2017-04-02','YYYY-MM-DD'), 184, 'MAZ', 'PunktSprzedażyDetalicznej', 80);

-- Tabela Zamówienia:

DROP TABLE Zamówienia;

CREATE TABLE Zamówienia
(IDZamówienia INT NOT NULL,
IDKlienta INT NOT NULL,
DataZamówienia DATE NULL,
KwotaZamówienia FLOAT NULL);

INSERT INTO Zamówienia (IDZamówienia, IDKlienta, DataZamówienia, KwotaZamówienia) VALUES (1, 1, TO_DATE('2016-09-01','YYYY-MM-DD'), 10);

INSERT INTO Zamówienia (IDZamówienia, IDKlienta, DataZamówienia, KwotaZamówienia) VALUES (2, 2, TO_DATE('2016-09-02','YYYY-MM-DD'), 12.5);

INSERT INTO Zamówienia (IDZamówienia, IDKlienta, DataZamówienia, KwotaZamówienia) VALUES (3, 2, TO_DATE('2016-09-03','YYYY-MM-DD'), 18);

INSERT INTO Zamówienia (IDZamówienia, IDKlienta, DataZamówienia, KwotaZamówienia) VALUES (4, 3, TO_DATE('2016-09-15','YYYY-MM-DD'), 20);

-- Tabla Zwroty:

DROP TABLE Zwroty;

CREATE TABLE Zwroty
(IDZwrotu INT NOT NULL,
IDZamówienia INT NULL,
DataZwrotu DATE NULL,
KwotaZwrotu FLOAT NULL);

INSERT INTO Zwroty (IDZwrotu, IDZamówienia, DataZwrotu, KwotaZwrotu) VALUES (1, 1, TO_DATE('2016-09-02','YYYY-MM-DD'), 5);

INSERT INTO Zwroty (IDZwrotu, IDZamówienia, DataZwrotu, KwotaZwrotu) VALUES (2, 3, TO_DATE('2016-09-18','YYYY-MM-DD'), 18);

-- Tabela KlasyfikacjaFilmów:

DROP TABLE KlasyfikacjaFilmów;

CREATE TABLE KlasyfikacjaFilmów
(IDKlasyfikacji INT NOT NULL,
Klasyfikacja VARCHAR(10) NULL,
OpisKlasyfikacji VARCHAR(50) NULL);

INSERT INTO KlasyfikacjaFilmów (IDKlasyfikacji, Klasyfikacja, OpisKlasyfikacji) VALUES (1, 'G', 'Dozwolony dla wszystkich grup wiekowych');

INSERT INTO KlasyfikacjaFilmów (IDKlasyfikacji, Klasyfikacja, OpisKlasyfikacji) VALUES (2, 'PG', 'Wskazany nadzór rodzica/rodziców');

INSERT INTO KlasyfikacjaFilmów (IDKlasyfikacji, Klasyfikacja, OpisKlasyfikacji) VALUES (3, 'PG-13', 'Szczególnie wskazany nadzór rodzica/rodziców');

INSERT INTO KlasyfikacjaFilmów (IDKlasyfikacji, Klasyfikacja, OpisKlasyfikacji) VALUES (4, 'R', 'Film można obejrzeć jedynie z rodzicami');

INSERT INTO KlasyfikacjaFilmów (IDKlasyfikacji, Klasyfikacja, OpisKlasyfikacji) VALUES (5, 'NC-17', 'Film jedynie dla osób powyżej 17. roku życia');

-- Tabela RozmiaryKoszulek:

DROP TABLE RozmiaryKoszulek;

CREATE TABLE RozmiaryKoszulek
(IDRozmiaru INT NOT NULL,
Rozmiar VARCHAR(10) NULL);

INSERT INTO RozmiaryKoszulek (IDRozmiaru, Rozmiar) VALUES (1, 'Mały');

INSERT INTO RozmiaryKoszulek (IDRozmiaru, Rozmiar) VALUES (2, 'Średni');

INSERT INTO RozmiaryKoszulek (IDRozmiaru, Rozmiar) VALUES (3, 'Duży');

-- Tabela KoloryKoszulek:

DROP TABLE KoloryKoszulek;

CREATE TABLE KoloryKoszulek
(IDKoloru INT NOT NULL,
Kolor VARCHAR(10) NULL);

INSERT INTO KoloryKoszulek (IDKoloru, Kolor) VALUES (1, 'Czerwony');

INSERT INTO KoloryKoszulek (IDKoloru, Kolor) VALUES (2, 'Niebieski');

INSERT INTO KoloryKoszulek (IDKoloru, Kolor) VALUES (3, 'Zielony');

INSERT INTO KoloryKoszulek (IDKoloru, Kolor) VALUES (4, 'Żółty');

-- Tabela KluczoweDaty:

DROP TABLE KluczoweDaty;

CREATE TABLE KluczoweDaty
(OstatniaDataPrzetwarzania DATE NULL,
BieżącyRokPodatkowy INT NULL,
BieżącyKwartałPodatkowy VARCHAR(10) NULL);

INSERT INTO KluczoweDaty (OstatniaDataPrzetwarzania, BieżącyRokPodatkowy, BieżącyKwartałPodatkowy) VALUES (TO_DATE('2016-09-15','YYYY-MM-DD'), 2016, 'Q3');

-- Tabela Kadry:

DROP TABLE Kadry;

CREATE TABLE Kadry
(IDPracownika INT NOT NULL,
Pracownik VARCHAR(30) NULL,
IDPrzełożonego INT NULL);

INSERT INTO Kadry (IDPracownika, Pracownik) VALUES (1, 'Zuzanna Kowalska');

INSERT INTO Kadry (IDPracownika, Pracownik, IDPrzełożonego) VALUES (2, 'Luiza Warecka', 1);

INSERT INTO Kadry (IDPracownika, Pracownik, IDPrzełożonego) VALUES (3, 'Robert Pieczyński', 1);

INSERT INTO Kadry (IDPracownika, Pracownik, IDPrzełożonego) VALUES (4, 'Sebastian Feldman', 1);

INSERT INTO Kadry (IDPracownika, Pracownik, IDPrzełożonego) VALUES (5, 'Karolina Białek', 2);

INSERT INTO Kadry (IDPracownika, Pracownik, IDPrzełożonego) VALUES (6, 'Joanna Borecka', 2);

INSERT INTO Kadry (IDPracownika, Pracownik, IDPrzełożonego) VALUES (7, 'Juliusz Morawski', 3);

INSERT INTO Kadry (IDPracownika, Pracownik, IDPrzełożonego) VALUES (8, 'Anna Adamska', 4);

INSERT INTO Kadry (IDPracownika, Pracownik, IDPrzełożonego) VALUES (9, 'Jacek Śpiewak', 4);

INSERT INTO Kadry (IDPracownika, Pracownik, IDPrzełożonego) VALUES (10, 'Amelia Wojnacka', 5);

-- Tabela Użytkownicy:

DROP TABLE Użytkownicy;

CREATE TABLE Użytkownicy
(IDUżytkownika INT NOT NULL,
NazwaUżytkownika VARCHAR(30) NULL);

INSERT INTO Użytkownicy (IDUżytkownika, NazwaUżytkownika)
VALUES (1, 'Cecylia Romanowska');

INSERT INTO Użytkownicy (IDUżytkownika, NazwaUżytkownika)
VALUES (2, 'Elżbieta Borecka');

INSERT INTO Użytkownicy (IDUżytkownika, NazwaUżytkownika)
VALUES (3, 'Romuald Gawliński');

INSERT INTO Użytkownicy (IDUżytkownika, NazwaUżytkownika)
VALUES (4, 'Anna Wodecka');

-- Tabela Transakcje:

DROP TABLE Transakcje;

CREATE TABLE Transakcje
(IDTransakcji INT NOT NULL,
IDUżytkownika INT NULL,
KwotaTransakcji FLOAT NULL,
SposóbZapłaty VARCHAR(20) NULL);

INSERT INTO Transakcje (IDTransakcji, IDUżytkownika, KwotaTransakcji, SposóbZapłaty)
VALUES (1, 1, 22.25, 'Gotówka');

INSERT INTO Transakcje (IDTransakcji, IDUżytkownika, KwotaTransakcji, SposóbZapłaty)
VALUES (2, 2, 11.75, 'Karta kredytowa');

INSERT INTO Transakcje (IDTransakcji, IDUżytkownika, KwotaTransakcji, SposóbZapłaty)
VALUES (3, 2, 5, 'Karta kredytowa');

INSERT INTO Transakcje (IDTransakcji, IDUżytkownika, KwotaTransakcji, SposóbZapłaty)
VALUES (4, 2, 8, 'Gotówka');

INSERT INTO Transakcje (IDTransakcji, IDUżytkownika, KwotaTransakcji, SposóbZapłaty)
VALUES (5, 3, 9.33, 'Karta kredytowa');

INSERT INTO Transakcje (IDTransakcji, IDUżytkownika, KwotaTransakcji, SposóbZapłaty)
VALUES (6, 3, 10.11, 'Karta kredytowa');

-- Tabela ZwrotyTowarów:

DROP TABLE ZwrotyTowarów;

CREATE TABLE ZwrotyTowarów
(IDZwrotu INT NOT NULL,
IDKlienta INT NOT NULL,
DataZwrotu DATE NULL,
KwotaZwrotu FLOAT NULL);

INSERT INTO ZwrotyTowarów (IDZwrotu, IDKlienta, DataZwrotu, KwotaZwrotu) VALUES (1, 1, TO_DATE('2016-09-10','YYYY-MM-DD'), 2);

INSERT INTO ZwrotyTowarów (IDZwrotu, IDKlienta, DataZwrotu, KwotaZwrotu) VALUES (2, 2, TO_DATE('2016-09-15','YYYY-MM-DD'), 15);

INSERT INTO ZwrotyTowarów (IDZwrotu, IDKlienta, DataZwrotu, KwotaZwrotu) VALUES (3, 3, TO_DATE('2016-09-28','YYYY-MM-DD'), 3);

-- Tabela Kontrahenci:
/*Użycie klauzuli GENERATED AS IDENTITY możliwe jest wyłącznie w przypadku wersji 12c bazy danych Oracle. W przypadku bazy danych Oracle Express jest to wersja 4.2.6.00.03. Patch umożliwiający upgrade bazy danych Expres do tej wersji jest jednak dostępny jedynie dla użytkowników posiadających konto na My Oracle Support" - przyp. tłum.*/

DROP TABLE Kontrahenci;

CREATE TABLE Kontrahenci
(
ImięKontrahenta VARCHAR(30) NULL,
NazwiskoKontrahenta VARCHAR(30) NULL,
Województwo VARCHAR(10) NULL);

INSERT INTO Kontrahenci (ImięKontrahenta, NazwiskoKontrahenta, Województwo) VALUES ('Janusz', 'Bentlewski', 'POM');

INSERT INTO Kontrahenci (ImięKontrahenta, NazwiskoKontrahenta, Województwo) VALUES ('Michał', 'Rajewski', 'MAZ');

INSERT INTO Kontrahenci (ImięKontrahenta, NazwiskoKontrahenta, Województwo) VALUES ('Emilia', 'Pieczyńska', 'LBU');

-- Tabela NowiKontrahenci:

DROP TABLE NowiKontrahenci;

CREATE TABLE NowiKontrahenci
(Województwo VARCHAR(10) NULL,
Nazwa1 VARCHAR(30) NULL,
Nazwa2 VARCHAR(30) NULL);

INSERT INTO NowiKontrahenci (Województwo, Nazwa1, Nazwa2) VALUES ('PKR', 'Robert', 'Hołdys');

INSERT INTO NowiKontrahenci (Województwo, Nazwa1, Nazwa2) VALUES ('MAZ', 'Beata', 'Kowalska');

INSERT INTO NowiKontrahenci (Województwo, Nazwa1, Nazwa2) VALUES ('PKR', 'Grażyna', 'Mielniczuk');

-- Tabela Dostawcy:

DROP TABLE Dostawcy;

CREATE TABLE Dostawcy
(IDDostawcy INT NOT NULL,
Województwo VARCHAR(10) NULL,
KodPocztowy VARCHAR(10) NULL);

INSERT INTO Dostawcy (IDDostawcy, Województwo, KodPocztowy) VALUES (1, 'POM', '77-131');

INSERT INTO Dostawcy (IDDostawcy, Województwo, KodPocztowy) VALUES (2, 'LBL', '21-515');

INSERT INTO Dostawcy (IDDostawcy, Województwo, KodPocztowy) VALUES (3, 'MAZ', '09-166');

INSERT INTO Dostawcy (IDDostawcy, Województwo, KodPocztowy) VALUES (4, 'PKR', '36-221');

INSERT INTO Dostawcy (IDDostawcy, Województwo, KodPocztowy) VALUES (5, 'ŁDZ', '97-407');


-- Tabela ZmianaDanychDostawców:

DROP TABLE ZmianaDanychDostawców;

CREATE TABLE ZmianaDanychDostawców
(IDZmiany INT NOT NULL,
IDDostawcy INT NULL,
Województwo VARCHAR(10) NULL,
KodPocztowy VARCHAR(10) NULL);

INSERT INTO ZmianaDanychDostawców (IDZmiany, IDDostawcy, Województwo, KodPocztowy) VALUES (1, 1, 'POM', '77-121');

INSERT INTO ZmianaDanychDostawców (IDZmiany, IDDostawcy, Województwo, KodPocztowy) VALUES (2, 2, 'LBL', '21-516');

INSERT INTO ZmianaDanychDostawców (IDZmiany, IDDostawcy, Województwo, KodPocztowy) VALUES (3, 5, 'ZPM', '72-427');

-- Tabela PowiązanaTabela:

DROP TABLE PowiązanaTabela;

CREATE TABLE PowiązanaTabela
(PierwszaKolumna INT NOT NULL PRIMARY KEY);



- - - - - - — - - - - - - - - - - - - -
INSTRUKCJE SQL Z ROZDZIAŁU 2
- - - - - - — - - - - - - - - - - - - -




SELECT * FROM Klienci;

SELECT *
FROM Klienci;

SELECT
-- to jest pierwszy komentarz
ImięKlienta,
NazwiskoKlienta -- to jest drugi komentarz
FROM Klienci;

SELECT
/* to jest pierwszy komentarz */
ImięKlienta,
NazwiskoKlienta /*to jest drugi komentarz
to jest dalsza część drugiego komentarza
tutaj znajduje się koniec drugiego komentarza */
FROM Klienci;

SELECT NazwiskoKlienta
FROM Klienci;

SELECT
ImięKlienta,
NazwiskoKlienta
FROM Klienci;


- - - - - - — - - - - - - - -
INSTRUKCJE SQL Z ROZDZIAŁU 3- - - - - - — - - - - - - - -


SELECT
'Imię klienta:',
ImięKlienta
FROM Sprzedaż;

SELECT
5,
ImięKlienta
FROM Sprzedaż;

SELECT
IDSprzedaży,
ZakupionaIlość,
CenaZaSztukę,
ZakupionaIlość * CenaZaSztukę
FROM Sprzedaż;

SELECT
IDSprzedaży,
ImięKlienta,
NazwiskoKlienta,
ImięKlienta || ' ' || NazwiskoKlienta
FROM Sprzedaż;

SELECT
IDSprzedaży,
ImięKlienta,
NazwiskoKlienta,
ImięKlienta || ' ' || NazwiskoKlienta AS "Nazwa"
FROM Sprzedaż;

SELECT
IDSprzedaży,
ImięKlienta,
NazwiskoKlienta,
ImięKlienta || ' ' || NazwiskoKlienta Nazwa
FROM Sprzedaż;



- - - - - - — - - - - - - - - - - - - -
INSTRUKCJE SQL Z ROZDZIAŁU 4
- - - - - - — - - - - - - - - - - - - -

SELECT 
SUBSTR('czarnaowca', 7, 4) AS "Wynik"
FROM DUAL;

SELECT 
LTRIM('          dwa jabłka') AS "Wynik"
FROM DUAL;

SELECT 
UPPER('Abraham Lincoln') AS "Konwersja na wielkie litery",
LOWER('ABRAHAM LINCOLN') AS "Konwersja na małe litery"
FROM DUAL;

SELECT CURRENT_DATE
FROM DUAL;

SELECT 
/* Funkcja TO_DATE umożliwia przekonwertowanie ciągu znaków na podany przez użytkownika format daty, zaś dzięki funkcji TO_CHAR możliwe jest wybranie wskazanego fragmentu tego ciągu znaków. - przyp. tłum. */
TO_CHAR(TO_DATE('2017-05-06','YYYY-MM-DD'), 'DD') 
FROM DUAL;

SELECT ROUND(712.863, 3)
FROM DUAL;

SELECT ROUND(712.863, 2)
FROM DUAL;

SELECT ROUND(712.863, 1)
FROM DUAL;

SELECT ROUND(712.863, 0)
FROM DUAL;

SELECT ROUND(712.863, -1)
FROM DUAL;

SELECT ROUND(712.863, -2)
FROM DUAL;

SELECT POWER(5,2) AS "Liczba 5 do kwadratu"
FROM DUAL;

SELECT POWER(25,.5) AS "Pierwiastek kwadr. z liczby 25"
FROM DUAL;

SELECT 
'2017-04-11' AS "Data Pierwotna",
/* Domyślny format daty w Oracle Express to MM/DD/YYYY. W celu zmiany formatu daty należy użyć funkcji TO_DATE. - przyp. tłum. */
CAST('04/11/2017' AS DATE) 
FROM DUAL;

SELECT 
Opis,
Waga
FROM Produkty;

SELECT 
Opis,
NVL(CAST(Waga AS CHAR), 'Nieznana') AS "Waga"
FROM Produkty;

 
- - - - - - — - - - - - - - - - - - - -
INSTRUKCJE SQL Z ROZDZIAŁU 5
- - - - - - — - - - - - - - - - - - - -



SELECT
ImięSprzedawcy,
NazwiskoSprzedawcy
FROM Sprzedawcy
ORDER BY NazwiskoSprzedawcy;

SELECT
ImięSprzedawcy,
NazwiskoSprzedawcy
FROM Sprzedawcy
ORDER BY ImięSprzedawcy;

SELECT
ImięSprzedawcy,
NazwiskoSprzedawcy
FROM Sprzedawcy
ORDER BY ImięSprzedawcy ASC;

SELECT
ImięSprzedawcy,
NazwiskoSprzedawcy
FROM Sprzedawcy
ORDER BY ImięSprzedawcy DESC;

SELECT
ImięSprzedawcy,
NazwiskoSprzedawcy
FROM Sprzedawcy
ORDER BY NazwiskoSprzedawcy, ImięSprzedawcy;

SELECT 
NazwiskoSprzedawcy || ', ' || ImięSprzedawcy AS "Nazwa"
FROM Sprzedawcy
ORDER BY NazwiskoSprzedawcy || ', ' || ImięSprzedawcy;

SELECT 
ImięSprzedawcy, 
NazwiskoSprzedawcy
FROM Sprzedawcy
ORDER BY NazwiskoSprzedawcy || ImięSprzedawcy;

SELECT DaneLiczbowe
FROM SortowanieDanych
ORDER BY DaneLiczbowe;

SELECT 
NVL(DaneLiczbowe, 0) AS "DaneLiczbowe"
FROM SortowanieDanych
ORDER BY NVL(DaneLiczbowe,0);

SELECT 
DaneZnakowe
FROM SortowanieDanych
ORDER BY DaneZnakowe;



- - - - - - — - - - - - - - - - - - - -
INSTRUKCJE SQL Z ROZDZIAŁU 6

- - - - - - — - - - - - - - - - - - - -



SELECT
ImięKlienta,
NazwiskoKlienta,
ZakupionaIlość
FROM Sprzedaż
WHERE NazwiskoKlienta = 'Solecki';

SELECT
ImięKlienta,
NazwiskoKlienta,
ZakupionaIlość
FROM Sprzedaż
WHERE ZakupionaIlość = 5;

SELECT
ImięKlienta,
NazwiskoKlienta,
ZakupionaIlość
FROM Sprzedaż
WHERE ZakupionaIlość > 6;

SELECT
ImięKlienta,
NazwiskoKlienta
FROM Sprzedaż
WHERE NazwiskoKlienta > 'K';

SELECT 
Tytuł AS "Tytuł książki",
SprzedażWBieżącymMiesiącu AS "Sprzedana ilość"	
FROM
(SELECT *
FROM Książki
ORDER BY SprzedażWBieżącymMiesiącu DESC)
WHERE ROWNUM <= 3;

SELECT *
FROM
(SELECT 
Tytuł AS "Tytuł książki",
SprzedażWBieżącymMiesiącu AS "Sprzedana ilość"
FROM Książki
WHERE Autor = 'Szekspir'
ORDER BY SprzedażWBieżącymMiesiącu DESC)
WHERE ROWNUM <= 1;

SELECT 
TytułFilmu AS "Film"
FROM Filmy
WHERE UPPER(TytułFilmu) LIKE '%MIŁOŚĆ%';

SELECT 
TytułFilmu AS "Film"
FROM Filmy
WHERE UPPER(TytułFilmu) LIKE 'MIŁOŚĆ%';

SELECT 
TytułFilmu AS "Film"
FROM Filmy
WHERE UPPER(TytułFilmu) LIKE '%MIŁOŚĆ';

SELECT 
TytułFilmu AS "Film"
FROM Filmy
WHERE UPPER(TytułFilmu) LIKE '% MIŁOŚĆ %';

SELECT 
Imię,
Nazwisko
FROM Aktorzy
WHERE UPPER(Imię) LIKE '_ARY';

SELECT 
Imię,
Nazwisko
FROM Aktorzy
WHERE UPPER(Imię) LIKE 'J_N';



- - - - - - — - - - - - - - - - - - - -
INSTRUKCJE SQL Z ROZDZIAŁU 7- - - - - - — - - - - - - - - - - - - -



SELECT
Klient,
ZakupionaIlość
FROM RejestrZamówień
WHERE ZakupionaIlość > 3
AND ZakupionaIlość < 7;

SELECT
Klient,
ZakupionaIlość,
CenaZaSztukę
FROM RejestrZamówień
WHERE ZakupionaIlość > 8
OR CenaZaSztukę > 3;

SELECT
Klient,
Województwo,
ZakupionaIlość
FROM RejestrZamówień
WHERE Województwo = 'pomorskie'
OR Województwo = 'mazowieckie'
AND ZakupionaIlość > 8;

SELECT
Klient,
Województwo,
ZakupionaIlość
FROM RejestrZamówień
WHERE (Województwo = 'pomorskie'
OR Województwo = 'mazowieckie')
AND ZakupionaIlość > 8;

SELECT
Klient,
Województwo,
ZakupionaIlość
FROM RejestrZamówień
WHERE Województwo = 'wielkopolskie'
OR (Województwo = 'pomorskie'
AND (ZakupionaIlość >= 3
AND ZakupionaIlość <= 10));

SELECT
Klient,
Województwo,
ZakupionaIlość 
FROM RejestrZamówień
WHERE NOT Województwo = 'wielkopolskie';

SELECT
Klient,
Województwo,
ZakupionaIlość
FROM RejestrZamówień
WHERE Województwo <> 'wielkopolskie';

SELECT
Klient,
Województwo,
ZakupionaIlość 
FROM RejestrZamówień
WHERE NOT (Województwo = 'pomorskie'
OR Województwo = 'wielkopolskie');

SELECT
Klient,
Województwo,
ZakupionaIlość 
FROM RejestrZamówień
WHERE Województwo <> 'pomorskie'
AND Województwo <> 'wielkopolskie';

SELECT
Klient,
Województwo,
ZakupionaIlość 
FROM RejestrZamówień
WHERE NOT (Województwo = 'pomorskie'
AND ZakupionaIlość > 3);

SELECT
Klient,
Województwo,
ZakupionaIlość 
FROM RejestrZamówień
WHERE Województwo <> 'pomorskie'
OR ZakupionaIlość <= 3;

SELECT
Klient,
ZakupionaIlość
FROM RejestrZamówień
WHERE ZakupionaIlość >= 5
AND ZakupionaIlość <= 20;

SELECT
Klient,
ZakupionaIlość
FROM RejestrZamówień
WHERE ZakupionaIlość BETWEEN 5 AND 20;

SELECT
Klient,
ZakupionaIlość
FROM RejestrZamówień
WHERE ZakupionaIlość NOT BETWEEN 5 AND 20;

SELECT
Klient,
Województwo
FROM RejestrZamówień
WHERE Województwo = 'pomorskie'
OR Województwo = 'wielkopolskie';

SELECT
Klient,
Województwo
FROM RejestrZamówień
WHERE Województwo IN ('pomorskie', 'wielkopolskie');

SELECT
Klient,
Województwo
FROM RejestrZamówień
WHERE Województwo NOT IN ('pomorskie', 'wielkopolskie');

SELECT
Opis,
Waga
FROM Produkty
WHERE Waga = 0;

SELECT
Opis,
Waga
FROM Produkty
WHERE Waga = 0
OR Waga IS NULL;

SELECT
Opis,
Waga
FROM Produkty
WHERE NVL(Waga, 0) = 0;

SELECT
Opis,
NVL(Waga, 0) AS "Waga"
FROM Produkty
WHERE Waga = 0
OR Waga IS NULL;



- - - - - - — - - - - - - - - - - - - -
INSTRUKCJE SQL Z ROZDZIAŁU 8

- - - - - - — - - - - - - - - - - - - -



SELECT
CASE KodKategorii
WHEN 'O' THEN 'Owoc'
WHEN 'W' THEN 'Warzywo'
ELSE 'Inne'
END AS "Kategoria",
Opis
FROM ArtykułySpożywcze;

SELECT
CASE
WHEN KodKategorii = 'O' THEN 'Owoc'
WHEN KodKategorii = 'W' THEN 'Warzywo'
ELSE 'Inne'
END AS "Kategoria",
Opis
FROM ArtykułySpożywcze;

SELECT
CASE
WHEN Owoc = 'X' THEN 'Owoc'
WHEN Warzywo = 'X' THEN 'Warzywo'
ELSE 'Inne'
END AS "Kategoria",
Opis
FROM KategorieArtykulowSpożywczych;

SELECT *
FROM AmerykaPółnocna
ORDER BY
Kraj,
CASE Kraj
WHEN 'USA' THEN Stan
WHEN 'Kanada' THEN Prowincja
ELSE Stan
END,
Miasto;

SELECT *
FROM ListaKlientów
WHERE Dochód >
CASE
WHEN Płeć = 'M' AND Wiek >= 50 THEN 75000
WHEN Płeć = 'K' AND Wiek >= 35 THEN 60000
ELSE 50000
END;





- - - - - - — - - - - - - - - - - - - -
INSTRUKCJE SQL Z ROZDZIAŁU 9
- - - - - - — - - - - - - - - - - - - -



SELECT
DISTINCT
Wykonawca
FROM TytułyUtworów
ORDER BY Wykonawca;

SELECT
DISTINCT
Wykonawca,
Album
FROM TytułyUtworów
ORDER BY Wykonawca, Album;

SELECT
SUM(Opłata) AS "Sum. opłata za siłownię"
FROM Opłaty
WHERE RodzajOpłaty = 'Siłownia';

SELECT
AVG(LiczbaPunktów) AS "Średnia l. pkt. za sprawdzian"
FROM Punktacja
WHERE OcenianaPraca = 'Sprawdzian';

SELECT
AVG(LiczbaPunktów) AS "Średnia l. pkt. za sprawdzian",
MIN(LiczbaPunktów) AS "Min. l. pkt. za sprawdzian",
MAX(LiczbaPunktów) AS "Max. l. pkt. za sprawdzian"
FROM Punktacja
WHERE OcenianaPraca = 'Sprawdzian';

SELECT
COUNT(*) AS "L. wierszy z pracą domową"
FROM Punktacja
WHERE OcenianaPraca = 'Praca domowa';

SELECT
COUNT(LiczbaPunktów) AS "L. wierszy z pkt. za p. dom."
FROM Punktacja
WHERE OcenianaPraca = 'Praca domowa';

SELECT
COUNT(DISTINCT RodzajOpłaty) AS "Liczba rodzajów opłaty"
FROM Opłaty;

SELECT
OcenianaPraca AS "Oceniana praca",
AVG(LiczbaPunktów) AS "Średnia liczba punktów"
FROM Punktacja
GROUP BY OcenianaPraca
ORDER BY OcenianaPraca;

SELECT
OcenianaPraca AS "Oceniana praca",
Uczeń AS "Uczeń",
AVG(LiczbaPunktów) AS "Średnia liczba punktów"
FROM Punktacja
GROUP BY OcenianaPraca, Uczeń
ORDER BY OcenianaPraca, Uczeń;

SELECT
OcenianaPraca AS "Oceniana praca",
Uczeń AS "Uczeń",
AVG(LiczbaPunktów) AS "Średnia liczba punktów"
FROM Punktacja
GROUP BY OcenianaPraca, Uczeń
ORDER BY Uczeń, OcenianaPraca;

SELECT
Uczeń AS "Uczeń",
OcenianaPraca AS "Oceniana praca",
AVG(LiczbaPunktów) AS "Średnia liczba punktów"
FROM Punktacja
GROUP BY OcenianaPraca, Uczeń
ORDER BY Uczeń, OcenianaPraca;

SELECT
Uczeń AS "Uczeń",
OcenianaPraca AS "Oceniana praca",
LiczbaPunktów AS "Liczba punktów"
FROM Punktacja
WHERE OcenianaPraca = 'Sprawdzian'
AND LiczbaPunktów >= 70
ORDER BY Uczeń, LiczbaPunktów;

SELECT
Uczeń AS "Uczeń",
AVG(LiczbaPunktów) AS "Średnia l. pkt. za sprawdzian"
FROM Punktacja
WHERE OcenianaPraca = 'Sprawdzian'
GROUP BY Uczeń
HAVING AVG(LiczbaPunktów) >= 70
ORDER BY Uczeń;

SELECT
Uczeń AS "Uczeń",
OcenianaPraca AS "Oceniana praca",
AVG(LiczbaPunktów) AS "Średnia liczba punktów"
FROM Punktacja
WHERE OcenianaPraca = 'Sprawdzian'
GROUP BY Uczeń, OcenianaPraca
HAVING AVG (LiczbaPunktów) >= 70
ORDER BY Uczeń;

SELECT
CASE KodKategorii
WHEN 'O' THEN 'Owoc'
WHEN 'W' THEN 'Warzywo'
ELSE 'Inne'
END AS "Kategoria",
COUNT(*) AS "LiczbaProduktów"
FROM ArtykułySpożywcze
GROUP BY
CASE KodKategorii
WHEN 'O' THEN 'Owoc'
WHEN 'W' THEN 'Warzywo'
ELSE 'Inne'
END;
 
SELECT
Uczeń AS "Uczeń",
LiczbaLatNauki AS "Liczba lat nauki",
OcenianaPraca AS "Oceniana praca",
AVG(LiczbaPunktów) AS "Średnia liczba punktów"
FROM Punktacja
WHERE OcenianaPraca = 'Sprawdzian'
GROUP BY Uczeń, LiczbaLatNauki, OcenianaPraca
HAVING AVG(LiczbaPunktów) >=
CASE
WHEN LiczbaLatNauki = 7 THEN 70
WHEN LiczbaLatNauki = 8 THEN 75
ELSE 80
END
ORDER BY Uczeń;

SELECT
ROW_NUMBER() OVER (ORDER BY StosunekCenyDoZysku) AS "Numer wiersza",
Skrót AS "Symbol",
NazwaFirmy AS "Nazwa",
NazwaGiełdy AS "Giełda",
StosunekCenyDoZysku AS "Stosunek ceny do zysku"
FROM Akcje
ORDER BY StosunekCenyDoZysku;

SELECT
ROW_NUMBER() OVER (ORDER BY StosunekCenyDoZysku) AS "Numer wiersza",
RANK() OVER (ORDER BY StosunekCenyDoZysku) AS "Wynik funkcji rank",
DENSE_RANK() OVER (ORDER BY StosunekCenyDoZysku) AS "Wynik funkcji dense_rank",
Skrót AS "Symbol",
StosunekCenyDoZysku AS "Stosunek ceny do zysku"
FROM Akcje
ORDER BY StosunekCenyDoZysku;

SELECT
NTILE(4) OVER (ORDER BY StosunekCenyDoZysku) AS "Kwartyl",
NTILE(10) OVER (ORDER BY StosunekCenyDoZysku) AS "Decyl",
Skrót AS "Symbol",
StosunekCenyDoZysku AS "Stosunek ceny do zysku"
FROM Akcje
ORDER BY StosunekCenyDoZysku;

SELECT
NazwaGiełdy AS "Giełda",
ROW_NUMBER() OVER (PARTITION BY NazwaGiełdy ORDER BY StosunekCenyDoZysku)
AS "Nr wiersza w ramach giełdy",
Skrót AS "Symbol",
NazwaFirmy AS "Nazwa",
StosunekCenyDoZysku AS "Stosunek ceny do zysku"
FROM Akcje
ORDER BY NazwaGiełdy, StosunekCenyDoZysku;

SELECT
NazwaGiełdy AS "Giełda",
NTILE(4) OVER (PARTITION BY NazwaGiełdy ORDER BY StosunekCenyDoZysku) 
AS "Numer kwartyla",
Skrót AS "Symbol",
StosunekCenyDoZysku AS "Stosunek ceny do zysku"
FROM Akcje
ORDER BY NazwaGiełdy, StosunekCenyDoZysku;




- - - - - - — - - - - - - - - - - - - -
INSTRUKCJE SQL Z ROZDZIAŁU 10

- - - - - - — - - - - - - - - - - - - -



SELECT
Kategoria,
Podkategoria,
SUM(LiczbaSztuk) AS "Liczba sztuk"
FROM WykazProduktów
GROUP BY Kategoria, Podkategoria
ORDER BY Kategoria, Podkategoria

SELECT
Kategoria,
Podkategoria,
SUM(LiczbaSztuk) AS "Liczba sztuk"
FROM WykazProduktów
GROUP BY ROLLUP(Kategoria, Podkategoria);

SELECT
Kategoria,
Podkategoria,
SUM(LiczbaSztuk) AS "Liczba sztuk"
FROM WykazProduktów
GROUP BY ROLLUP(Kategoria, Podkategoria)
ORDER BY Kategoria, Podkategoria;

SELECT
Kategoria,
Podkategoria,
SUM(LiczbaSztuk) AS "Liczba sztuk",
GROUPING(Kategoria) AS "Kategoria – GROUPING",
GROUPING(Podkategoria) AS "Podkategoria – GROUPING"
FROM WykazProduktów
GROUP BY ROLLUP(Kategoria, Podkategoria);

SELECT
NVL(Kategoria,'') AS "Kategoria",
NVL(Podkategoria, '') AS "Podkategoria",
SUM(LiczbaSztuk) AS "LiczbaSztuk",
CASE WHEN GROUPING(Kategoria) = 1 then 'Suma łączna'
WHEN GROUPING(Podkategoria) = 1 then 'Suma częściowa'
ELSE ' ' END AS "Suma częściowa/Suma łączna"
FROM WykazProduktów
GROUP BY ROLLUP(Kategoria, Podkategoria);

SELECT
CASE
WHEN GROUPING(Kategoria) = 1 THEN 'SUMA ŁĄCZNA'
WHEN GROUPING(Podkategoria) = 1 THEN 'SUMA CZĘŚCIOWA'
ELSE NVL(Kategoria,'') END AS "Kategoria",
NVL(Podkategoria, '') AS "Podkategoria",
SUM(LiczbaSztuk) AS "Liczba sztuk"
FROM WykazProduktów
GROUP BY ROLLUP(Kategoria, Podkategoria);

SELECT 
Województwo,
KanałSprzedaży AS "Kanał sprzedaży",
SUM(KwotaSprzedaży) AS "Kwota sprzedaży"
FROM ZestawienieSprzedaży
GROUP BY Województwo, KanałSprzedaży
ORDER BY Województwo, KanałSprzedaży;

SELECT 
Województwo,
KanałSprzedaży AS "Kanał sprzedaży",
SUM(KwotaSprzedaży) AS "Kwota sprzedaży"
FROM ZestawienieSprzedaży
GROUP BY CUBE(Województwo, KanałSprzedaży)
ORDER BY Województwo, KanałSprzedaży;

SELECT 
Województwo,
KanałSprzedaży AS "Kanał sprzedaży",
SUM(KwotaSprzedaży) AS "Kwota sprzedaży",
GROUPING(Województwo) AS "Województwo – GROUPING",
GROUPING(KanałSprzedaży) AS "Kanał sprzedaży – GROUPING"
FROM ZestawienieSprzedaży
GROUP BY CUBE(Województwo, KanałSprzedaży)
ORDER BY Województwo, KanałSprzedaży;

SELECT
NVL(Województwo,' ') AS "Województwo",
NVL(KanałSprzedaży, ' ') AS "Kanał sprzedaży",
SUM(KwotaSprzedaży) AS "Kwota sprzedaży",
CASE WHEN GROUPING(Województwo) = 1
AND GROUPING(KanałSprzedaży) = 1 then 'Suma łączna'
WHEN GROUPING(Województwo) = 1 
AND GROUPING(KanałSprzedaży) = 0 then 'Kanał sprzedaży – suma częściowa'
WHEN GROUPING(Województwo) = 0
AND GROUPING(KanałSprzedaży) = 1 then 'Województwo – suma częściowa'
ELSE ' ' END AS "Suma częściowa/Suma łączna"
FROM ZestawienieSprzedaży
GROUP BY CUBE(Województwo, KanałSprzedaży)
ORDER BY
CASE 
WHEN GROUPING(Województwo) = 0 AND GROUPING(KanałSprzedaży) = 0 THEN 1
WHEN GROUPING(Województwo) = 0 AND GROUPING(KanałSprzedaży) = 1 THEN 2
WHEN GROUPING(Województwo) = 1 AND GROUPING(KanałSprzedaży) = 0 THEN 3
ELSE 4 END;

SELECT
Województwo,
KanałSprzedaży,
SUM(KwotaSprzedaży) AS "Kwota sprzedaży"
FROM ZestawienieSprzedaży
GROUP BY Województwo, KanałSprzedaży
ORDER BY Województwo, KanałSprzedaży;

SELECT
DataSprzedaży, 
Województwo,
KanałSprzedaży,
SUM(KwotaSprzedaży) AS "Kwota sprzedaży"
FROM ZestawienieSprzedaży
GROUP BY DataSprzedaży, Województwo, KanałSprzedaży
ORDER BY DataSprzedaży, Województwo, KanałSprzedaży;

SELECT * FROM
(SELECT DataSprzedaży, KanałSprzedaży, Województwo, KwotaSprzedaży FROM ZestawienieSprzedaży) 
PIVOT (SUM(KwotaSprzedaży) FOR Województwo IN ('MAZ', 'PDL')) 
ORDER BY DataSprzedaży;

SELECT * FROM
(SELECT KanałSprzedaży, DataSprzedaży, Województwo, KwotaSprzedaży FROM ZestawienieSprzedaży)
PIVOT (SUM(KwotaSprzedaży) FOR Województwo IN ('MAZ', 'PDL'))
ORDER BY KanałSprzedaży;

SELECT * FROM
(SELECT DataSprzedaży, Województwo, KanałSprzedaży, KwotaSprzedaży FROM ZestawienieSprzedaży)
PIVOT (SUM(KwotaSprzedaży) FOR KanałSprzedaży IN ('Internet', 'PunktSprzedażyDetalicznej'))
ORDER BY DataSprzedaży;



- - - - - - — - - - - - - - - - - - - -
INSTRUKCJE SQL Z ROZDZIAŁU 11
- - - - - - — - - - - - - - - - - - - -



SELECT *
FROM Klienci
INNER JOIN Zamówienia
ON Klienci.IDKlienta = Zamówienia.IDKlienta;

SELECT *
FROM Zamówienia
INNER JOIN Klienci
ON Zamówienia.IDKlienta = Klienci.IDKlienta;

SELECT *
FROM Klienci, Zamówienia
WHERE Klienci.IDKlienta = Zamówienia.IDKlienta;

SELECT
K.IDKlienta AS "ID klienta",
K.ImięKlienta AS "Imię klienta",
K.NazwiskoKlienta AS "Nazwisko klienta",
Z.IDZamówienia AS "ID zamówienia",
Z.DataZamówienia AS "Data",
Z.KwotaZamówienia AS "Kwota"
FROM Klienci K
INNER JOIN Zamówienia Z
ON K.IDKlienta = Z.IDKlienta;



- - - - - - — - - - - - - - - - - - - -
INSTRUKCJE SQL Z ROZDZIAŁU 12
- - - - - - — - - - - - - - - - - - - -



SELECT
Klienci.ImięKlienta AS "Imię klienta",
Klienci.NazwiskoKlienta AS "Nazwisko klienta",
Zamówienia.DataZamówienia AS "Data zamówienia",
Zamówienia.KwotaZamówienia AS "Kwota zamówienia",
Zwroty.DataZwrotu AS "Data zwrotu",
Zwroty.KwotaZwrotu AS "Kwota zwrotu"
FROM Klienci
LEFT JOIN Zamówienia
ON Klienci.IDKlienta = Zamówienia.IDKlienta
LEFT JOIN Zwroty
ON Zamówienia.IDZamówienia = Zwroty.IDZamówienia
ORDER BY Klienci.NazwiskoKlienta, Klienci.ImięKlienta, Zamówienia.DataZamówienia;

SELECT
Klienci.ImięKlienta AS "Imię klienta",
Klienci.NazwiskoKlienta AS "Nazwisko klienta",
Zamówienia.DataZamówienia AS "Data zamówienia",
Zamówienia.KwotaZamówienia AS "Kwota zamówienia"
FROM Klienci
LEFT JOIN Zamówienia
ON Klienci.IDKlienta = Zamówienia.IDKlienta
LEFT JOIN Zwroty
ON Zamówienia.IDZamówienia = Zwroty.IDZamówienia
WHERE Zamówienia.IDZamówienia IS NOT NULL
AND Zwroty.IDZwrotu IS NULL
ORDER BY Klienci.NazwiskoKlienta, Klienci.ImięKlienta, Zamówienia.DataZamówienia;

SELECT
OpisKlasyfikacji AS "Opis klasyfikacji filmu",
TytułFilmu AS "Tytuł filmu"
FROM Filmy
FULL JOIN KlasyfikacjaFilmów
ON Filmy.Klasyfikacja = KlasyfikacjaFilmów.Klasyfikacja
ORDER BY OpisKlasyfikacji, TytułFilmu;

SELECT
Rozmiar,
Kolor
FROM RozmiaryKoszulek
CROSS JOIN KoloryKoszulek;

SELECT
Rozmiar,
Kolor
FROM RozmiaryKoszulek, KoloryKoszulek;

SELECT
IDZamówienia AS "ID zamówienia",
DataZamówienia AS "Data zamówienia",
KwotaZamówienia AS "Kwota zamówienia"
FROM Zamówienia
CROSS JOIN KluczoweDaty
WHERE DataZamówienia = OstatniaDataPrzetwarzania;



- - - - - - — - - - - - - - - - - - - -
INSTRUKCJE SQL Z ROZDZIAŁU 13
- - - - - - — - - - - - - - - - - - - -



SELECT
Pracownicy.Pracownik AS "Imię i nazw. pracownika",
Przełożeni.Pracownik AS "Imię i nazw. przełożonego"
FROM Kadry Pracownicy
INNER JOIN Kadry Przełożeni
ON Pracownicy.IDPrzełożonego = Przełożeni.IDPracownika
ORDER BY Pracownicy.Pracownik;

SELECT
Pracownicy.Pracownik AS "Imię i nazw. pracownika",
Przełożeni.Pracownik AS "Imię i nazw. przełożonego"
FROM Kadry Pracownicy
LEFT JOIN Kadry Przełożeni
ON Pracownicy.IDPrzełożonego = Przełożeni.IDPracownika
ORDER BY Pracownicy.Pracownik;

SELECT
Klienci.ImięKlienta AS "Imię klienta",
Klienci.NazwiskoKlienta AS "Nazwisko klienta",
Zamówienia.DataZamówienia AS "Data zamówienia",
Zamówienia.KwotaZamówienia AS "Kwota zamówienia",
Zwroty.DataZwrotu AS "Data zwrotu",
Zwroty.KwotaZwrotu AS "Kwota zwrotu"
FROM Klienci
LEFT JOIN Zamówienia
ON Klienci.IDKlienta = Zamówienia.IDKlienta
LEFT JOIN Zwroty
ON Zamówienia.IDZamówienia = Zwroty.IDZamówienia
ORDER BY Klienci.NazwiskoKlienta, Klienci.ImięKlienta, Zamówienia.DataZamówienia;

CREATE VIEW KlienciZamówieniaZwroty AS
SELECT
Klienci.ImięKlienta AS "Imię klienta",
Klienci.NazwiskoKlienta AS "Nazwisko klienta",
Zamówienia.DataZamówienia AS "Data zamówienia",
Zamówienia.KwotaZamówienia AS "Kwota zamówienia",
Zwroty.DataZwrotu AS "Data zwrotu",
Zwroty.KwotaZwrotu AS "Kwota zwrotu"
FROM Klienci
LEFT JOIN Zamówienia
ON Klienci.IDKlienta = Zamówienia.IDKlienta
LEFT JOIN Zwroty
ON Zamówienia.IDZamówienia = Zwroty.IDZamówienia;

SELECT *
FROM KlienciZamówieniaZwroty;

SELECT *
FROM KlienciZamówieniaZwroty
ORDER BY "Nazwisko klienta", "Imię klienta", "Data zamówienia";

SELECT
"Imię klienta",
"Nazwisko klienta",
"Data zamówienia"
FROM KlienciZamówieniaZwroty
WHERE "Nazwisko klienta" = 'Wieczorek';

DROP VIEW KlienciZamówieniaZwroty;



- - - - - - — - - - - - - - - - - - - -
INSTRUKCJE SQL Z ROZDZIAŁU 14
- - - - - - — - - - - - - - - - - - - -



SELECT
NazwaUżytkownika AS "Nazwa użytkownika",
NVL(TransakcjeGotówka.SumaGotówka, 0) AS "Łączna kw. zapł. gotówką"
FROM Użytkownicy
LEFT JOIN
(SELECT
IDUżytkownika,
SUM(KwotaTransakcji) AS SumaGotówka
FROM Transakcje
WHERE SposóbZapłaty = 'Gotówka'
GROUP BY IDUżytkownika) TransakcjeGotówka
ON Użytkownicy.IDUżytkownika = TransakcjeGotówka.IDUżytkownika
ORDER BY Użytkownicy.IDUżytkownika;

SELECT
IDUżytkownika,
SUM(KwotaTransakcji) AS "SumaGotówka"
FROM Transakcje
WHERE SposóbZapłaty = 'Gotówka'
GROUP BY IDUżytkownika;

SELECT
NazwaUżytkownika AS "Nazwa użytkownika",
SUM(KwotaTransakcji) AS "SumaGotówka"
FROM Użytkownicy
LEFT JOIN Transakcje 
ON Użytkownicy.IDUżytkownika = Transakcje.IDUżytkownika
WHERE SposóbZapłaty = 'Gotówka'
GROUP BY Użytkownicy.IDUżytkownika, Użytkownicy.NazwaUżytkownika 
ORDER BY Użytkownicy.IDUżytkownika;

SELECT NazwaUżytkownika AS "Nazwa użytkownika"
FROM Użytkownicy
WHERE IDUżytkownika IN 
(SELECT IDUżytkownika 
FROM Transakcje
WHERE SposóbZapłaty = 'Gotówka');

SELECT NazwaUżytkownika AS "Nazwa użytkownika"
FROM Użytkownicy
INNER JOIN Transakcje
ON Użytkownicy.IDUżytkownika = Transakcje.IDUżytkownika
WHERE SposóbZapłaty = 'Gotówka'
GROUP BY Użytkownicy.NazwaUżytkownika;

SELECT 
NazwaUżytkownika AS "Nazwa użytkownika"
FROM Użytkownicy
WHERE
(SELECT
SUM(KwotaTransakcji) 
FROM Transakcje
WHERE Użytkownicy.IDUżytkownika = Transakcje.IDUżytkownika)
< 20;

SELECT 
NazwaUżytkownika AS "Nazwa użytkownika"
FROM Użytkownicy
LEFT JOIN Transakcje
ON Użytkownicy.IDUżytkownika = Transakcje.IDUżytkownika
GROUP BY Użytkownicy.IDUżytkownika, Użytkownicy.NazwaUżytkownika
HAVING SUM (KwotaTransakcji) < 20;

SELECT 
NazwaUżytkownika AS "Nazwa użytkownika"
FROM Użytkownicy
WHERE EXISTS
(SELECT *
FROM Transakcje
WHERE Użytkownicy.IDUżytkownika = Transakcje.IDUżytkownika);

SELECT 
NazwaUżytkownika AS "Nazwa użytkownika"
FROM Użytkownicy
WHERE IDUżytkownika IN
(SELECT IDUżytkownika
FROM Transakcje);

SELECT 
NazwaUżytkownika AS "Nazwa użytkownika"
FROM Użytkownicy
INNER JOIN Transakcje
ON Użytkownicy.IDUżytkownika = Transakcje.IDUżytkownika
GROUP BY NazwaUżytkownika;

SELECT 
NazwaUżytkownika AS "Nazwa użytkownika",
COUNT(IDTransakcji) AS "Liczba transakcji"
FROM Użytkownicy
LEFT JOIN Transakcje
ON Użytkownicy.IDUżytkownika = Transakcje.IDUżytkownika 
GROUP BY Użytkownicy.IDUżytkownika, Użytkownicy.NazwaUżytkownika
ORDER BY Użytkownicy.IDUżytkownika;

SELECT 
NazwaUżytkownika AS "Nazwa użytkownika",
(SELECT
COUNT(IDTransakcji)
FROM Transakcje
WHERE Użytkownicy.IDUżytkownika = Transakcje.IDUżytkownika)
AS "Liczba transakcji"
FROM Użytkownicy
ORDER BY Użytkownicy.IDUżytkownika;

SELECT
NazwaUżytkownika AS "Nazwa użytkownika",
NVL(TransakcjeGotówka.SumaGotówka, 0) AS "Łączna kw. zapł. gotówką"
FROM Użytkownicy
LEFT JOIN
(SELECT
IDUżytkownika,
SUM(KwotaTransakcji) AS SumaGotówka
FROM Transakcje
WHERE SposóbZapłaty = 'Gotówka'
GROUP BY IDUżytkownika) TransakcjeGotówka
ON Użytkownicy.IDUżytkownika = TransakcjeGotówka.IDUżytkownika
ORDER BY Użytkownicy.IDUżytkownika;

WITH TransakcjeGotówka AS
(SELECT
IDUżytkownika,
SUM(KwotaTransakcji) AS SumaGotówka
FROM Transakcje
WHERE SposóbZapłaty = 'Gotówka'
GROUP BY IDUżytkownika)
SELECT
NazwaUżytkownika AS "Nazwa użytkownika",
NVL(TransakcjeGotówka.SumaGotówka, 0) AS "Łączna kw. zapł. gotówką"
FROM Użytkownicy
LEFT JOIN TransakcjeGotówka
ON Użytkownicy.IDUżytkownika = TransakcjeGotówka.IDUżytkownika
ORDER BY Użytkownicy.IDUżytkownika;



- - - - - - — - - - - - - - - - - - - -
INSTRUKCJE SQL Z ROZDZIAŁU 15
- - - - - - — - - - - - - - - - - - - -



SELECT
DataZamówienia AS "Data",
'Zamówienie' AS "Rodzaj",
KwotaZamówienia AS "Kwota"
FROM Zamówienia
WHERE IDKlienta = 2
UNION
SELECT
DataZwrotu as "Data",
'Zwrot' AS "Rodzaj",
KwotaZwrotu AS "Kwota"
FROM ZwrotyTowarów
WHERE IDKlienta = 2
ORDER BY "Data";

SELECT
DataZamówienia AS "Data"
FROM Zamówienia
UNION
SELECT
DataZwrotu as "Data"
FROM ZwrotyTowarów
ORDER BY "Data";

SELECT
DataZamówienia AS "Data"
FROM Zamówienia
UNION ALL
SELECT
DataZwrotu as "Data"
FROM ZwrotyTowarów
ORDER BY "Data";

SELECT
DataZamówienia AS "Data"
FROM Zamówienia
INTERSECT
SELECT
DataZwrotu as "Data"
FROM ZwrotyTowarów
ORDER BY "Data";

SELECT
DataZamówienia AS "Data"
FROM Zamówienia
MINUS
SELECT
DataZwrotu as "Data"
FROM ZwrotyTowarów
ORDER BY "Data";



- - - - - - — - - - - - - - - - - - - -
INSTRUKCJE SQL Z ROZDZIAŁU 17- - - - - - — - - - - - - - - - - - - -



INSERT INTO Kontrahenci
(ImięKontrahenta, NazwiskoKontrahenta, Województwo)
VALUES
('Klaudia', 'Dawidowska', 'ZPM');

INSERT INTO Kontrahenci
(ImięKontrahenta, NazwiskoKontrahenta, Województwo)
VALUES
('Irena', 'Krause', 'OPO');

INSERT INTO Kontrahenci
(ImięKontrahenta, NazwiskoKontrahenta)
VALUES
('Dawid', 'Grabowski');

INSERT INTO Kontrahenci
(ImięKontrahenta, NazwiskoKontrahenta, Województwo)
SELECT
Nazwa1,
Nazwa2,
Województwo
FROM NowiKontrahenci
WHERE Województwo = 'PKR';

DELETE
FROM Kontrahenci
WHERE Województwo = 'PKR';

SELECT
COUNT (*)
FROM Kontrahenci
WHERE Województwo = 'PKR';

UPDATE Dostawcy
SET Dostawcy.Województwo =
(SELECT ZmianaDanychDostawców.Województwo
FROM ZmianaDanychDostawców
WHERE Dostawcy.IDDostawcy = ZmianaDanychDostawców.IDDostawcy),
Dostawcy.KodPocztowy =
(SELECT ZmianaDanychDostawców.KodPocztowy
FROM ZmianaDanychDostawców
WHERE Dostawcy.IDDostawcy = ZmianaDanychDostawców.IDDostawcy)
WHERE EXISTS
(SELECT *
FROM ZmianaDanychDostawców
WHERE Dostawcy.IDDostawcy = ZmianaDanychDostawców.IDDostawcy);



- - - - - - — - - - - - - - - - - - - -
INSTRUKCJE SQL Z ROZDZIAŁU 18
- - - - - - — - - - - - - - - - - - - -



CREATE TABLE MojaTabela
(Kolumna_1 INT PRIMARY KEY NOT NULL,
Kolumna_2 INT NULL,
Kolumna_3 VARCHAR(25) NULL,
Kolumna_4 FLOAT DEFAULT 10 NULL,
CONSTRAINT "KluczObcy" FOREIGN KEY(Kolumna_2)
REFERENCES PowiązanaTabela (PierwszaKolumna)
ON DELETE SET NULL);

ALTER TABLE MojaTabela
DROP COLUMN Kolumna_3;

CREATE INDEX Indeks2
ON MojaTabela (Kolumna_4);

DROP INDEX Indeks2;

DROP TABLE MojaTabela;

