CREATE TABLE - Tworzenie tabeli w bazie oracle

Tabela jest podstawowym obiektem bazodanowym w którym są przechowywane dane.
Tabela bazodanowa składa się z wierszy i kolumn, przy tworzeniu tabeli musimy zdefiniować nazwy i typy kolumn. W wierszach są przechowywane dane innymi słowy jeden wiersz w tabeli to informacje np. o jednym pracowniku w przypadku tabeli PRACOWNICY, w tym wierszu będą takie informacje jak Imie, Nazwisko, data urodzenia itp.

w uproszczeniu tabelę tworzymy następującym poleceniem

CREATE TABELE nazwa_tabeli
(nazwa_1_kolumny typ_danych,
nazwa_2_kolumny typ_danych,
nazwa_3_kolumny typ_danych
..itd... );


typ_danych to typ przechowywanych danych, możemy wyróżnić następujące typy:
-) znakowy np. VARCHAR2()
-) daty DATE
-) numeryczny NUMBER
itd.

......

Dostęp do całego artykułu tylko dla użytkowników zalogowanych!

stwórz swojego użytkownika: załóż nowe konto

{accesstext mode="level" level="registered" noaccess="obecnie masz status gościa"}

Przykład 1
stworzyć tabelę PRACOWNICY, tabela ma przechowywać następujące dane:
Imie, Nazwisko, Data urodzenia, Miejsce urodzenia, Liczba dzieci

odpowiedź
na początku trzeba się zastanowić jakie nazwy i typy będą miały kolumny, ja proponuję następujące:

Imie VARCHAR2(32)
Nazwisko VARCHAR2(32)
Data_urodzenia DATE
Miejsce_urodzenia VARCHAR2(28)
Liczba_dzieci NUMBER

a teraz tworzymy tabelę:

CREATE TABLE PRACOWNICY
(
Imie VARCHAR2(32),
Nazwisko VARCHAR2(32),
Data_urodzenia DATE,
Miejsce_urodzenia VARCHAR2(28)
Liczba_dzieci NUMBER
);


Przykład 2
stworzyć tabele KONTRAHENCI, w tej tabeli będą przechowywane następujące dane:
Nazwa firmy, adres ulica+numer siedziby frimy, kod pocztowy i miejscowość

analogicznie wybieramy typy i nazwy kolumn jak poniżej:

Nazwa_firmy VARCHAR2(20)
AAA3 consulting VARCHAR2(18)
Bbb2 company VARCHAR2(6)
Firma2 VARCHAR2(28)

A teraz pozostało nam stworzyć tabelę:

CREATE TABLE KONTRAHENCI
(
Nazwa_firmy VARCHAR2(20),
AAA3 consulting VARCHAR2(18),
Bbb2 company VARCHAR2(6),
Firma2 VARCHAR2(28)
);

I tabela została stworzona

{/accesstext}

ORACLE PRIMARY KEY - klucz główny

PRIMARY KEY służy do tego żeby każdy wiersz w tabeli był unikalny, tworzymy go na kolumnie, wartości w tej kolumnie muszą być unikalne, primary key używamy także do połączenia z innymi tabelami ( połączenie primary key + foreign key).

Primary key możemy utworzyć podczas tworzenia tabeli a także na już utworzonej tabeli

......

Dostęp do całego artykułu tylko dla użytkowników zalogowanych!

stwórz swojego użytkownika: załóż nowe konto

{accesstext mode="level" level="registered" noaccess="obecnie masz status gościa"}

Przykład 1

-) tworzenie PRIMARY KEY w trakcie tworzenia tabeli:

CREATE TABLE nazwa_tabeli
(kol1 INTEGER PRIMARY KEY,
kol2 VARCHAR2(10)
);

 

Przykład 2
-) tworzenie PRIMARY KEY na już utworzonej tabeli (na kolumnie id)

ALTER TABLE nazwa_tabeli ADD PRIMARY KEY (id);

