You are on page 1of 24

IDZ DO

PRZYKADOWY ROZDZIA
SPIS TRECI

KATALOG KSIEK
KATALOG ONLINE
ZAMW DRUKOWANY KATALOG

SQL. Szybki start


Autor: Chris Fehily
Tumaczenie: Jarosaw Gierlicki
ISBN: 83-7361-037-5
Tytu oryginau: SQL: Visual QuickStart Guide
Format: B5, stron: 416

TWJ KOSZYK
DODAJ DO KOSZYKA

CENNIK I INFORMACJE
ZAMW INFORMACJE
O NOWOCIACH
ZAMW CENNIK

CZYTELNIA
FRAGMENTY KSIEK ONLINE

SQL jest uznawanym za standard jzykiem programowania sucym do tworzenia,


modyfikowania oraz pobierania informacji przechowywanych przez systemy
zarzdzania relacyjnymi bazami danych. Chocia kady system bazodanowy uywa
nieco innego dialektu tego jzyka, czsto rozbudowujc go o dodatkowe funkcje,
podstawowe instrukcje SQL s wsplne dla wszystkich systemw: od Accessa do
Oracle'a.
Bogata w ilustracje, napisana przystpnym jzykiem ksika SQL. Szybki start
pozwoli Ci nauczy si SQL-a i zacz prac z relacyjn baz danych, niezalenie
do tego, ktry system wybierzesz. Autor kadzie szczeglny nacisk na realizacj
konkretnych zada, przedstawiajc kolejne kroki, jakie naley wykona, by rozwiza
dany problem. Dziki temu ksika jest nie tylko przewodnikiem po jzyku SQL i jego
odmianach, ale take doskona pomoc, po ktr bdziesz czsto siga w swojej
praktyce programistycznej.
W ksice omwiono m.in.:
Najpopularniejsze systemy bazodanowe, ich wady i zalety
Relacyjny model danych
Podstawy jzyka SQL: skadni i najwaniejsze typy danych
Pobieranie danych za pomoc zapyta
Operatory i funkcje SQL
Filtrowanie, grupowanie i sortowanie wynikw zapyta
Dodawanie, usuwanie i modyfikowanie danych
Korzystanie z indeksw
Uywanie perspektyw
Stosowanie transakcji

Wydawnictwo Helion
ul. Chopina 6
44-100 Gliwice
tel. (32)230-98-63
e-mail: helion@helion.pl

Spis treci

Spis treci
Wprowadzenie

Wybrane systemy zarzdzania bazami danych


23
Uruchamianie programw SQL........................................................... 24
Microsoft Access ............................................................................... 26
Microsoft SQL Server......................................................................... 29
Oracle ............................................................................................... 32
MySQL ............................................................................................. 35
PostgreSQL........................................................................................ 37

Rozdzia 2.

Relacyjny model danych


39
Tabele, kolumny i wiersze .................................................................. 40
Klucze gwne .................................................................................. 44
Klucze obce....................................................................................... 46
Relacje .............................................................................................. 48
Normalizacja...................................................................................... 51
Przykadowa baza danych ................................................................... 56

Rozdzia 3.

Podstawy SQL-a
63
Skadnia SQL-a ................................................................................. 64
Typy danych ...................................................................................... 69
Typy acuchw znakw..................................................................... 70
Typy acuchw bitowych .................................................................. 72
Typy liczb dokadnych........................................................................ 73
Typy liczb przyblionych.................................................................... 75
Typy daty i czasu .............................................................................. 76
Typy interwaowe (okresowe) ............................................................. 78
Wartoci null ..................................................................................... 80

Rozdzia 4.

Pobieranie danych z tabeli


83
Pobieranie kolumn za pomoc fraz SELECT i FROM........................... 84
Tworzenie aliasw kolumn za pomoc sowa kluczowego AS ............... 87
Eliminowanie powtarzajcych si wierszy
za pomoc sowa kluczowego DISTINCT............................................ 90
Sortowanie wierszy za pomoc frazy ORDER BY................................ 92
5

Spis treci

Rozdzia 1.

Spis treci

Filtrowanie wierszy za pomoc frazy WHERE .................................... 97


czenie i negacja warunkw za pomoc operatorw AND, OR i NOT..100
Dopasowywanie szablonw za pomoc sowa kluczowego LIKE .........106
Filtrowanie poprzez zdefiniowanie zakresw
za pomoc sowa kluczowego BETWEEN..........................................110
Filtrowanie za pomoc list i sowa kluczowego IN ..............................113
Sprawdzanie wystpowania wartoci null
za pomoc sowa kluczowego IS NULL..............................................116
Operatory i funkcje
119
Tworzenie kolumn opartych na wyraeniach .......................................120
Wykonywanie operacji arytmetycznych..............................................122
Wyznaczanie kolejnoci wykonywania oblicze..................................124
Sklejanie acuchw za pomoc operatora ||........................................125
Wyodrbnianie podacuchw za pomoc funkcji SUBSTRING().........129
Zmiana wielkoci liter w acuchach
za pomoc funkcji UPPER() i LOWER() ............................................131
Obcinanie acuchw za pomoc funkcji TRIM() ................................133
Okrelanie dugoci acucha za pomoc funkcji
CHARACTER_LENGTH() ...............................................................136
Wyszukiwanie podacuchw za pomoc funkcji POSITION() ............138
Obliczenia operujce na wartociach daty i czasu................................140
Pobieranie biecej daty i czasu .........................................................142
Pobieranie informacji o uytkowniku..................................................144
Konwertowanie typw danych za pomoc funkcji CAST() ..................145
Wyznaczanie wartoci warunkowych za pomoc wyraenia CASE.......149
Sprawdzanie wystpowania wartoci null
za pomoc funkcji COALESCE() .......................................................153
Wyraenia porwnujce oparte na funkcji NULLIF()...........................154

Rozdzia 6.

Sumowanie i grupowanie danych


157
Wykorzystywanie funkcji agregujcych..............................................158
Wyszukiwanie wartoci minimalnych za pomoc funkcji MIN()...........160
Wyszukiwanie wartoci maksymalnych za pomoc funkcji MAX() ......161
Obliczanie sumy za pomoc funkcji SUM() ........................................162
Obliczanie redniej za pomoc funkcji AVG().....................................163
Zliczanie wierszy za pomoc funkcji COUNT() ..................................164
Sowo kluczowe DISTINCT a funkcje agregujce ...............................165
Grupowanie wierszy za pomoc frazy GROUP BY .............................169
Filtrowanie grup za pomoc frazy HAVING .......................................175

Spis treci

Rozdzia 5.

Spis treci

Pobieranie danych z wielu tabel


179
Kwalifikowanie nazw kolumn ............................................................180
Tworzenie aliasw tabel za pomoc sowa kluczowego AS....................182
Zczenia ..........................................................................................184
Tworzenie zcze za pomoc skadni JOIN lub WHERE ....................186
Tworzenie zcze krzyowych za pomoc frazy CROSS JOIN.............190
Tworzenie zcze naturalnych za pomoc frazy NATURAL JOIN ......192
Tworzenie zcze wewntrznych za pomoc frazy INNER JOIN ........196
Tworzenie zcze zewntrznych za pomoc frazy OUTER JOIN ........220
Tworzenie autozcze.......................................................................233
Skadanie wierszy za pomoc sowa kluczowego UNION ....................240
Wyszukiwanie wsplnych wierszy
za pomoc sowa kluczowego INTERSECT........................................249
Wyszukiwanie rnicych si wierszy
za pomoc sowa kluczowego EXCEPT..............................................251

