Połączenia: NATURAL JOIN, JOIN ON, LEFT OUTER JOIN, RIGHT OUTER JOIN, FULL OUTER JOIN

lipiec 11th, 2008


Możemy połączyć tabele za pomocą NATURAL JOIN jeżeli w łączonych tabelach są kolumny które nazywają sie tak samo i są  tego samego typu, przykład:

select imie, nazwisko, adres from pracownik NATURAL JOIN zamieszkanie;

Jeżeli kolumny mają te same typy i dane i te same nazwy wtedy należy użyć łączenia typu JOIN … USING i tu wskazać  nazwę kolumny, przykład:

select a.imie, a.nazwisko, b.wynagrodzenie from pracownik a JOIN pensje b USING (wyn_id);

Jeżeli chcemy wskazać jak mamy połączyć tabele tj. jakich kolumn użyć do połączenie wtedy używamy JOIN … ON …  przykład:

select a.imie, a.nazwisko, b.wynagrodzenie from pracownik JOIN pensje ON a.wyn_id=b.wyn_id;  

LEFT OUTER JOIN to połączenie w wyniku którego wszystkie wiersze są wyświetlane z lewej tabeli nawet jak nie maja  odpowiedników w prawej tabeli,

RIGHT OUTER JOIN odpowiednio wyświetlają się wszystkie wiersze z prawej tabeli nawet  jak nie mają odpowiedników w kolumnie łączącej w lewej tabeli.

FULL OUTER JOIN wszystkie wiersze są wyświetlane z prawej tabeli nawet jak nie maja odpowiedników w lewej tabeli a  także wszystkie wiersze są wyświetlane z lewej tabeli nawet jak nie maja odpowiedników (kolumnowych) w prawej tabeli.

Wyświetlanie danych z kilku tabel

lipiec 11th, 2008


Istniej możliwość wyświetlania danych z kilku tabel w jednym zapytaniu, żeby to zrobić musimy połączyć te tabele,  istnieją trzy sposoby łączenia tabel:

LEFT OUTER, RIGHT OUTER i FULL OUTER.

Tabele łączymy łącząc odpowiednie kolumny,  tzn najlepiej jak kolumny mają te same typy i są mają te same wartości, podam przykład połączenia 2 tabel:

tabela  Pracownicy i tabela Zamieszkanie,

select pracownicy.imie, zamieszkanie.adres from pracownicy, zamieszkanie where pracownicy.id_prac=zamieszkanie.id_zam;

to zapytanie może wyglądać także:

select x.imie, y.adres from pracownicy x,  zamieszkanie y where x.id_prac=y.id_zam;

wynik tych dwóch zapytań będzie identyczny. W tym drugim przykładzie wykorzystaliśmy aliasy.

ORDER BY - sortowanie danych w zapytaniu select

lipiec 11th, 2008


Bardzo często mamy potrzebę posortowania danych które otrzymaliśmy w wyniku zapytania select

przykład:

select  imie,nazwisko from studenci ORDER BY 1;

lub w inny sposób

select imie, nazwisko from studenci order by imie;

w  pierwszym przykładzie sortujemy po imieniu i w drugim przypadku także po imieniu przykłady pokazuje ze po order by
możemy wymienić albo nazwę kolumny albo nr kolumny, ten nr to nr w zapytaniu, kolumny w tabeli nie są numerowane.  Sortowanie możemy zrobić rosnąco ASC lub malejąco DESC.

Jeżeli nie napiszemy w jaki sposób ma być sortowanie to defaultowo przyjmuje:

-) dla wartości numerycznych rosnąco od 1 do 999

-) dla wartości alfanumerycznych rosnąco alfa-numerycznie od A do Z

-) dla daty od najwcześniejszej do późniejszej 03-JUL-2001 do wcześniejszej 04-Jan-2007

SQL - Regular Expressions

lipiec 11th, 2008


W oracle SQL możemy wymienić następujące funkcje:

REGEXP_INSTR, REGEXP_LIKE, REGEXP_REPLACE, REGEXP_SUBSTR, najlepszym  sposobem opisu tych funkcji będą przykłady:

-) funkcja REGEXP_LIKE:

select imie, nazwisko from STUDENCI where REGEXP_LIKE(nazwisko, ‘[P|Ir|joz|mo]G[orz|ge]’);

to zapytanie zwróci imię,  nazwisko gdzie nazwiska zaczynają sie na P lub IR lub joz lub mo lub zaczyna się na G a kończy na orz lub ge czyli  Grzegorz lub George, lub wcześniejsze warunki Paweł, IRek, jozef, monika itd.

-) funkcja REGEXP_REPLACE:

select numer_NIP, REGEXP_REPLACE(numer_NIP, ‘([[.digit.]]{3})\.([[.digit.]]{3})\.([[.digit.]]{2})\.([[.digit.]]{2})’,  ‘(\1-\2-\3-\4) from Pracownicy;

ten select spowoduje że NIP z postaci 123.234.75.74 zostanie wyświetlony jako 123-234-75-74

Operatory które wykorzystujemy w warunku where

lipiec 11th, 2008

Przy zapytaniach select w części warunków możemy stosować następujące operatory:

= równości,

<> różne,

!= nie równe,

> większe,

>= większe równe,

< mniejsze,

<= mniejsze równe

BETWEEN … AND … operator pomiędzy np. beetwen 5 and 8 czyli wszystkie wartości pomiędzy 5 i 8 czyli np. 6 będzie  spełniało ten warunek;

LIKE operator do wyszukiwania stringu  np. like ‘%IO%’ warunek będzie spełniony jeżeli w wyrazie znajdą sie znaki  litery IO np. select imie , nazwisko from STUDENCI where imie like ‘%IO%’; w wyniku tego zapytania dostaniemy  wszystkie rekordy które w kolumnie imie bedą miały IO koło siebie, np. PIOTR, WIOLA itp. inny przypadek where nazwisko like ‘P%’ ten warunek zwróci wszystkich których nazwisko zaczyna sie na P czyli np. Paweł, Piotr, Przemek

IN(), NOT IN() warunek czy testuje czy jest czy nie np. select * from STUDENCI where wiek IN (13,15); zapytanie zwróci  wiersze które spełniaja warunek że wiek studentów będzie 13 lub 15.


subaru salon - samochodowe instalacje gazowe - mosir - Lokaty - Berlin - apartamenty Kraków na skale - Meble łazienkowe Warszawa - Co kręci facetów - tworzenie stron internetowych - lampy ogrodowe