UWAGA ! przy tworzeniu PRIMARY KEY przez ALTER kolumna na której go tworzymy typ kolumny musi być NOT NULL, nie mogą być wartości NULL w tej kolumnie


Przykład 3

Utworzyć tabelę PRACOWNIK która będzie przechowywać następujące dane:

imie, nazwisko, nr telefonu a także kolumnę ID na której będzie primary key

CREATE TABLE PRACOWNIK
(SID integer PRIMARY KEY,
IMIE VARCHAR2(23),
NAZWISKO VARCHAR2(23),
TELEFON NUMBER(10
);


Przykład 4

na utworzonej tabeli KONTAKTY proszę utworzyć primary key na kolumnie nr

ALTER TABLE KONTAKTY ADD PRIMARY KEY (nr);

{/accesstext}

ORACLE CREATE VIEW - tworzenie view

ORACLE VIEW bazodanowe jest obiektem bazy danych można powiedzieć że to taka "wirtualna tabela", view podobnie jak tabela ma swoją nazwę i strukturę ale view fizycznie nie przechowuje danych, view jest utworzone na tabeli lub kilku tabelach.


polecenie do tworzenie ORACLE VIEW

CREATE VIEW nazwa_view as select nazwa_kolumn(y) from nazwa_tabeli;

......

Dostęp do całego artykułu tylko dla użytkowników zalogowanych!

stwórz swojego użytkownika: załóż nowe konto

{accesstext mode="level" level="registered" noaccess="obecnie masz status gościa"}

przykład 1
utworzyć view nazwa view: VIEW1, jako select zapytania select nazwisko from HANDLOWIEC;

CREATE VIEW view1 AS SELECT nazwisko from handlowiec;

zostalo utworzone view:

VIEW1
IMIE VARCHAR2(23)


przykład 2

proszę stworzyć view PIOTR_KRAKOWIAK w którym przechowujemy dane o piotrze krakowiaku

CREATE VIEW PIOTR_KRAKOWIAK
AS SELECT * FROM HANDLOWIEC
WHERE NAZWISKO='krakowiak' AND IMIE='piotr';

view zostało stworzone


przykład 3
wyświetl dane które przechowuje view PIOTR_KRAKOWIAK utworzone w poprzednim przykładzie

select * from PIOTR_KRAKOWIAK;

wynik zapytania:

IMIE  NAZWISKO  ZAMOWIENIE
 -----  ------------  -------------
 piotr  krakowiak  KROWKI

{/accesstext}

ORACLE CREATE INDEX - tworzenie indexu

Index w bazie Oracle jest obiektem bazodanowym który przyspiesza wyświetlanie danych z tabeli,

index-y tworzymy na kolumnie lub kolumnach tabeli w bazie danych, dobrym zwyczajem jest wstawianie przyrosteka INDX w nazwie indeksu.

......

Dostęp do całego artykułu tylko dla użytkowników zalogowanych!

stwórz swojego użytkownika: załóż nowe konto

{accesstext mode="level" level="registered" noaccess="obecnie masz status gościa"}

przykład 1
przykładowy syntax tworzenia indexu

CREATE INDEX nazwa_indexu ON nazwa_tabeli (nazwa_kolumny);

 

przykład 2
stwórz index o nazwie INDX_zamowienia na kolumnie ZAMOWIENIE w tabeli ZAMOWIENIE

CREATE INDEX INDX_zamowienia ON ZAMOWIENIE (ZAMOWIENIE);


przykład 3
na jakiej kolumnie stworzysz index tak żeby poniższe zapytanie chodziło szybciej:

select * from HANDLOWIEC
where nazwisko='krakowiak';

odpowiedź:

należy stworzyć następujący index

CREATE INDEX INDX_handlowiec ON HANDLOWIEC (nazwisko);


przykład 4
stwórz index na kolumnach imie i nazwisko które są w tabeli HANDLOWIEC

CREATE INDEX INDX_handlowiec2 ON HANDLOWIEC (imie, nazwisko);

ten index może się przydać jeżeli ktoś będzie korzystał z zapytania

select * from HANDLOWIEC
where imie='piotr' and nazwisko='krakowiak';

{/accesstext}

ORACLE FOREIGN KEY - klucz obcy

Głównie używamy do połączenia z PRIMARY KEY w innej tabeli, takie połączenie pomaga nam utrzymać integralność danych w bazie danych.

główna różnica w PRIMARY KEY i FOREIGN KEY jest taka że primary key musi mieć wartości unikalne i przez to zapewnia unikalność wierszy w tabeli natomiast foreign key nie musi mieć wartości unikalnych.

przykład który najlepiej zobrazuje primary key i foreign key to np.

mamy dwie tabele HANDLOWIEC i ZAMOWIENIA na tabeli HANDLOWIEC zakładamy na kolumnie ID_HAND primary key a na kolumnie ID_HAND w tabeli ZAMOWIENIA tworzymy foreign key i teraz wartości ID_HAND identyfikuje unikalnie handlowca natomiast w ta kolumna w tabeli ZAMOWIENIA identyfikuje wszystkie zamowienia które zostały podpisane przez danego handlowca

np. chcemy wyszukać wszystkie zamówienia handlowca o nazwisku Kowalski i imieniu Edward

do tego celu musimy połączyć dwie tabele: HANDLOWIEC i ZAMOWIENIA do połącznie oczywiście użyjemy kolumny ID_HAND
w wyniku takiego połączenia otrzymamy wszystkie zamowienia podpisane przez danego handlowca

......

Dostęp do całego artykułu tylko dla użytkowników zalogowanych!

stwórz swojego użytkownika: załóż nowe konto

{accesstext mode="level" level="registered" noaccess="obecnie masz status gościa"}


przykład 1
Tworzenie FOREIGN KEY w trakcie tworzenia tabeli
stworz tabele ZAMOWIENIA która ma następujące kolumny: ID_ZAM, ZAMOWIENIE, DATA_ZAMOW, ID_HAND (foreign key)

create table ZAMOWIENIA
(ID_ZAM INTEGER,
ZAMOWIENIE VARCHAR2(40),
DATA_ZAMOW DATE,
ID_HAND INTEGER references HANDLOWIEC(ID_HAND)
);


przykład 2
na utworzonej tabeli ZAMOWIENIA (stworzona bez klucza obcego) stworzyć klucz obcy ktory ma referencje do primary key ID_HAND w tabeli HANDLOWIEC

ALTER TABLE ZAMOWIENIA
ADD (CONSTRAINT fk_zamow) FOREIGN KEY (id_hand) REFERENCES HANDLOWIEC(ID_HAND);


przykład 3
wyświetl zestawienie wszystkich handlowców i ich zamówień z tabel HANDLOWIEC I ZAMOWIENIA

tabela HANDLOWIEC

ID_HAND IMIE NAZWISKO
---------- ------ ------------
1
2
3
4
5
irek
piotr
wiktor
krzys
vit
wozniak
krakowiak
pyzdra
kolodziej
zarazka



tabela ZAMOWIENIE

ID_ZAM
ZAMOWIENIE
DATA_ZAMOW
ID_HAND
-------- -------------- --------------- ----------
1
2
3
4
5
6
7
PERLY
KROWKI
ROWERY
SAMOCHODY
MOTOROWKI
TRAKTORY
PILKI
22/09/07
12/03/07
02/05/07
06/08/07
09/11/07
16/01/07
21/07/07
1
2
2
2
3
3
4



ZAPYTANIE:

select a.imie, a.nazwisko, b.zamowienie
from handlowiec a, zamowienie b
where a.id_hand=b.id_hand;

WYNIK:

 

 IMIE  NAZWISKO  ZAMOWIENIE
 ------  -------------  ----------------
irek
piotr
piotr
piotr
wiktor
wiktor
krzys
wozniak
krakowiak
krakowiak
krakowiak
pyzdra
pyzdra
kolodziej
PERLY
KROWKI
ROWERY
SAMOCHODY
MOTOROWKI
TRAKTORY
PILKI

 

 {/accesstext}