Rozdzia 8.

Podzapytania
253
Idea podzapyta ................................................................................254
Skadnia podzapyta .........................................................................256
Podzapytania a zczenia....................................................................257
Podzapytania proste i skorelowane .....................................................261
Podzapytania skorelowane ................................................................263
Kwalifikowanie nazw kolumn wystpujcych w podzapytaniach..........267
Wartoci null w podzapytaniach .........................................................268
Wykorzystywanie podzapyta jako wyrae definiujcych kolumny.....270
Dokonywanie porwna z wartoci zwracan przez podzapytanie
za pomoc operatora porwnania........................................................276
Sprawdzanie przynalenoci do zbioru za pomoc operatora IN ...........281
Dokonywanie porwna ze wszystkimi wartociami zwracanymi
przez podzapytanie za pomoc sowa kluczowego ALL ......................288
Dokonywanie porwna z niektrymi wartociami zwracanymi
przez podzapytanie za pomoc sowa kluczowego ANY .....................291
Sprawdzanie istnienia zadanych wartoci za pomoc operatora EXISTS ..294
Porwnywanie rwnowanych zapyta...............................................302

Rozdzia 9.

Wstawianie, modyfikowanie i usuwanie wierszy


303
Wywietlanie definicji kolumn tabel...................................................304
Wstawianie wierszy za pomoc konstrukcji INSERT ..........................307
Modyfikowanie wierszy za pomoc konstrukcji UPDATE ...................314
Usuwanie wierszy za pomoc konstrukcji DELETE ............................319
7

Spis treci

Rozdzia 7.

Spis treci

Spis treci

Rozdzia 10. Tworzenie, modyfikowanie i usuwanie tabel


323
Tworzenie tabel.................................................................................324
Idea atrybutw ..................................................................................325
Tworzenie nowych tabel za pomoc konstrukcji CREATE TABLE......327
Nieakceptowanie w kolumnach wartoci null
za pomoc sowa kluczowego NOT NULL ........................................329
Okrelanie wartoci domylnych
za pomoc sowa kluczowego DEFAULT...........................................332
Okrelanie klucza gwnego
za pomoc sowa kluczowego PRIMARY KEY .................................336
Okrelanie klucza obcego
za pomoc sowa kluczowego FOREIGN KEY ..................................339
Zapewnianie unikalnych wartoci
za pomoc sowa kluczowego UNIQUE .............................................345
Okrelanie atrybutw weryfikacyjnych
za pomoc sowa kluczowego CHECK ..............................................348
Tworzenie tymczasowych tabel za pomoc konstrukcji
CREATE TEMPORARY TABLE .....................................................351
Tworzenie nowych tabel na bazie tabel istniejcych
za pomoc konstrukcji SELECT INTO ..............................................354
Modyfikowanie tabel za pomoc konstrukcji ALTER TABLE .............358
Usuwanie tabel za pomoc konstrukcji DROP TABLE ........................361
Rozdzia 11. Indeksy
363
Tworzenie indeksw za pomoc konstrukcji CREATE INDEX ...........364
Usuwanie indeksw za pomoc konstrukcji DROP INDEX .................368
Rozdzia 12. Perspektywy
371
Tworzenie perspektyw za pomoc konstrukcji CREATE VIEW ............372
Pobieranie danych poprzez perspektywy .............................................377
Modyfikowanie danych poprzez perspektywy ....................................380
Usuwanie perspektyw za pomoc konstrukcji DROP VIEW.................385
Rozdzia 13. Transakcje
387
Wykonywanie transakcji ...................................................................388
Dodatek A
393
Tworzenie przykadowej bazy danych publikacje ................................394
Skorowidz

405

Podstawy SQL-a

Podstawy SQL-a

Podstawy SQL-a
Moe zauwaye, e w poprzednim rozdziale
SQL by rzadko wspomniany. Zapamitaj:
SQL model relacyjny

Przystpujc do nauki SQL-a naley mie


na wzgldzie powysze uwagi.
Program SQL jest to cig instrukcji SQL
wykonywanych w podanej kolejnoci. Aby
napisa program, trzeba zna zasady skadni
SQL-a. Reguy tworzenia instrukcji SQL
przedstawia niniejszy rozdzia. Zawarto w nim
rwnie opis typw danych i wartoci null.

63

Podstawy SQL-a

SQL jest oparty na modelu relacyjnym, ale nie


jest w peni jego implementacj. Odstpstwem
od modelu jest na przykad to, e istnienie
kluczy gwnych w SQL-u jest opcjonalne,
a nie obligatoryjne. W konsekwencji tabele bez
kluczy gwnych mog zawiera dublujce si
wiersze, co z kolei moe uniemoliwia dostp
do niektrych danych. Tematyka niniejszej
ksiki nie obejmuje wyczerpujcego opisu
wspomnianych rnic (jeli chcesz uzyska
wicej informacji, poszukaj w Internecie
artykuw na temat SQL-a autorstwa E.F.
Codda, Chrisa Datea lub Fabiana Pascala).
Rezultatem tych rozbienoci jest fakt, e to
na uytkownikach systemw DBMS, a nie
na samych systemach, spoczywa obowizek
zapewnienia struktury relacyjnej. Inn
konsekwencj jest nieidealna wymienno
terminw przedstawionych w tabeli 2.1
w rozdziale 2.

Rozdzia 3.

Skadnia SQL-a
Rysunek 3.1 przedstawia przykad konstrukcji
SQL. Nie zwracaj na razie uwagi na jej
znaczenie (semantyk) zadaniem tego
przykadu jest wyjanienie zasad skadni SQL-a.
1. Komentarz. Komentarz jest opcjonalnym

tekstem wpisywanym w osobnej linii


w celu wyjanienia dziaania programu.
Pocztek komentarza oznaczaj dwa czniki
nastpujcy po nich tekst jest ignorowany
przez system DBMS. Komentarz koczy si
wraz z kocem linii.

Skadnia SQL-a

2. Konstrukcja SQL. Konstrukcja SQL jest

okrelon kombinacj sw poprzedzonych


sowem kluczowym. Sowa s niepodzielnymi
elementami jzyka SQL pod wzgldem
gramatycznym nie mona rozoy ich na
mniejsze czci. Do tej grupy nale sowa
kluczowe, identyfikatory, operatory, wzorce
oraz inne sowa (opisane w dalszej czci
ksiki).
3. Frazy. Konstrukcja SQL skada si z jednej

lub kilku fraz. Mwic oglnie, fraza to


fragment konstrukcji SQL rozpoczynajcy
si sowem kluczowym. Frazy mog by
wymagane lub opcjonalne i musz
wystpowa w okrelonej kolejnoci.
Przedstawiony przykad zawiera cztery
frazy: ,  ,
 i   .

4. Sowa kluczowe. Sowa kluczowe,

zwane take sowami zastrzeonymi,


s zarezerwowane przez SQL, poniewa
maj w tym jzyku specjalne znaczenie.
Prba uycia sowa kluczowego w sposb
inny ni pozwala na to jego kontekst (np.
jako identyfikator) spowoduje wystpienie
bdu. Tabela 3.1 zawiera sowa kluczowe
jzyka SQL. W tabeli 3.2 umieszczono
potencjalne sowa kluczowe jzyka SQL,
ktre na razie nie s zarezerwowane,
ale w przyszoci mog si takimi sta.
5. Identyfikatory. Identyfikatory s to sowa,

