sql2.pdf
(
224 KB
)
Pobierz
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
1
JĘZYK SQL - powtórzenie
Uwaga
W zamieszczonych poniżej przykładach zapytań wykorzystane zostaną dwie przykładowe
tabele: pracownicy i placowki. Zawartość tabel można obejrzeć na stronie (część
MATERIAŁY -> NIEZBĘDNIK ->
tabele
)
.
Skrypt do ich generowania znajduje się w tej
samej części (plik
tabele.pdf
)
oraz na końcu wykładu. Wykorzystywaną bazą danych jest
ORACLE 10g.
Wyświetlenie informacji o budowie tabeli
Aby wyświetlić informacje o budowie tabeli (liczbie i nazwach jej kolumn, przypisanych im
typach danych oraz nałożonych więzach NOT NULL) należy użyć polecenia
DESCRIBE
.
DESCRIBE nazwa_tabeli;
lub krócej
DESC nazwa_tabeli;
Przykład 1.
DESC pracownicy;
Nazwa
Wartość NULL?
Typ
ID_PRACOWNIKA
NOT NULL
NUMBER(2)
IMIE
NOT NULL
VARCHAR2(15)
NAZWISKO
NOT NULL
VARCHAR2(30)
PLEC
NOT NULL
CHAR(1)
DATA_URODZENIA
NOT NULL
DATE
PESEL
NOT NULL
VARCHAR2(11)
DATA_ZATRUDNIENIA
NOT NULL
DATE
ZAWOD
NOT NULL
VARCHAR2(25)
PENSJA
NOT NULL
NUMBER(7,2)
DODATEK
NUMBER(7,2)
ID_SZEFA
NUMBER(2)
ID_PLACOWKI
NOT NULL
NUMBER(2)
Aleksandra Stasiak © 2008
2
DESC placowki;
Nazwa
Wartość NULL?
Typ
ID_PLACOWKI
NOT NULL
NUMBER(2)
NAZWA
NOT NULL
VARCHAR2(20)
MIEJSCOWOSC
NOT NULL
VARCHAR2(20)
KOD
VARCHAR2(6)
ULICA
NOT NULL
VARCHAR2(30)
NR_ULICY
VARCHAR2(8)
Więz
NOT NULL
sprawia, iż wartość NULL nie jest w danej kolumnie dozwolona (przy
wprowadzaniu nowego wiersza pole we wskazanej kolumnie nie może pozostać
niewypełnione).
Uwagi
Nazwy tabel i kolumn:
–mogą składać się z co najwyżej 30 znaków,
–mogą zawierać litery, cyfry i znaki podkreślenia,
–muszą rozpoczynać się od litery.
Wielkość liter jakiej użyjemy przy podawaniu nazw kolumn lub tabel
nie ma znaczenia, o ile
przy ich tworzeniu nie używaliśmy znaków cudzysłowu. Używanie znaków cudzysłowu przy
tworzeniu tabel, a co za tym idzie zmuszenie systemu do rozróżniania wielkości liter
w nazwach, nie jest zalecane, gdyż może łatwo prowadzić do błędów i nieporozumień.
W wewnętrznym słowniku danych nazwy tabel i kolumn są zapisywane za pomocą wielkich
liter.
Wielkość liter będzie miała znaczenie w momencie wyszukiwania danych odpowiadających
podanym przez użytkownika łańcuchom znakowym.
W nazwach kolumn i tabel nie należy używać polskich znaków.
Podstawowe typy danych
Podstawowymi typami służącymi do przechowywania łańcuchów znakowych są
–
CHAR(n)
, gdzie n oznacza długość łańcucha znakowego (n<= 2000, domyślnie
n=1),
–
VARCHAR2(n)
, gdzie n oznacza maksymalną długość łańcucha znakowego
(n<=4000).
Uwaga
Ciągi znaków typu CHAR(n) mają zawsze stałą długość n. W przypadku wpisania przez
użytkownika mniejszej niż n liczby znaków, system automatycznie uzupełnia go do długości
n spacjami. Typ VARCHAR2(n) jest ciągiem znaków o zmiennej długości i przechowuje
dokładnie tyle znaków, ile zostało wprowadzonych przez użytkownika.
Do p
rzechowywania dat służy typ
DATE
a do przechowywania danych numerycznych typ
NUMBER(n, m)
(gdzie n oznacza liczbę wszystkich użytych cyfr, zaś m - liczbę cyfr po
przecinku).
Aleksandra Stasiak © 2008
3
Klucz główny i klucze obcy
Dla każdej tabeli musi zostać określony
klucz główny
, czyli „zbiór złożony z jednej lub
więcej kolumn, w których wartości jednoznacznie identyfikują cały wiersz” (wybrany
spośród kluczy jednoznacznych). W tabeli może istnieć wiele kluczy jednoznacznych lecz
określa się zawsze jeden klucz główny.
Klucz obcy
to „zbiór złożony z jednej lub więcej kolumn, których wartości występują jako
wartości ustalonego klucza głównego lub jednoznacznego w tej samej lub innej tabeli i są
interpretowane jako wskaźniki do wierszy w tej drugiej tabeli”.
Wybieranie danych z bazy - polecenie SELECT
Do wybierania danych z tabel umieszczonych w bazie danych służą zapytania, które
w najprostszym przypadku mają postać
SELECT [DISTINCT] nazwa_kolumny_1, nazwa_kolumny_2, ...
FROM nazwa_tabeli
[WHERE warunek];
Uwaga
Nawiasy kwadratowe [] oznaczają elementy opcjonalne.
Grupy słów związane z konkretnymi słowami kluczowymi nazywamy
klauzulami
. Dla
uzyskania większej przejrzystości i czytelności zapytania klauzule są zazwyczaj umieszczane
w osobnych linijkach i wyróżniane wielkimi literami (nie ma to znaczenia dla systemu, ale
przyjęcie pewnych konwencji zdecydowanie ułatwia pracę informatykowi).
Tylko dwie spośród wszystkich klauzul są obowiązkowym elementem każdego zapytania. Są
to: klauzula SELECT i klauzula FROM. Klauzula
FROM
wskazuje tabelę lub tabele,
z których wybierane będą dane, a klauzula
SELECT
pozwala wskazać kolumny i/lub
wyrażenia, które mają zostać wyświetlone.
Zastosowanie na liście SELECT słowa kluczowego
DISTINCT
powoduje usunięcie
z wyniku powtarzających się wierszy.
Omówiona dalej opcjonalna klauzula
WHERE
pozwala na wybór tylko tych wierszy tabeli,
które spełniają zamieszczony w klauzuli warunek.
Przykład 2.
SELECT id_pracownika, imie, nazwisko
FROM pracownicy;
Uwaga
Każde zapytanie, tak jak i każde polecenie języka SQL, powinno być zakończone średnikiem.
Poprzedzanie nazw kolumn nazwą tabeli
Można spotkać się z konwencją, w której nazwy kolumn w zapytaniu są poprzedzone nazwą
tabeli, z której pochodzą lub też aliasem - nową (zazwyczaj krótszą) nazwą nadaną tabeli na
czas wykonania zapytania. Nie jest to konieczne, dopóki wybieramy dane pochodzące tylko
z jednej tabeli. Poprzedzanie kolumn nazwą tabeli lub nadanym jej aliasem będzie niezbędne
w przypadku, gdy wybieramy dane z kilku tabel i interesujące nas kolumny w obu tabelach
mają taką samą nazwę oraz w przypadku podzapytań skorelowanych.
Aleksandra Stasiak © 2008
4
Poprzedzanie nazw kolumn nazwą tabeli lub zastępującym ją na czas zapytania aliasem nawet
wtedy, gdy nie jest to konieczne, świadczy o przyjętej przez autora konwencji mającej na celu
ujednolicenie stylu zapisu wszystkich zapytań i poprawienie ich czytelności.
Przykład 3.
SELECT pracownicy.id_pracownika, pracownicy.imie,
pracownicy.nazwisko
FROM pracownicy;
SELECT p.id_pracownika, p.imie, p.nazwisko
FROM pracownicy p;
Uwaga
Jeśli w zapytaniu zdecydujemy się na nadanie tabeli aliasu, to nie możemy już poprzedzać
kolumny pierwotną nazwą (jest ona na czas zapytania przykryta aliasem).
Przykład błędu
SELECT pracownicy.id_pracownika, p.imie, p.nazwisko
FROM pracownicy p;
SELECT pracownicy.id_pracownika, p.imie, p.nazwisko
*
BŁĄD w linii 1:
ORA-00904: "PRACOWNICY"."ID_PRACOWNIKA": niepoprawny
identyfikator
Możemy w takim przypadku, o ile oczywiście nie będzie to powodowało braku
jednoznaczności, nadal używać samych nazw kolumn.
SELECT id_pracownika, p.imie, p.nazwisko
FROM pracownicy p;
Wybór wszystkich danych z tabeli
W przypadku wybierania wszystkich kolumn z danej tabeli można posłużyć się zapisem
skróconym
SELECT *
FROM nazwa_tabeli;
Perspektywa USER_TABLES
Wykonanie zapytania
SELECT *
FROM USER_TABLES;
spowoduje wyświetlenie informacji dotyczących wszystkich tabel znajdujących się na koncie
użytkownika bazy danych.
Aleksandra Stasiak © 2008
5
Lista SELECT
W miejscu nazwy kolumny na liście SELECT może wystąpić stała, wartość liczbowa, funkcja
lub wyrażenie zbudowane za pomocą operatorów arytmetycznych +, -, *, /.
Przykład 4.
Dla każdego pracownika wypisz jego imię, nazwisko oraz roczną pensję podstawową.
SELECT imie, nazwisko, 12*pensja
FROM pracownicy;
Wyrażeniom występującym na liście SELECT można nadawać
aliasy
(proste lub ograniczone
- ujęte znakami cudzysłowu), które odtąd będą wyświetlane w nagłówku kolumny w wyniku.
W przypadku aliasów prostych (tzn. jednowyrazowych) użyte słowo zostanie wyświetlone
wielkimi literami. Aliasy wielowyrazowe muszą być ujęte w znaki cudzysłowu, a wielkość
liter użyta przy wyświetlaniu będzie identyczna z wielkością użytą przez użytkownika.
Przykład 5.
SELECT imie, nazwisko, 12*pensja zarobki
FROM pracownicy;
SELECT imie, nazwisko, 12*pensja "Roczna pensja"
FROM pracownicy;
Uwaga
Alias nadany kolumnie może być poprzedzony nieobowiązkowym słowem kluczowym AS.
Przykład 6.
SELECT imie, nazwisko, 12*pensja AS zarobki
FROM pracownicy;
Operator konkatenacji, czyli łączenia łańcuchów znakowych
Łańcuchy znakowe możemy łączyć ze sobą używając operatora konkatenacji
||
(lub funkcji
CONCAT
- zobacz plik
funkcje.pdf
)
.
Przykład 7.
W jednej kolumnie wypisz imię i nazwisko pracownika.
SELECT imie || ' ' || nazwisko
FROM pracownicy;
Przykład 8.
W jednej kolumnie wypisz nazwisko pracownika, tekst: „pracuje jako” i zawód pracownika.
SELECT nazwisko || ' pracuje jako ' || zawod
FROM pracownicy;
Funkcja NVL i wyrażenia zawierające wartość NULL
Nieco kłopotów sprawia użytkownikowi bazy danych wartość NULL.
Aleksandra Stasiak © 2008
Plik z chomika:
tryniti
Inne pliki z tego folderu:
SQL.doc
(281 KB)
plsql_fsql.ppt
(62 KB)
SQL10G.pdf
(780 KB)
sql2.pdf
(224 KB)
plsql.pdf
(580 KB)
Inne foldery tego chomika:
algebra liniowa
algorytmy i struktury danych
analiza matematyczna
angol
architektura komputerow
Zgłoś jeśli
naruszono regulamin