KOMENDY:
Constraint Offices_pk primary key //nadawanie klucza głównego
Constraint offices_fk foreign key (ino) references invoices // ograniczenie klucz obcy w tabeli
Constraint offices_check check(ytdsales>=0) //check
Constraint offices_pk primary key (ono, state) //dwa klucze główne
Constraint customers_check check (lat>=0 and long <=180) //and
Constraint customers_check check (sex='f' or sex='m') //or
Constraint detail_fk foreign key (ino) references invoices on delete cascade //usuwa cały detail gdy del ino
Notes varchar2(100) //tworzenie zmiennej(dłuższej)
State_name char(7) not null unique //not null, unique
data_zatrud date default to_date('01/11/2007', 'DD/MM/YYYY') //ustawiamy konkretną datę
data_zatrud date not null //typu date
data_zatrud default (sysdate) //domyślnie data systemowa
alter table customers add
(sex char, constraint customer_check_sex check (sex='f' or sex='m') )
alter table offices add
(constraint offices_fk foreign key state references states(state) )
alter table offices modify ono char(8) //modyfikacja typu lub rozmiaru w kolumnie
alter table offices drop column cno // usuwanie jednej kolumny
alter table offices drop (cno ,ino,pno) //usuwanie kilku kolumn
alter table offices set unused column cno //ukrywanie fizycznie dostępnych kolumn
alter table drop unused columns //usuń nieużywane kolumny
truncate table customer //usuń szybko tabele
purge recyclebin //opróżnić kosz
drop table customer purge //usuwa tabelę i tez z kosza
purge table customer //usuwa tabele z kosza
set autocommit on //transakcje będą potwierdzana/zapisywanie po execute
commit /rollback // stosujemy po każdej operacji aby zapisywało/wycofywało
SAVEPOINT A // PUNKT KONTROLNY (ZAPISUJE DANY STAN)
INSERT INTO states (state, state_name) //tworzenie wierszy dla tabeli STATES
Values (`NM', `new mexico')
SAVEPOINT B //// PUNKT KONTROLNY (ZAPISUJE DANY STAN)
INSERT INTO states (state, state_name)
Values (`NM', to_date('01/11/2007', 'DD/MM/YYYY'))
ROLLBACK TO SAVEPOINT A //POWRÓT DO STANU A
INSERT INTO tabela(pole1, pole2,..) //kopiowanie danych miedzy tabelami
SELECT
INSERT INTO invoices (...) // dodanie do wartości daty systemowej
Values (...,SYSDATE,...)
DELETE FROM tabela //usun dane z tabeli pod warunkiem…
WHERE warunek
UPDATE parts //modyfikacja danych (w wierszu)
SET inhand=56, onorder=635
WHERE pno=1
UPDATE states
SET state-`LS' //zmiana czegoś w tabeli
WHERE state='FL'
ALTER TABLE invoices //usunięcie wymogów z tabeli faktury
DROP CONSTRAINT invoices_fk
ALTER TABLE invoices ADD
(CONSTRAINT invoices_fk foreign key (salesman) references salesman on delete not null ) //dodanie wymogu
ALTER TABLE offices MODIFY //dodanie wymogu NOT NULL
name NOT NULL
SELECT *
FROM user_constraints
WHERE table_name='customers' //wyświetla wymogi integralności referencyjnej
SELECT *
FROM user_cons_columns
WHERE table_name='customers' //wyświetla wymogi integralności semantycznej
CREATE TABLE customer1 //TWORZENIE TABELI W LOCIE
AS SELECT *
FROM CUSTOMER
WHERE 1>0 //FAŁSZ
DELETE FROM states //usuwanie biur w danym stanie
WHERE (state='CA')
Dodawanie kolumny z wymogiem NOT NULL do tabeli wypełnionej wierszami:
dodać kolumnę bez wymogu
wypełnić ja wierszami
dodać wymóg NOT NULL
zmienić rozmiar lub typ kolumny można: - gdy jest ona pusta i wypełniona wartościami NULL
-gdy tak nie jest trzeba ją usunać i dodać nową inego typu
Zmiana wymogów: - usuwamy wymóg(drop constraint) i dodajemy nowy (ADD(constraint...))
SELECT *
FROM user_tables //wszystkie tabele użytkownika
FROM all_tables //wszystko z wszystkich tabel
FROM rk0.salesman //wszyscy sprzedawcy dla ownera rk0
SELECT *
FROM rk0.cennik
WHERE miara !='kg' //wszystko z cennika dla rk0 inne od kg
WHERE nazwa LIKE `%fi%' //pokazuje nazwy gdzie występuje słowo fi ale nie tylko
WHERE UPPER(nazwa) LIKE `%FI%' //to co wyżej ale zamienia jeszcze małe litery na duze
SELECT *
FROM rk0.customer
WHERE company like `%computer%' // w nazwie wystepuje słowo computer(nie tylko)
WHERE company like `__x%' // na 3 znaku jest litera x
SELECT company, state, city
FROM rk0.customer //pokazuje firmę, stan I miasto dla klintów ze stanu NM
WHERE state='NM'
SELECT company, state, city
FROM rk0.customer //pokazuje firmę, stan I miasto dla klintów ze
WHERE state='NM' or state='KY' or state='GA' // stanu NM lub KY lub GA
SELECT company, state, city
FROM rk0.customer //to co wyżej (inna wersja)
WHERE state IN ('NM', 'KY', 'GA'
SELECT city
FROM rk0.customer //miasta związane z klientem
SELECT city
FROM rk0.customer //sortowanie miast związanych z klientem od a-z
order by city
SELECT DISTINCT city
FROM rk0.customer //miasta się nie powtarzaja + to co wyżej
order by city
SELECT count(*), state
FROM rk0.customer //zliczanie ilosci stanów i grupowanie
Group by state
SELECT count(*), state, sum(ytdpurch) //sum - sumuje
FROM rk0.customer
Group by state //grupuje wg stanu
SELECT count(*), state, sum(ytdpurch) //sortuje wg malejącej sprzedaży
FROM rk0.customer
Group by state
Order by SUM(ytdpurch) desc // lub - SUM(ytdpurch)
SELECT count(*), state, sum(ytdpurch)
FROM rk0.customer //to co wyzej
Having count(*) >10 //wyświetla stany w których jest wiecej niz 10 klientów
Group by state
Order by SUM(ytdpurch) desc
Znaki szkieletowe: % - dowolny ciąg znaków, _ - 1 znak
SELECT company, cno, ytdpurch //wybierz najlepszego klienta pod względem ytdpurch
FROM customer
WHERE ytdpurch >= ALL (SELECT ytdpurch FROM customer)
Lub
SELECT company, cno, ytdpurch //wybierz najlepszego klienta pod względem ytdpurch
FROM customer
WHERE ytdpurch = (SELECT max(ytdpurch) FROM customer)
SELECT DISTINCT c.state //stany do których nic nie sprzedano
FROM customer c
WHERE c.state NOT IN (SELECT c.state FROM customer c, invoices i where c.cno =i.cno)
Lub
SELECT DISTINCT c.state //stany do których nic nie sprzedano
FROM customer c
MINUS
SELECT c.state
FROM customer c, invoices i
WHERE c.cno = i.cno
CREATE INDEX index_klienta ON customer(company) //tworzenie indexu wg nazwy klienta
CREATE SEQUENCE sekwencja_seq //tworzenie sekwencji która zwiększa o 1 zaczynajac od 2000
INCREMENT BY 1 //NextVal to kolejna wartość, a Curr_Val ostatnio wygenerow.
START WITH 2000
INSERT INTO invoices(ino) //użycie sekwencji I wstawienie jej do wiersza
VALUES (sekwencja_seq.NextVal)
CREATE VIEW perspektywa_V as //tworzenie perspektywy, czyli wirtualnej tabeli
SELECT * FROM customer // na tabeli CUSTOMER filtrujac stany FL
WHERE state = `FL'
SELECT * FROM perspektywa_V // sprawdzanie zawartości perspektywy
Gdy dodamy do perspektywy stan inny niż FL pokaże się on tylko w głównej tabeli, gdy mamy perspektywę klientów którzy nic nei kupili i dodamy takiemu klientowi numer faktury to zniknie on z perspektywy. Gdy dodamy cos do perspektywy(spełniającego jej filtrację) to doda się to również do tabeli głównej.
Cross jon - złaczenia krzyżowe
SELECT * FROM offices CROSS JOIN salesman // łączy każdy wiersz tabeli offices z salesman
Natural join - wymaga aby było jakieś pole lub pola w tabelach o tej samej nazwie
SELECT * FROM customer NATURAL JOIN invoices
SELECT * FROM CUSTOMER NATURAL left outer join invoices // klienci dla których nie ma faktur wystawionych
Rownum - jest potrzebne gdy chcemy zwrócić okresloną ilosc wierszy, np. 10 najlepszych klientów. Jeśli chcemy wykorzystać pseudokolumną rownum to zwykle będziemy stosowali zapytanie zagniędzone
SELECT company FROM (SELECT company
FROM customer //wylistuj 20 najlepszych pod względem ytdpurch
ORDER BY ytdpurch desc) //klientów bez tych którzy nic nie kupili
WHERE rownum =20
MINUS
SELECT c.company
FROM customer c
WHERE c.cno NOT IN (SELECT c.cno FROM invoices i)
4