ktrych Ty (lub projektant bazy danych)


uywasz do nazywania obiektw bazy
danych takich jak tabele, kolumny, aliasy,
indeksy oraz perspektywy (widoki).
Identyfikatorami nie mog by sowa
kluczowe, a ich dugo moe wynosi
maksymalnie 128 znakw. SQL dopuszcza
uywanie w identyfikatorach wszystkich
znakw i symboli zestawu znakw systemu
Windows (wczajc znaki zestawu Western
oraz ideogramy), jednak zanim zaczniesz
ich uywa, zapoznaj si ze wskazwkami.
W przedstawionym przykadzie
identyfikatorami s , ,
 oraz .
6. Zakaczajcy rednik. Kada

konstrukcja SQL koczy si rednikiem.

Rysunek 3.1. Konstrukcja SQL zawierajca komentarz

64

Podstawy SQL-a
Tabela 3.1. Sowa kluczowe jzyka SQL


 



 



 









 







 



 

 



  

 

 






 





 

 

 





 





 

 



 





 

 

 

    



 



 

 

 

 



 

 



 

 

 

 

  



  

 

  

   




  

  





 

  

  

 

 



 

 



  




  

 



  



   

   

  






  

 

 



 

 

 

 

 

 





 










 







 

  



 

 



 










 







 


  

 

  



  




 





 

 

  

 





 





 

 

 






 



 





 









 



 



 





 



 

 

 



 

  



 

 



 



   

 

 

  

 

   



 

 

 

  



 

  

 

  

 

 

 



   

 





 

 



 

 





Skadnia SQL-a



65

Rozdzia 3.
Tabela 3.2. Potencjalne sowa kluczowe jzyka SQL






 

 

 







  







 










 












 

 



  




 




  


 



 



 

  

 









 

 





 

 

 





 

 







  









 

  

  



66

Podstawy SQL-a
 !"#
$ % &
!


"#'()*+(,'./%/'(0(
1
2"),3
!
4

Rysunek 3.2. Nie istniej reguy, wedug ktrych


trzeba formatowa konstrukcj SQL. Powysza
konstrukcja jest analogiczna do konstrukcji
przedstawionej na rysunku 3.1

SQL nie definiuje precyzyjnie formy konstrukcji.


Konstrukcje SQL:
u Mog by pisane maymi lub duymi literami
(np.  i  ! oznaczaj to samo sowo

kluczowe).
u Mog by kontynuowane w kolejnych

liniach. Niedopuszczalne jest tylko dzielenie


sw oraz acuchw znakw zawartych
w cudzysowach.
u Mog by umieszczone w jednej linii

z innymi konstrukcjami.
u Mog rozpoczyna si w dowolnej kolumnie.

Czstymi bdami towarzyszcymi


programowaniu w SQL-u s:
u Pomyka w sowie kluczowym lub

identyfikatorze.
u Pominicie zakaczajcego rednika.
u Zmiana kolejnoci wpisanych fraz.
u Nieobjcie cudzysowami acuchw znakw

oraz wyrae oznaczajcych czas i dat.


u Objcie cudzysowami wzorcw liczbowych.
u Niepoprawne skojarzenie kolumn z tabelami
(np. wpisanie  "! 
# zamiast  "!
  #).

67

Skadnia SQL-a

Pomimo przedstawionej dowolnoci najlepiej


jednak trzyma si konsekwentnie jednego
stylu (rysunek 3.2). Ja zazwyczaj pisz sowa
kluczowe duymi literami, a kad fraz
wpisuj w osobnej linii szczegy
wykorzystywanego przeze mnie stylu opisaem
w podrozdziaach Konwencje typograficzne
oraz Konwencje skadniowe zawartych
we Wprowadzeniu.

Rozdzia 3.
Wskazwki
 Wprowadzajce sowo kluczowe konstrukcji

SQL nazywa si czsto czasownikiem,


poniewa wskazuje ono na wykonywan
przez konstrukcj czynno.
 Pomimo e sw kluczowych nie mona

uywa jako identyfikatorw, to jednak


mona je w identyfikatorach zawiera.
Np. $" czy % nie s prawidowymi
identyfikatorami, ale $" czy %!
s poprawne.

Systemy DBMS posiadaj take dodatkowe


sowa kluczowe, ktrych nie mona
uywa w roli identyfikatorw. Szczegy
w dokumentacjach systemw pod hasem
sowa kluczowe (ang. keywords) lub sowa
zastrzeone (ang. reserved words).

 W identyfikatorach mona zawiera spacje,

Skadnia SQL-a

naley wtedy identyfikator obj apostrofami


(&  '&). Tworzenie nazw
obiektw zawierajcych spacje nie jest
jednak zalecane. Do oddzielania wyrazw
lepiej stosowa znaki podkrelenia
( ') lub kombinacje maych
i duych liter (( ').

Systemy DBMS okrelaj


wasne wymagania dotyczce dugoci
identyfikatorw oraz dostpnego dla
nich zestawu znakw szczegowe
informacje moesz znale
w dokumentacjach systemw pod
hasem identyfikatory (ang. identifiers)
lub nazwy (ang. names).

 Microsoft SQL Server, Oracle, MySQL

 Wyraenie jest dowoln poprawn

kombinacj symboli, ktra daje w wyniku


pojedyncz warto. Moe zawiera operatory
matematyczne i logiczne, identyfikatory,
stae, funkcje, nazwy kolumn itp. Tabela 3.3
przedstawia kilka rodzajw popularnych
wyrae oraz ich przykady. Typ kadego
z wyrae zostanie szczegowo omwiony
przy okazji opisywania typw danych.

oraz PostgreSQL akceptuj zarwno


komentarze jedno- jak i wieloliniowe
zawarte pomidzy symbolami komentarza
)* i *). Szczegy w dokumentacjach
systemw pod hasem komentarze
(ang. comments). MySQL dopuszcza
take uywanie jako oznaczenia pocztku
komentarza znaku +.

Tabela 3.3. Typy wyrae


Wyraenie

Przykad

Przypadek (")

  2567 892 7

Rzutowanie (")

 :0""!,*0 ;

Czas i data ( " )

)"!<')"3#=/7>?@7/

Okres ( 2(A")

/B/ CD

Liczbowe ( # ()

:<()0"2*+C2";9>D

acuch znakw ( (2E)

/ )"2',2*"2/FF2"),3'!"#FF/$/

68

Podstawy SQL-a
Tabela 3.4. Kategorie typw danych
Typ danych

Przechowywany rodzaj danych

acuch znakw
acuch bitowy
Liczba dokadna
Liczba przybliona
Data i czas
Okres

Cigi znakw
Cigi bitw
Liczby cakowite i dziesitne
Liczby zmiennoprzecinkowe
Wartoci czasu i daty
Okresy czasu

Typy danych
W podrozdziale Tabele, kolumny i wiersze
w rozdziale 2. stwierdzono, e dziedzina
kolumny ogranicza wartoci, ktre mog by
w danej kolumnie przechowywane. Praktyczn
realizacj dziedzin s typy danych. Poniej
przedstawiono ich cechy.
u Kada kolumna w tabeli ma okrelony

pojedynczy typ danych.


u Typ danych mieci si w jednej z kategorii

Wskazwki
 Do okrelania i zmiany typu danych

kolumny oraz dotyczcych jej ogranicze


su konstrukcje , , oraz ,
, patrz rozdzia 10.
 Projektanci baz danych przywizuj bardzo

Wiele szczegw dotyczcych


typw danych ustalaj producenci systemw
DBMS. Std typy danych SQL-a nie s
wiernie odwzorowane w konkretnych
systemach DBMS, nawet, jeli nazywaj si
identycznie. Nazwy analogicznych lub
zblionych do teoretycznych typw danych
systemw DBMS przedstawiono we
wskazwkach w nastpnych podrozdziaach.
Systemy DBMS czsto maj rozszerzony
zestaw typw danych pozwalajcy
przechowywa specyficzne wartoci
np. logiczne czy walutowe. Szczegy
dotyczce standardowych i rozszerzonych
typw danych znajdziesz w dokumentacjach
systemw DBMS pod hasem typy danych
(ang. data types). Informacje na temat
sposobu sortowania znajduj si
w podrozdziale Sortowanie wierszy
za pomoc frazy ORDER BY w rozdziale 4.

u Typ danych okrela wartoci, jakie dana

kolumna akceptuje, oraz operacje, jakie


mona na niej wykona. Np. cakowity typ
danych ($) reprezentuje kad liczb
cakowit mieszczc si w granicach
okrelonych przez system DBMS i pozwala
na wykonywanie zwykych operacji
arytmetycznych, m.in.: dodawania,
odejmowania, mnoenia i dzielenia. Ale typ
cakowity nie moe reprezentowa wartoci
nieliczbowych, np. &-.'.& oraz
nie umoliwia przeprowadzania operacji
znakowych (np. zamiana liter maych na due).
u Typ danych narzuca sposb sortowania

kolumny. Liczby cakowite 1, 2 i 10 s


sortowane arytmetycznie: /, 0, /1. acuchy
znakw &/&, &0& i &/1& bd natomiast
posortowane sownikowo i dadz w wyniku
kolejno: &/&, &/1&, &0&. Sortowanie
sownikowe polega na kolejnym
porwnywaniu pojedynczych znakw. Std
&/1& jest przed &0& znak &/& w porzdku
sownikowym wystpuje przed znakiem &0&.
u Wartoci wzorcw przechowywane s

w kolumnach. Wzorzec jest sta, a nie


wynikiem wyliczenia wartoci wyraenia
liczbowego. Przykadami wzorcw
liczbowych s 21 i /0342, wzorcami
znakowymi s np. &21& i & &,
natomiast , &01105165/1& i 7 
&18926911& to wzorce daty i czasu.

69

Typy danych

du wag do okrelania typw danych dla


kolumn. Konsekwencj zego wyboru moe
by sytuacja, w ktrej niemoliwe bdzie
wpisanie do kolumny okrelonych wartoci,
a zmiana typu danych kolumny pocignie
za sob utrat danych ju istniejcych
w kolumnie.

przedstawionych w tabeli 3.4 (a opisanych


w nastpnych szeciu podrozdziaach).

Rozdzia 3.

Typy acuchw znakw


acuchy znakw uywane s do
reprezentowania tekstu. acuch znakw lub
po prostu acuch posiada nastpujce cechy:
u Jest uporzdkowanym cigiem

zawierajcym (lub nie) pewn ilo znakw.


u Jego dugo moe by staa lub zmienna.
u Rozrnia wielko liter (w czasie sortowania
litera &,& umieszczana jest przed &&).
u W konstrukcjach SQL wzorce acuchowe

objte s apostrofami.
u Jest jednym z typw przedstawionych

Typy acuchw znakw

w tabeli 3.5.
Tabela 3.5. Typy acuchw znakw
Typ

Opis


(znakowy)

Reprezentuje sta liczb znakw. acuch przechowywany w kolumnie zdefiniowanej


jako :; moe zawiera maksymalnie  znakw, gdzie 
jest liczb cakowit wiksz lub rwn 1. Maksymalna dugo zaley od systemu DBMS.
Jeli w kolumnie typu :; umieszczony jest acuch o dugoci mniejszej
od , system DBMS wypeni brakujce miejsca spacjami tak, eby powsta acuch
o dugoci rwnej dokadnie . Np. acuch /"3/ w kolumnie typu :B;
przechowywany jest jako /"3/. Typy  oraz  s rwnowane.
Reprezentuje zmienn liczb znakw. acuch przechowywany w kolumnie zdefiniowanej
jako  :; moe zawiera maksymalnie  znakw, gdzie
 jest liczb cakowit wiksz lub rwn 1. Maksymalna dugo zaley od systemu
DBMS. W przeciwiestwie do typu , jeli umiecimy w kolumn ie zdefiniowanej
jako  :; acuch o dugoci mniejszej ni , system DBMS
przechowa go w pierwotnej postaci nie wypeniajc brakujcych miejsc spacjami. Np. acuch
/"3/ w kolumnie typu  :B; przechowywany jest jako /"3/. Typy
 ,   oraz  s rwnowane.

 
(znakowy o zmiennej
dugoci)




(znakowy narodowy)

Ten typ danych odpowiada typowi , z tym e jest on w stanie przechowywa
ustandaryzowane znaki wielobajtowe czy unikodowe (patrz ramka). W konstrukcjach SQL
acuchy typu 
 zapisuje si tak samo jak acuchy typu ,
umieszczajc jedynie przed pierwszym apostrofem liter , np. / H/. Typy 

, 
 oraz  s rwnowane.



 
(znakowy narodowy
o zmiennej dugoci)

Ten typ danych odpowiada typowi   z tym, e moe on przechowywa


ustandaryzowane znaki wielobajtowe czy unikodowe (patrz typ 
).
Typy 
 , 
  oraz   s
rwnowane.

70

Podstawy SQL-a
Wskazwki
 Jeeli chcesz w acuchu wpisa znak

apostrofu, musisz wpisa go dwukrotnie.


Np. acuchem odpowiadajcym
angielskiemu sowu it's jest &&&&. Znak
cudzysowu (:) jest oddzielnym znakiem
i nie wymaga specjalnego traktowania.

Unikod

 Dugoci acucha jest liczba cakowita

wiksza lub rwna 0 i mniejsza lub rwna


$-. acuch niezawierajcy adnych
znakw && (dwa apostrofy bez spacji
midzy nimi) nazywany jest acuchem
pustym lub acuchem o zerowej dugoci.
acuch pusty traktowany jest jako ;, ,
o dugoci 0.
 Systemy DBMS szybciej ni acuchy

o zmiennej dugoci sortuj i przetwarzaj


acuchy o staej dugoci.


W Microsoft Accessie acuchowymi


typami danych s  oraz .
W Microsoft SQL Serverze s nimi !-,
<!-, %, !-, <!- oraz %.
Oracle oferuje typy: !-, <!-,
<!-0, !-, <!- oraz <!-0.
W MySQL-u s to: !-, <!-, !-,
<!-, %, %, .%
i $%, a w PostgreSQL-u !-, <!-
i %.
Oracle puste acuchy traktuje jako wartoci
null patrz podrozdzia Wartoci null.

71

Typy acuchw znakw

Komputery przechowuj znaki (litery,


cyfry, znaki interpunkcyjne, znaki
kontrolne oraz inne symbole) w swojej
pamici, przypisujc im wartoci
liczbowe. Sposb zamiany znakw
na liczby okrela kodowanie. Rne
jzyki i rne systemy operacyjne
stosuj wiele specyficznych sposobw
kodowania. Standardowe acuchy
w jzyku angielskim wykorzystuj
kodowanie ASCII, ktre umoliwia
przypisanie liczbom 256 (28) znakw.
Jest to niewiele za mao, eby
przechowa wszystkie litery uywane
w nowoytnych jzykach europejskich
i stanowczo za mao, eby przechowa
chiskie ideogramy.
Unikod jest zestawem pojedynczych
znakw reprezentujcym znaki prawie
wszystkich jzykw pisanych
wystpujcych na wiecie. Jest on
w stanie zakodowa 65536 (216)
znakw. Standard unikodu ogosia
i zarzdza nim instytucja o nazwie
Unicode Consortium. Aktualna
specyfikacja unikodu jest zawsze
dostpna w najnowszym wydaniu
(internetowym lub drukowanym)
standardu (The Unicode Standard)
pod adresem www.unicode.org.

Rozdzia 3.

Typy acuchw bitowych


acuch bitowy reprezentuje liczb binarn
i posiada nastpujce cechy:

 Uwaga dla dowiadczonych

programistw: oprcz uywania postaci


binarnej (o podstawie 2) mona take
stosowa dla acuchw znakw zapis
szesnastkowy (ang. hex lub hexadecimal)
o podstawie 16. System szesnastkowy
wykorzystuje cyfry od 0 do 9 oraz litery
(due lub mae) od A do F. Jeden znak
szesnastkowy odpowiada czterem bitom.
W konstrukcjach SQL acuchy bitowe
w zapisie szesnastkowym zawieraj
przed pierwszym apostrofem liter =.
Np. acuch szesnastkowy =&2& jest
odpowiednikiem acucha binarnego
&1/11/1//&.

u Jest uporzdkowanym cigiem zawierajcym

pewn liczb bitw (lub niezawierajc


adnego).
u Kady bit ma warto 0 lub 1.
u Zazwyczaj jest wykorzystywany do

przechowywania danych binarnych, takich


jak pliki programw, cyfrowe dwiki czy
obrazy. Dugi acuch bitowy nazywany jest
czsto BLOB (ang. binary large object).
u W konstrukcjach SQL acuch znakw objty

Typy acuchw bitowych

jest apostrofami.
u Jest jednym z typw przedstawionych

w tabeli 3.6.
Wskazwki
 Systemy DBMS nie prbuj interpretowa

acuchw bitowych, ich znaczenie jest


wane z punktu widzenia wykorzystujcych
je aplikacji.

W Microsoft Accessie binarnymi


typami danych s ) oraz >
. W Microsoft SQL Serverze
wystpuj >, <> i $.
Oracle oferuje typy: , $, , > >
oraz >' . W MySQL-u istniej > >,
> >, .> > i $> >,
a w PostgreSQL-u > i <>.

Tabela 3.6. Typy acuchw bitowych


Typ

Opis

 
(bitowy)

Reprezentuje sta liczb bitw. acuch bitowy przechowywany w kolumn ie zdefiniowanej jako
 :; moe zawiera maksymalnie  bitw, gdzie  jest liczb cakowit
wiksz lub rwn 1. Maksymalna dugo zaley od systemu DBMS. W odrnieniu od acuchw
znakowych typu , prba umieszczenia w kolumn ie  :; acucha bitowego
o dugoci mniejszej ni  spowoduje wystpienie bdu. W konstrukcjach SQL acuchy
bitowe zapisywane s podobnie, jak acuchy znakowe, jedynie przed pierwszym apostrofem
umieszczona jest litera . Np. acuchem typu  :I; jest /7>77>7>>/.
Reprezentuje zmienn liczb bitw. acuch bitowy przechowywany w kolumnie zdefiniowanej
jako   :; moe zawiera maksymalnie  bitw, gdzie  jest
liczb cakowit wiksz lub rwn 1. Maksymalna dugo zaley od systemu DBMS. Podobnie
jak w przypadku acuchw znakowych typu  , jeli umiecimy w kolumnie zdefin iowanej
jako   :; acuch o dugoci mniejszej ni , system DBMS przechowa go
w pierwotnej postaci nie wypeniajc brakujcych miejsc spacjami. Np. acuch /7>7>/ typu  
 :I; przechowywany jest jako /7>7>/.

  
(bitowy
o zmiennej
dugoci)

72

Podstawy SQL-a

Typy liczb dokadnych


Typy liczb dokadnych reprezentuj dokadne
wartoci liczbowe. Dokadna warto liczbowa
posiada nastpujce cechy:
u Moe by ujemna, dodatnia lub rwna zero.
u Jest liczb cakowit lub dziesitn.

Liczby cakowite nie zawieraj


przecinka dziesitnego (kropki w zapisie
komputerowym), np. 39, 0, 62262. Liczby
dziesitne zawieraj take cyfry po prawej
stronie przecinka np. 22.06, 0.0, 0.0003,
12.34.
u Posiada sta rozdzielczo i dokadno.

u Naley do jednego z typw przedstawionych

w tabeli 3.7.
Tabela 3.7. Typy liczb dokadnych
Typ

Opis

 
(liczbowa)

Reprezentuje liczb dziesitn. Liczby dziesitne s przechowywane w kolumnach zdefiniowanych


jako  : 
 J$  K;.  
  jest liczb wiksz lub rwn 1
maksymalna wielko zaley od systemu DBMS.    jest liczb z przedziau od 0 do
 
 . Jeli    nie jest jawnie okrelona, domylnie przyjmowana jest jako 0
(co powoduje, e w rzeczywistoci typ staje si cakowity).

 
(dziesitna)

Ten typ danych jest analogiczny do typu  , niektre systemy DBMS traktuj je
rwnowanie. Rnica jest taka, e system DBMS moe okreli  
  liczby
jako wiksz ni ustalono to w definicji  : 
 J$  K;
 
  jest min imalnym, a nie rzeczywistym rozmiarem przedstawianej liczby,
tak jak byo to w przypadku typu  . Sowa  i   s synonimami.


(cakowita)

Reprezentuje liczb cakowit. Minimalna i maksymalna warto liczby, jaka moe by


przechowywana w kolumnie zdefiniowanej jako , zaley od systemu DBMS. Defin icja
typu  nie wymaga okrelania argumentw. Sowa  oraz  s synonimami.

 
(cakowita krtka)

Ten typ jest takim samym typem jak , posiada tylko wszy zakres dopuszczalnych
wartoci zaleny od systemu DBMS. Definicja tego typu nie wymaga okrelania argumentw.

73

Typy liczb dokadnych

Rozdzielczoci okrela si liczb cyfr


znaczcych wykorzystywanych do
przedstawiania liczby liczba ta obejmuje
zarwno cyfry z prawej, jak i z lewej strony
przecinka dziesitnego. Dokadno jest
to liczba cyfr po przecinku dziesitnym.
Dokadno oczywicie nie moe przekroczy
rozdzielczoci. Ustalenie dokadnoci
na poziomie zero powoduje przedstawienie
liczby w postaci cakowitej. We wskazwkach
zawarto kilka przykadw.

Rozdzia 3.
Wskazwki
 Tabela 3.8 przedstawia sposb, w jaki liczba

123.89 jest przechowywana dla rnych


wartoci rozdzielczoci i dokadnoci.
 Wartoci liczbowych nie umieszcza si

w cudzysowach.
 Jeli liczby nie s stosowane do adnych

oblicze (np. numery telefonw czy


kody pocztowe), lepiej przechowywa
je jako acuchy znakw. Zapobiegnie
to ewentualnej utracie informacji
na przykad przechowanie kodu &11861&
jako liczby cakowitej spowoduje utrat
pocztkowych zer.

Typy liczb dokadnych

 Obliczenia wykonywane tylko na liczbach

cakowitych s znacznie szybsze od


oblicze, ktrych argumentami s liczby
dziesitne lub zmiennoprzecinkowe.


74

Typami liczb dokadnych


w Microsoft Accessie s .?, !>
!@, > oraz !> !@
.@$. Microsoft SQL Server oferuje typy:
!, .! , $,  , >$
oraz . W Oracleu wystepuj:
!, .! , $,  
oraz >. MySQL oferuje typy !,
.! , $,  , >$,
. i , natomiast PostgreSQL
!, .! , $,  
oraz >$.

Tabela 3.8. Przykady rozdzielczoci i dokadnoci


dla liczby 123.89
Definicja typu

Przechowywana warto

 :L;

>DM

 :L$7;

>DM

 :L$>;

>D@NO

 :L$D;

>D@NIO

 :M$7;

>DM

 :M$>;

>D@NO

 :M$D;

Poza zakresem rozdzielczoci

 :D$7;

Poza zakresem rozdzielczoci

Podstawy SQL-a

Typy liczb przyblionych


Typy liczb przyblionych su do
reprezentowania przyblionych wartoci
liczbowych. Przybliona warto liczbowa
posiada nastpujce cechy:

u Posiada sta rozdzielczo, ale nie posiada

dokadnoci w cisym sensie tego sowa


(okrelaj j znak oraz warto eksponenta).
Rozdzielczo jest liczb bitw
wykorzystywanych do zapisu mantysy.
Aby przeksztaci rozdzielczo bitow na
dziesitn, naley j pomnoy przez liczb
0.30103. Przeksztacenie rozdzielczoci
dziesitnej na bitow mona uzyska,
mnoc j przez liczb 3.32193. Na przykad
24 bity oznaczaj rozdzielczo 7-cyfrow,
a 53 bity to rozdzielczo 15-cyfrowa.

u Moe by liczb ujemn, dodatni

lub rwn zero.


u Jest traktowana jako przyblienie liczby

zmiennoprzecinkowej (rzeczywistej).
u Zazwyczaj wykorzystywana jest do

reprezentowania liczb bardzo duych


lub bardzo maych oraz do oblicze
naukowych.

u Naley do jednego z typw wymienionych

w tabeli 3.9.

u Wyraana jest w postaci naukowej.

Wskazwki
 Wartoci liczbowych nie umieszcza si

w cudzysowie.


Typami liczb przyblionych


w Microsoft Accessie s ".! "!
i ".A "!. W Microsoft SQL
Serverze wystpuj typy '  i  . Oracle
oferuje typy ' ,  , .>  "!
oraz >. W MySQL-u istniej typy ' ,
 i .> , natomiast w PostgreSQL-u
 i .>  "!.

Tabela 3.9. Typy liczb przyblionych


Typ

Opis



(zmiennoprzecinkowa)

Reprezentuje liczb zmiennoprzecinkow. Liczba zmiennoprzecinkowa przechowywana


w kolumnie zdefiniowanej jako 
: 
 ; posiada okrelon w definicji
rozdzielczo liczb wiksz lub rwn 1 wyraajc ilo bitw, a nie cyfr. Maksymalna
rozdzielczo zaley od systemu DBMS.


(rzeczywista)

Ten typ jest analogiczny do typu 


, z tym e rozdzielczo ustala system DBMS.
Liczby typu  czsto nazywa si liczbami pojedynczej precyzji. Definicja typu 
nie wymaga okrelania argumentw.




(podwjnej precyzji)

Jest to taki sam typ, jak 


. Rnica jest tylko taka, e rozdzielczo typu


ustalana przez system DBMS jest wiksza od rozdzielczoci typu .
Definicja typu

nie wymaga okrelania argumentw.

75

Typy liczb przyblionych

Warto w notacji naukowej zapisuje si


jako liczb dziesitn mnoon przez
cakowit potg liczby 10. Dua litera 
jest symbolem eksponenta np. 2.5E2 =
2.5102 = 250. Mantys w takim zapisie
s cyfry znaczce (w podanym przykadzie
2.5), natomiast eksponentem jest
wykadnik potgi liczby 10 (w podanym
przykadzie 2). Zarwno mantysa, jak
i eksponent, mog mie okrelony znak:
2.5E2 = 2.5102 = 0.025.

Rozdzia 3.

Typy daty i czasu


Typy daty i czasu, jak sama nazwa
wskazuje, su do reprezentowania dat
i czasu. Wartoci tych typw posiadaj
nastpujce cechy:

u Reguy rzdzce kalendarzem gregoriaskim

u S okrelane wzgldem czasu UTC

u Wartoci czasowe oparte s na 24-godzinnym

(ang. Universal Coordinated Time)


zwanego oficjalnie czasem uniwersalnym
Greenwich (ang. GMT Greenwich
Mean Time). Standard SQL-92 wymaga,
aby kada sesja SQL posiadaa domylne
przesunicie czasowe wzgldem czasu
UTC, ktre jest wykorzystywane
w trakcie trwania sesji. Na przykad
przesuniciem dla strefy czasowej
San Francisco w Kalifornii jest 8.

okrelaj w naturalny sposb format zapisu


dat. Systemy DBMS odrzucaj wartoci,
ktrych nie mog zinterpretowa jako daty.
formacie czasu (np. 13:00 zamiast 1:00
po poudniu).
u czniki (5) oddzielaj kolejne czci dat,
natomiast dwukropki (9) oddzielaj kolejne

czci wartoci czasowych. Jeli jedna warto


zawiera jednoczenie dat i czas, to s one
oddzielone spacj.
u Nale do jednego z typw przedstawionych

w tabeli 3.10.

Typy daty i czasu

Tabela 3.10. Typy daty i czasu


Typ

Opis


(data)

Reprezentuje dat. Data przechowywana w kolumnie zdefin iowanej jako  zawiera trzy
liczby cakowite: rok (), miesic (
) i dzie ( ) sformatowane wedug schematu
rrrr-mm-dd (dugo 10), np. D77DP7QP>M. Tabela 3.11 przedstawia poprawne wartoci
dla pl tego typu. Definicja typu  nie wymaga okrelania argumentw.

 
(czas)

Reprezentuje czas dnia. Czas przechowywany w kolumnie zdefiniowanej jako   zawiera


trzy pola: godzin (
), minuty ( ) oraz sekundy ( 
) sformatowane wedug
szablonu gg:mm:ss (dugo 8), np. DD?7Q?LB. Opcjonalnie mona zdefiniowa kolumn
jako  : 
 ;, gdzie  
  bdzie liczb wiksz lub rwn zero
oznaczajc liczb cyfr okrelajcych czci sekundy. Maksymalna  
  zaley
od systemu DBMS, natomiast mini malna wynosi 6. Wartoci 
 oraz   s liczbami
cakowitymi, a 
jest liczb dziesitn. Szablonem wartoci czasu zawierajcym
uamkowe czci sekund jest gg:mm:ss.ssss(dugo 9 + liczba cyfr uamkowych),
np. /DD?7Q?LBN>@@@/. Tabela 3.11 przedstawia poprawne wartoci pl tego typu.

  
(stempel czasowy)

Reprezentuje kombinacj wartoci  i   oddzielonych spacj. Formatem wartoci


tego typu jest rrrr-mm-dd gg:mm:ss (dugo 19), np. D77DP7QP>MDD?7Q?LB. Mona take
okreli za pomoc definicji   : 
 ; uamkowe czci sekund format
zapisu wyglda wtedy nastpujco: rrrr-mm-dd gg:mm:ss.ssss (dugo 20 + liczba cyfr
uamkowych).

   %




Ten typ jest typem analogicznym do typu , z tym e zawiera dodatkowe pole
 !%
!
  (przesunicie strefy czasowej) okrelajce przesunicie w godzinach
wzgldem czasu UTC. Warto  !%
!
  sformatowana jest jako 


  (patrz nastpny podrozdzia) i moe zawiera wartoci przedstawione w tabeli
3.11. Uwzgldnienie strefy czasowej osiga si poprzez dodanie do wartoci typu  
zwrotu:  %

    , np. DD?7Q?LB %
P7I?77. Drug
moliwoci jest dodanie zwrotu 
, co wskazuje, e strefa czasowa powinna by
domylna dla caej sesji, np. DD?7Q?LB
. Jeli fraza  nie jest jawnie okrelona,
wszystkie wartoci czasu s domylnie przyjmowane jako 
.

(czas ze stref czasow)

   
 %

(stempel czasowy
ze stref czasow)

76

Ten typ odpowiada typowi   , zawiera tylko dodatkowe pole  !%
!
 
okrelajce przesunicie w godzinach wzgldem czasu UTC. Zasady skadniowe wyrae tego
typu s analogiczne, co w przypadku typu    %
, trzeba jedynie na pocztku
umieci dat np. D77DP7QP>MDD?7Q?LB %
P7I?77.

Podstawy SQL-a
Tabela 3.11. Pola typu daty i czasu
Pole

Poprawna warto



od 777> do OOOO




od 7> do >D



od 7> do @>




od 77 do D@

 

od 77 do LO



od 77 do Q>NOOOR
(patrz wskazwki)

 !%
!
 

od P>D?LO do =>@?77

Wskazwki
 Opis pobierania czasu systemowego

znajdziesz w podrozdziale Pobieranie


biecej daty i czasu w rozdziale 5.
 Wartoci daty i czasu mona porwnywa,

jeli zawieraj te same pola (patrz


Filtrowanie wierszy za pomoc frazy
WHERE w rozdziale 4. oraz Obliczenia
operujce na wartociach daty i czasu).
 Pole ( moe zawiera wartoci

mniejsze lub rwne 61.999 (zamiast


59.999), co pozwala na uwzgldnianie
w okrelonej minucie sekund przestpnych
w celu zachowania zgodnoci zegara
zdefiniowanego przez czowieka
z naturalnym zegarem Ziemi.


 Wzorce daty i czasu wpisuje si,

Systemy DBMS pozwalaj na wpisywanie


wartoci dat w formatach miesic-dzierok, dzie-miesic-rok oraz w innych,
a wartoci czasu w postaci A.M./P.M..
Format, w jakim wartoci dat i czasu s
wywietlane moe rni si od tego,
w jakim zostay wprowadzone.
W Microsoft Accessie wzorcw dat i czasu
nie umieszcza si w apostrofach, lecz
pomidzy znakami + oraz nie wpisuje si
nazwy typu.
W 4Microsoft SQL Serverze take nie
wpisuje si typu danych przed wzorcami
dat i czasu.

rozpoczynajc od sowa oznaczajcego typ,


potem nastpuje spacja i warto daty
lub czasu umieszczona w apostrofach,
czyli , &&, 7  &&
lub 7 , B &&.
 Standard SQL-92 nie przewiduje moliwoci

przechowywania dat p.n.e. przed nasz


er czy przed Chrystusem (p. Ch), ale Twj
system DBMS moe tak moliwo
oferowa.
 Stemple czasowe s w praktyce czsto

wykorzystywane do konstruowania
unikalnych kluczy lub zaznaczania
zdarze zwizanych z wierszem,
w ktrym wystpuj.
 Typ danych 7 
7 7  C( waciwie

nie ma sensu, gdy w rzeczywistoci strefy


czasowe nie s jednoznaczne bez okrelonej
daty (przesunicie czasowe zmienia si
w cigu roku). Lepiej jest stosowa typ
7 , B
7 7  C(.

77

Typy daty i czasu

Typem daty i czasu w Microsoft


Accessie jest .)$.. Microsoft
SQL Server oferuje typy . oraz
 .. W Oracleu s to .
i ". MySQL oferuje typy .,
, . i ", natomiast
PostgreSQL .,  i ".

Rozdzia 3.

Typy interwaowe (okresowe)


Zgodno systemw DBMS ze standardem SQL-92
w zakresie typw okresowych jest niewielka, std
niniejszy rozdzia naley traktowa jako w duej
mierze teoretyczny. Systemy DBMS posiadaj
wasne rozszerzone typy danych oraz funkcje
suce do obliczania okresw i wykonywania
oblicze na wartociach daty i czasu.
Typy okresowe reprezentuj okresy pomidzy
okrelonymi datami lub godzinami. Warto
okresowa posiada nastpujce cechy:

Typy interwaowe (okresowe)

u Przechowuje okres czasu, jaki upywa pomidzy

dwoma wartociami daty lub czasu. Np. pomidzy


godzinami 09:00 a 13:30 okres wynosi 04:30.
Okres powstaje po odjciu od siebie dwch
wartoci typu daty lub czasu.
u Moe by dodawana lub odejmowana od wartoci

daty lub czasu patrz Obliczenia operujce


na wartociach daty i czasu w rozdziale 5.
u Zawiera takie same pola, jak wartoci daty i czasu
(,, D, ( itd.), ale moe by poprzedzona
znakiem E (w przd) lub 5 (w ty) w celu

okrelenia kierunku upywu czasu. Znaki


oddzielajce kolejne pola s takie same,
jak dla wartoci daty i czasu.
u Wystpuje w dwch postaciach: jako okres rok-

miesic lub jako dzie-czas. Okres pierwszego


typu wyraony jest liczb lat i cakowit liczb
miesicy, natomiast okres typu dzie-czas
wyraa liczb dni, godzin, minut i sekund.
u Moe posiada kwalifikator jedno- lub

kilkupolowy. Kwalifikator jednopolowy


okrelany jest po prostu jako ,, ( , ,,
D, 7(D lub ( . Natomiast kwalifikator
wielopolowy zapisuje si w nastpujcej postaci:
    
  

u


 moe by polem ,, ,, D
lub 7(D, a


 jednym z pl: ,,
( , ,, D, 7(D lub ( .




musi oznacza mniejsz jednostk czasu,


ni


 .

78

Podstawy SQL-a
Tabela 3.12. Typy okresowe
Typ

Opis

Year-month

Takie okresy zawieraj tylko ilo lat, ilo


miesicy lub obie z nich. Poprawnymi
kolumnami s: , 
: 
 ;, 
,

: 
 ;,


, 
: 
 ;

.
Okresy tego typu mog zawiera ilo dni,
godzin, minut, sekund lub rne ich
kombinacje. Przykadami poprawnych
typw kolumn s:  ,
 : 
 ;,
 

, 
: 
 ;
 
,
 : 
 ;

 
: 
    ;.

(rok-miesic)

Day-time
(dzie-czas)

Kolumna jednopolowa zdefiniowana jako


7(;, D moe przechowywa okresy
typu 4 godziny czy 25 godzin. Kolumna
wielopolowa zdefiniowana jako 7(;,
,  7(D jest zdolna do przechowywania
wartoci typu 2 dni, 5 godzin i 10 minut.
u Kolumna jednopolowa moe posiada

Kolumna wielopolowa moe mie okrelon


rozdzielczo dla pola


 ,
ale nie dla


 (chyba, e



 jest typu ( , wtedy mona
okreli rozdzielczo uamkow), np.
7(;, ,F4G  7(D lub 7(;,
7(DF0G  ( F2G.
u Naley do jednego z typw przedstawionych

w tabeli 3.12.
Wskazwki
 Aby wprowadzi wzorzec okresu, naley
wpisa sowo 7(;,, nastpnie spacj,

a potem warto okresu umieszczon


w apostrofach, np. 7(;, &/654&
dla wartoci 15 lat i 3 miesicy lub 7(;,
&50091H9636& dla okrelenia okresu 22
godzin, 6 minut i 5,5 sekundy temu.


Microsoft Access i Microsoft SQL


Server oraz MySQL nie akceptuj
okresowych typw danych. Oracle
i PostgreSQL oferuj typ < .

79

Typy interwaowe (okresowe)

rozdzielczo okrelajc dugo (liczb


pozycji) pola, np. 7(;, DF0G. Jeli
rozdzielczo nie jest jawnie okrelona,
przyjmowana jest domylnie jako 2.
Pole typu ( moe mie dodatkowo
okrelon rozdzielczo uamkow, czyli
liczb cyfr po przecinku dziesitnym np.
INTERVAL SECOND(5, 2). Jeli nie jest
ona jawnie okrelona, przyjmowana jest
domylnie jako 6.

Rozdzia 3.

Wartoci null
Kiedy zestaw Twoich danych nie jest kompletny,
jako oznaczenia brakujcej czy nieznanej
wartoci moesz uy wartoci pustej null.
Warto null posiada nastpujce cechy:
u W konstrukcjach SQL warto null jest
reprezentowana przez sowo kluczowe (D.
u Warto okrelana jest jako null, jeli nigdy

nie bdzie ona znana, jeli istnieje moliwo,


e bdzie okrelona pniej lub jeli jest
nieodpowiednia (warto null mona sobie
wyobrazi raczej jako zaznaczenie wolnego
miejsca ni jako rzeczywist warto).

Wartoci null

u Warto null to nie to samo co zero, acuch

zawierajcy tylko puste miejsca czy acuch


pusty (&&). Warto null w kolumnie !
nie oznacza, e dana pozycja nie ma ceny
lub e cena wynosi zero oznacza to,
e cena jest nieznana lub nie zostaa
jeszcze ustalona (wyjtkiem jest Oracle,
ktry akceptuje puste acuchy patrz
wskazwka DBMS).
u Wartoci null nie nale do adnego

typu danych i mog by umieszczane


we wszystkich kolumnach z wyjtkiem tych
zdefiniowanych jako ( (D patrz
Nie akceptowanie w kolumnach wartoci
null za pomoc wyraenia NOT NULL
w rozdziale 10.
u Wartoci null mog by wykrywane
za pomoc wyraenia 7 (D patrz

Sprawdzanie wystpowania wartoci null


za pomoc sowa kluczowego IS NULL
w rozdziale 4.
u Wartoci null nie s rwne adnym innym.

Nie mona okreli czy warto null jest


rwna jakiej innej wartoci, nawet innej
wartoci null. Taka sytuacja jest punktem
wyjcia do logiki trjwartociowej patrz
czenie i negacja warunkw za pomoc
operatorw AND, OR i NOT w rozdziale 4.

80

u Chocia wartoci null nigdy nie s sobie


rwne, to jednak sowo kluczowe 77(

traktuje wszystkie wartoci null znajdujce


si w danej kolumnie jako duplikaty
patrz Eliminowanie powtarzajcych
si wierszy za pomoc sowa kluczowego
DISTINCT w rozdziale 4.
u W czasie sortowania kolumny

zawierajcej wartoci null mog one


by wiksze lub mniejsze od wszystkich
innych wartoci wystpujcych
w kolumnie zaley to od systemu
DBMS. Patrz Sortowanie wierszy za
pomoc frazy ORDER BY w rozdziale 4.
u Wartoci null propaguj si poprzez

obliczenia. Wynik kadego wyraenia


zawierajcego warto null wynosi null:
F/0 * (DG ) 2 I (D. Patrz rozdzia 5.
u Funkcje agregujce, takie jak D FG, ,;JFG
czy ,=FG ignoruj w trakcie oblicze

wartoci null. Patrz rozdzia 6.


u Podczas grupowania za pomoc frazy
JDB  kolumn zawierajcych wartoci

null, s one wszystkie umieszczane


w jednej grupie patrz Grupowanie
wierszy za pomoc frazy GROUP BY
w rozdziale 6.
u Wartoci null maj wpyw na wynik

zcze patrz Zczenia w rozdziale 7.


u Wartoci null mog sprawia kopoty

w przypadku podzapyta patrz


Wartoci null w podzapytaniach
w rozdziale 8.

Podstawy SQL-a
:0!"#;

"#'()*
2"),3'!"#.//4
:0!"#;
PPPPPPPPPPP
07..

Rysunek 3.3. Otrzymanie wartoci null z kolumny,


ktra nie pozwala na istnienie wartoci null

Sposb wywietlania w wynikach


wartoci null zaley od systemu DBMS.
Wartoci puste mog by wywietlane
np. jako (D, F(DG, K(DL lub jako
puste pola.

 Z wartociami null zwizanych jest tyle

problemw i komplikacji waniejsze


z nich zostay opisane w niniejszym
podrozdziale e niektrzy znawcy baz
danych zalecaj uytkownikom rezygnacj
z ich uywania (zamiast tego proponuj
stosowanie wartoci domylnych lub innych
znacznikw braku danych). Chocia wic
do niektrych zastosowa wartoci null
s niezbdne, to jednak zalecana jest jak
najwiksza powcigliwo w ich uywaniu.
Konkluzja jest taka: wyniki zawierajce
wartoci null naley interpretowa ostronie.
 Przeczytaj take podrozdziay Sprawdzanie

wystpowania wartoci null za pomoc


funkcji COALESCE() oraz Porwnywanie
wyrae za pomoc funkcji NULLIF()
w rozdziale 5.
 Okrelenie warto null nie jest precyzyjne

null oznacza brak wartoci.


 Sowa kluczowego (D nie naley

umieszcza w apostrofach system


DBMS zinterpretuje je wtedy jako acuch
znakw &(D&, a nie jako warto pust.
 Warto null mona take otrzyma

z kolumny, ktra na istnienie wartoci


null nie pozwala. Kolumna . w tabeli
 nie pozwala na istnienie wartoci
null, ale konstrukcja  przedstawiona
na rysunku 3.3 zwraca jako warto
maksymaln . wanie warto pust.

81

Wartoci null

Obecna wersja Oraclea traktuje puste


acuchy (&&) jako wartoci null. Takie
rozwizanie w kolejnych wersjach raczej
nie bdzie stosowane, std Oracle ju
teraz radzi nie opiera si na takiej
jednoznacznoci. Moe to spowodowa
problemy z konwersjami danych do
innych systemw DBMS. W przykadowej
bazie danych kolumna  w tabeli
 zdefiniowana jest jako ( (D.
W Oracleu imieniem autora o nazwisku
Sitkowski (autor ,1H) jest pojedyncza
spacja (& &), natomiast w innych systemach
w tym miejscu wystpuje pusty acuch
(&&). Informacje na temat przykadowej
bazy danych znajduj si w rozdziale 2.

Wskazwki

You might also like