SlideShare a Scribd company logo
1 of 24
Download to read offline
IDZ DO
         PRZYK£ADOWY ROZDZIA£

                           SPIS TRE CI   SQL. Szybki start
           KATALOG KSI¥¯EK               Autor: Chris Fehily
                                         T³umaczenie: Jaros³aw Gierlicki
                      KATALOG ONLINE     ISBN: 83-7361-037-5
                                         Tytu³ orygina³u: SQL: Visual QuickStart Guide
       ZAMÓW DRUKOWANY KATALOG           Format: B5, stron: 416


              TWÓJ KOSZYK
                    DODAJ DO KOSZYKA     SQL jest uznawanym za standard jêzykiem programowania s³u¿¹cym do tworzenia,
                                         modyfikowania oraz pobierania informacji przechowywanych przez systemy
                                         zarz¹dzania relacyjnymi bazami danych. Chocia¿ ka¿dy system bazodanowy u¿ywa
         CENNIK I INFORMACJE             nieco innego dialektu tego jêzyka, czêsto rozbudowuj¹c go o dodatkowe funkcje,
                                         podstawowe instrukcje SQL s¹ wspólne dla wszystkich systemów: od Accessa do
                   ZAMÓW INFORMACJE      Oracle'a.
                     O NOWO CIACH        Bogata w ilustracje, napisana przystêpnym jêzykiem ksi¹¿ka „SQL. Szybki start”
                                         pozwoli Ci nauczyæ siê SQL-a i zacz¹æ pracê z relacyjn¹ baz¹ danych, niezale¿nie
                       ZAMÓW CENNIK      do tego, który system wybierzesz. Autor k³adzie szczególny nacisk na realizacjê
                                         konkretnych zadañ, przedstawiaj¹c kolejne kroki, jakie nale¿y wykonaæ, by rozwi¹zaæ
                                         dany problem. Dziêki temu ksi¹¿ka jest nie tylko przewodnikiem po jêzyku SQL i jego
                 CZYTELNIA               odmianach, ale tak¿e doskona³¹ pomoc¹, po któr¹ bêdziesz czêsto siêga³ w swojej
                                         praktyce programistycznej.
          FRAGMENTY KSI¥¯EK ONLINE       W ksi¹¿ce omówiono m.in.:
                                            • Najpopularniejsze systemy bazodanowe, ich wady i zalety
                                            • Relacyjny model danych
                                            • Podstawy jêzyka SQL: sk³adniê i najwa¿niejsze typy danych
                                            • Pobieranie danych za pomoc¹ zapytañ
                                            • Operatory i funkcje SQL
                                            • Filtrowanie, grupowanie i sortowanie wyników zapytañ
                                            • Dodawanie, usuwanie i modyfikowanie danych
                                            • Korzystanie z indeksów
                                            • U¿ywanie perspektyw
                                            • Stosowanie transakcji
Wydawnictwo Helion
ul. Chopina 6
44-100 Gliwice
tel. (32)230-98-63
e-mail: helion@helion.pl
Spis treści



                                                                              Spis treści

              Wprowadzenie                                                                                          9
Rozdział 1.   Wybrane systemy zarządzania bazami danych                                                             23
              Uruchamianie programów 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 główne .................................................................................. 44




                                                                                                                          Spis treści
              Klucze obce....................................................................................... 46
              Relacje .............................................................................................. 48
              Normalizacja...................................................................................... 51
              Przykładowa baza danych ................................................................... 56
Rozdział 3.   Podstawy SQL-a                                                                                     63
              Składnia SQL-a ................................................................................. 64
              Typy danych ...................................................................................... 69
              Typy łańcuchów znaków..................................................................... 70
              Typy łańcuchów bitowych .................................................................. 72
              Typy liczb dokładnych........................................................................ 73
              Typy liczb przybli onych.................................................................... 75
              Typy daty i czasu .............................................................................. 76
              Typy interwałowe (okresowe) ............................................................. 78
              Wartości null ..................................................................................... 80
Rozdział 4.   Pobieranie danych z tabeli                                                     83
              Pobieranie kolumn za pomocą fraz SELECT i FROM........................... 84
              Tworzenie aliasów kolumn za pomocą słowa kluczowego AS ............... 87
              Eliminowanie powtarzających się wierszy
              za pomocą słowa kluczowego DISTINCT............................................ 90
              Sortowanie wierszy za pomocą frazy ORDER BY................................ 92

                                                                                                                     5
Spis treści

                            Filtrowanie wierszy za pomocą frazy WHERE .................................... 97
                            Łączenie i negacja warunków za pomocą operatorów AND, OR i NOT..100
                            Dopasowywanie szablonów za pomocą słowa kluczowego LIKE .........106
                            Filtrowanie poprzez zdefiniowanie zakresów
                            za pomocą słowa kluczowego BETWEEN..........................................110
                            Filtrowanie za pomocą list i słowa kluczowego IN ..............................113
                            Sprawdzanie występowania wartości null
                            za pomocą słowa kluczowego IS NULL..............................................116
              Rozdział 5.   Operatory i funkcje                                                                      119
                            Tworzenie kolumn opartych na wyra eniach .......................................120
                            Wykonywanie operacji arytmetycznych..............................................122
                            Wyznaczanie kolejności wykonywania obliczeń..................................124
                            Sklejanie łańcuchów za pomocą operatora ||........................................125
                            Wyodrębnianie podłańcuchów za pomocą funkcji SUBSTRING().........129
                            Zmiana wielkości liter w łańcuchach
                            za pomocą funkcji UPPER() i LOWER() ............................................131
                            Obcinanie łańcuchów za pomocą funkcji TRIM() ................................133
                            Określanie długości łańcucha za pomocą funkcji
Spis treści




                            CHARACTER_LENGTH() ...............................................................136
                            Wyszukiwanie podłańcuchów za pomocą funkcji POSITION() ............138
                            Obliczenia operujące na wartościach daty i czasu................................140
                            Pobieranie bie ącej daty i czasu .........................................................142
                            Pobieranie informacji o u ytkowniku..................................................144
                            Konwertowanie typów danych za pomocą funkcji CAST() ..................145
                            Wyznaczanie wartości warunkowych za pomocą wyra enia CASE.......149
                            Sprawdzanie występowania wartości null
                            za pomocą funkcji COALESCE() .......................................................153
                            Wyra enia porównujące oparte na funkcji NULLIF()...........................154
              Rozdział 6.   Sumowanie i grupowanie danych                                                    157
                            Wykorzystywanie funkcji agregujących..............................................158
                            Wyszukiwanie wartości minimalnych za pomocą funkcji MIN()...........160
                            Wyszukiwanie wartości 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
                            Słowo kluczowe DISTINCT a funkcje agregujące ...............................165
                            Grupowanie wierszy za pomocą frazy GROUP BY .............................169
                            Filtrowanie grup za pomocą frazy HAVING .......................................175

              6
Spis treści

Rozdział 7.   Pobieranie danych z wielu tabel                                                                    179
              Kwalifikowanie nazw kolumn ............................................................180
              Tworzenie aliasów tabel za pomocą słowa kluczowego AS....................182
              Złączenia ..........................................................................................184
              Tworzenie złączeń za pomocą składni JOIN lub WHERE ....................186
              Tworzenie złączeń krzy owych za pomocą frazy CROSS JOIN.............190
              Tworzenie złączeń naturalnych za pomocą frazy NATURAL JOIN ......192
              Tworzenie złączeń wewnętrznych za pomocą frazy INNER JOIN ........196
              Tworzenie złączeń zewnętrznych za pomocą frazy OUTER JOIN ........220
              Tworzenie autozłączeń.......................................................................233
              Składanie wierszy za pomocą słowa kluczowego UNION ....................240
              Wyszukiwanie wspólnych wierszy
              za pomocą słowa kluczowego INTERSECT........................................249
              Wyszukiwanie ró niących się wierszy
              za pomocą słowa kluczowego EXCEPT..............................................251
Rozdział 8.   Podzapytania                                                                                   253
              Idea podzapytań ................................................................................254




                                                                                                                        Spis treści
              Składnia podzapytań .........................................................................256
              Podzapytania a złączenia....................................................................257
              Podzapytania proste i skorelowane .....................................................261
              Podzapytania skorelowane ................................................................263
              Kwalifikowanie nazw kolumn występujących w podzapytaniach..........267
              Wartości null w podzapytaniach .........................................................268
              Wykorzystywanie podzapytań jako wyra eń definiujących kolumny.....270
              Dokonywanie porównań z wartością zwracaną przez podzapytanie
              za pomocą operatora porównania........................................................276
              Sprawdzanie przynale ności do zbioru za pomocą operatora IN ...........281
              Dokonywanie porównań ze wszystkimi wartościami zwracanymi
              przez podzapytanie za pomocą słowa kluczowego ALL ......................288
              Dokonywanie porównań z niektórymi wartościami zwracanymi
              przez podzapytanie za pomocą słowa kluczowego ANY .....................291
              Sprawdzanie istnienia zadanych wartości za pomocą operatora EXISTS ..294
              Porównywanie równowa nych zapytań...............................................302
Rozdział 9.   Wstawianie, modyfikowanie i usuwanie wierszy                                         303
              Wyświetlanie 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 treści

              Rozdział 10. Tworzenie, modyfikowanie i usuwanie tabel                                                       323
                           Tworzenie tabel.................................................................................324
                           Idea atrybutów ..................................................................................325
                           Tworzenie nowych tabel za pomocą konstrukcji CREATE TABLE......327
                           Nieakceptowanie w kolumnach wartości null
                           za pomocą słowa kluczowego NOT NULL ........................................329
                           Określanie wartości domyślnych
                           za pomocą słowa kluczowego DEFAULT...........................................332
                           Określanie klucza głównego
                           za pomocą słowa kluczowego PRIMARY KEY .................................336
                           Określanie klucza obcego
                           za pomocą słowa kluczowego FOREIGN KEY ..................................339
                           Zapewnianie unikalnych wartości
                           za pomocą słowa kluczowego UNIQUE .............................................345
                           Określanie atrybutów weryfikacyjnych
                           za pomocą słowa kluczowego CHECK ..............................................348
                           Tworzenie tymczasowych tabel za pomocą konstrukcji
                           CREATE TEMPORARY TABLE .....................................................351
                           Tworzenie nowych tabel na bazie tabel istniejących
Spis treści




                           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 indeksów za pomocą konstrukcji CREATE INDEX ...........364
                           Usuwanie indeksów 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 przykładowej bazy danych publikacje ................................394
                                Skorowidz                                                                                405




              8
3
                                  Podstawy SQL-a



Podstawy SQL-a
                               Podstawy SQL-a
    Mo e zauwa yłeś, e w poprzednim rozdziale
    SQL był rzadko wspomniany. Zapamiętaj:
       SQL ≠ model relacyjny
    SQL jest oparty na modelu relacyjnym, ale nie
    jest w pełni jego implementacją. Odstępstwem
    od modelu jest na przykład to, e istnienie
    kluczy głównych w SQL-u jest opcjonalne,
    a nie obligatoryjne. W konsekwencji tabele bez
    kluczy głównych mogą zawierać dublujące się
    wiersze, co z kolei mo e uniemo liwiać dostęp
    do niektórych danych. Tematyka niniejszej
    ksią ki nie obejmuje wyczerpującego opisu
    wspomnianych ró nic (jeśli chcesz uzyskać




                                                     Podstawy SQL-a
    więcej informacji, poszukaj w Internecie
    artykułów na temat SQL-a autorstwa E.F.
    Codda, Chrisa Date’a lub Fabiana Pascala).
    Rezultatem tych rozbie ności jest fakt, e to
    na u ytkownikach systemów DBMS, a nie
    na samych systemach, spoczywa obowiązek
    zapewnienia struktury relacyjnej. Inną
    konsekwencją jest nieidealna wymienność
    terminów przedstawionych w tabeli 2.1
    w rozdziale 2.
    Przystępując do nauki SQL-a nale y mieć
    na względzie powy sze uwagi.
    Program SQL jest to ciąg instrukcji SQL
    wykonywanych w podanej kolejności. Aby
    napisać program, trzeba znać zasady składni
    SQL-a. Reguły tworzenia instrukcji SQL
    przedstawia niniejszy rozdział. Zawarto w nim
    równie opis typów danych i wartości null.




                                                63
Rozdział 3.


                 Składnia SQL-a
                 Rysunek 3.1 przedstawia przykład konstrukcji         4. Słowa kluczowe. Słowa kluczowe,
                 SQL. Nie zwracaj na razie uwagi na jej                 zwane tak e słowami zastrze onymi,
                 znaczenie (semantykę) — zadaniem tego                  są zarezerwowane przez SQL, poniewa
                 przykładu jest wyjaśnienie zasad składni SQL-a.        mają w tym języku specjalne znaczenie.
                                                                        Próba u ycia słowa kluczowego w sposób
                 1. Komentarz. Komentarz jest opcjonalnym
                                                                        inny ni pozwala na to jego kontekst (np.
                      tekstem wpisywanym w osobnej linii
                                                                        jako identyfikator) spowoduje wystąpienie
                      w celu wyjaśnienia działania programu.
                                                                        błędu. Tabela 3.1 zawiera słowa kluczowe
                      Początek komentarza oznaczają dwa łączniki
                                                                        języka SQL. W tabeli 3.2 umieszczono
                      — następujący po nich tekst jest ignorowany
                                                                        potencjalne słowa kluczowe języka SQL,
                      przez system DBMS. Komentarz kończy się
                                                                        które na razie nie są zarezerwowane,
                      wraz z końcem linii.
                                                                        ale w przyszłości mogą się takimi stać.
                 2. Konstrukcja SQL. Konstrukcja SQL jest
                                                                      5. Identyfikatory. Identyfikatory są to słowa,
                      określoną kombinacją słów poprzedzonych
                                                                        których Ty (lub projektant bazy danych)
                      słowem kluczowym. Słowa są niepodzielnymi
                                                                        u ywasz do nazywania obiektów bazy
                      elementami języka SQL — pod względem
                                                                        danych takich jak tabele, kolumny, aliasy,
                      gramatycznym nie mo na rozło yć ich na
                                                                        indeksy oraz perspektywy (widoki).
                      mniejsze części. Do tej grupy nale ą słowa
                                                                        Identyfikatorami nie mogą być słowa
                      kluczowe, identyfikatory, operatory, wzorce
                                                                        kluczowe, a ich długość mo e wynosić
Składnia SQL-a




                      oraz inne słowa (opisane w dalszej części
                                                                        maksymalnie 128 znaków. SQL dopuszcza
                      ksią ki).
                                                                        u ywanie w identyfikatorach wszystkich
                 3. Frazy. Konstrukcja SQL składa się z jednej          znaków i symboli zestawu znaków systemu
                      lub kilku fraz. Mówiąc ogólnie, fraza to          Windows (włączając znaki zestawu Western
                      fragment konstrukcji SQL rozpoczynający           oraz ideogramy), jednak zanim zaczniesz
                      się słowem kluczowym. Frazy mogą być              ich u ywać, zapoznaj się ze wskazówkami.
                      wymagane lub opcjonalne i muszą                   W przedstawionym przykładzie
                      występować w określonej kolejności.               identyfikatorami są KOKGACW, PCYKUMQACW,
                      Przedstawiony przykład zawiera cztery             CWVQT[ oraz YQL.
                      frazy: 5'.'%6, (41/, 9*'4' i 14&'4 $;.
                                                                      6. Zakańczający średnik. Ka da
                                                                        konstrukcja SQL kończy się średnikiem.




                 Rysunek 3.1. Konstrukcja SQL zawierająca komentarz



                 64
Podstawy SQL-a

Tabela 3.1. Słowa kluczowe języka SQL
#$51.76             %4155               )'6           016            52#%'
#%6+10              %744'06             ).1$#.        07..           53.
#&&                 %744'06A&#6'        )1            07..+(         53.%1&'
#..                 %744'06A6+/'        )16          07/'4+%        53.'4414
#..1%#6'            %744'06A6+/'56#/2   )4#06         1%6'6A.'0)6*   53.56#6'
#.6'4               %744'06A75'4        )4172         1(             57$564+0)
#0                 %74514              *#8+0)        10             57/
#0;                 #6'                *174          10.;           5;56'/A75'4
#4'                 #;                 +'06+6;      12'0           6#$.'
#5                  '#..1%#6'          +//'+#6'     126+10         6'/214#4;
#5%                 '%                 +0            14             6*'0
#55'46+10           '%+/#.             +0+%#614     14'4          6+/'
#6                  '%.#4'             +0+6+#..;     176'4          6+/'56#/2
#76*14+#6+10       '(#7.6             +00'4         176276         6+/'10'A*174
#8)                 '('44#$.'          +0276         18'4.#25       6+/'10'A/+076'
$')+0               '('44'            +05'05+6+8'   2#            61
$'69''0             '.'6'              +05'46        2#46+#.        64#+.+0)
$+6                 '5%                +06           215+6+10       64#05#%6+10
$+6A.'0)6*          '5%4+$'            +06')'4       24'%+5+10      64#05.#6'
$16*                '5%4+2614          +06'45'%6     24'2#4'        64#05.#6+10




                                                                                            Składnia SQL-a
$;                  +#)0156+%5         +06'48#.      24'5'48'       64+/
%#5%#'             +5%100'%6          +061          24+/#4;        647'
%#5%#'            +56+0%6            +5            24+14          70+10
%#5'                1/#+0              +51.#6+10     24+8+.')'5     70+37'
%#56                17$.'              ,1+0          241%'74'      70-0190
%#6#.1)             412                -';           27$.+%         72#6'
%*#4                '.5'                .#0)7#)'      4'#           722'4
%*#4#%6'4           '0                 .#56          4'#.           75#)'
%*#4A.'0)6*         '0':'%            .'#+0)       4'('4'0%'5     75'4
%*#4#%6'4A.'0)6*    '5%#2'              .'(6          4'.#6+8'       75+0)
%*'%-               ':%'26              .'8'.         4'564+%6       8#.7'
%.15'               ':%'26+10           .+-'          4'81-'         8#.7'5
%1#.'5%'            ':'%                .1%#.         4+)*6          8#4%*#4
%1..#6'             ':'%76'             .19'4         41..$#%-       8#4;+0)
%1..#6+10           ':+565              /#6%*         4195           8+'9
%1.7/0              ':6'40#.            /#:           5%*'/#         9*'0
%1//+6              ':64#%6             /+0           5%41..         9*'0'8'4
%100'%6             (#.5'               /+076'        5'%10         9*'4'
%100'%6+10          ('6%*               /17.'        5'%6+10        9+6*
%10564#+06          (+456               /106*         5'.'%6         914-
%10564#+065         (.1#6               0#/'5         5'55+10        94+6'
%106+07'            (14                 0#6+10#.      5'55+10A75'4   ;'#4
%108'46             (14'+)0             0#674#.       5'6            10'
%144'5210+0)       (170               0%*#4         5+'
%1706               (41/                0':6          5/#..+06
%4'#6'              (7..                01            51/'



                                                                                       65
Rozdział 3.

Tabela 3.2. Potencjalne słowa kluczowe języka SQL
#(6'4                '37#.5              1.           4'6740         6'56
#.+#5                )'0'4#.             12'4#6+10     4'67405        6*'4'
#5;0%                +(                  12'4#6145     41.'           64+))'4
$'(14'               +)014'              16*'45        4176+0'        6;2'
$11.'#0              .'#8'               2#4#/'6'45    419            70'4
$4'#6*              .'55                2'0#06       5#8'21+06      8#4+#$.'
%1/2.'6+10           .+/+6               24'14'4      5'#4%*         8+467#.
%#..                 .112                24+8#6'       5'05+6+8'      8+5+$.'
%;%.'                /1+(;              2416'%6'     5'37'0%'       9#+6
#6#                 0'9                 4'%745+8'     5+)0#.         9*+.'
'26*                010'                4'(           5+/+.#4        9+6*176
+%6+10#4;           1$,'%6              4'('4'0%+0)   53.':%'26+10
'#%*                 1((                 4'2.#%'       53.9#40+0)
'.5'+(               1+                 4'5+)0#.      5647%674'




66
Podstawy SQL-a

 UGNGEV KOKGACW                                    SQL nie definiuje precyzyjnie formy konstrukcji.
             0#9+5-1A#7                          Konstrukcje SQL:
                 (41/
   CWVQT[ 9J'T'          YQL                      u Mogą być pisane małymi lub du ymi literami
  / QTFGT                                          (np. 5'.'%6 i UGNGEV oznaczają to samo słowo
                    D;                                kluczowe).
 PCYKUM1A#7
                                                  u Mogą być kontynuowane w kolejnych
Rysunek 3.2. Nie istnieją reguły, według których      liniach. Niedopuszczalne jest tylko dzielenie
trzeba formatować konstrukcję SQL. Powy sza           słów oraz łańcuchów znaków zawartych
konstrukcja jest analogiczna do konstrukcji           w cudzysłowach.
przedstawionej na rysunku 3.1
                                                   u Mogą być umieszczone w jednej linii
                                                      z innymi konstrukcjami.
                                                   u Mogą rozpoczynać się w dowolnej kolumnie.
                                                   Pomimo przedstawionej dowolności najlepiej
                                                   jednak trzymać się konsekwentnie jednego
                                                   stylu (rysunek 3.2). Ja zazwyczaj piszę słowa
                                                   kluczowe du ymi literami, a ka dą frazę
                                                   wpisuję w osobnej linii — szczegóły
                                                   wykorzystywanego przeze mnie stylu opisałem
                                                   w podrozdziałach „Konwencje typograficzne”




                                                                                                      Składnia SQL-a
                                                   oraz „Konwencje składniowe” zawartych
                                                   we Wprowadzeniu.
                                                   Częstymi błędami towarzyszącymi
                                                   programowaniu w SQL-u są:
                                                   u Pomyłka w słowie kluczowym lub
                                                      identyfikatorze.
                                                   u Pominięcie zakańczającego średnika.
                                                   u Zmiana kolejności wpisanych fraz.
                                                   u Nieobjęcie cudzysłowami łańcuchów znaków
                                                      oraz wyra eń oznaczających czas i datę.
                                                   u Objęcie cudzysłowami wzorców liczbowych.
                                                   u Niepoprawne skojarzenie kolumn z tabelami
                                                     (np. wpisanie 5'.'%6 RTQEGPVAVCPVKGO (41/
                                                     CWVQT[ zamiast 5'.'%6 RTQEGPVAVCPVKGO
                                                     (41/ CWVQT[AV[VWNQY).




                                                                                                67
Rozdział 3.

                 Wskazówki
                      Wprowadzające słowo kluczowe konstrukcji                        Systemy DBMS określają
                      SQL nazywa się często czasownikiem,                     własne wymagania dotyczące długości
                      poniewa wskazuje ono na wykonywaną                      identyfikatorów oraz dostępnego dla
                      przez konstrukcję czynność.                             nich zestawu znaków — szczegółowe
                                                                              informacje mo esz znaleźć
                      Pomimo e słów kluczowych nie mo na
                                                                              w dokumentacjach systemów pod
                      u ywać jako identyfikatorów, to jednak
                                                                              hasłem identyfikatory (ang. identifiers)
                      mo na je w identyfikatorach zawierać.
                                                                              lub nazwy (ang. names).
                      Np. ITQWR czy OCZ nie są prawidłowymi
                      identyfikatorami, ale ITQWRU czy OCZAEGPC               Systemy DBMS posiadają tak e dodatkowe
                      są poprawne.                                            słowa kluczowe, których nie mo na
                                                                              u ywać w roli identyfikatorów. Szczegóły
                      W identyfikatorach mo na zawierać spacje,
                                                                              w dokumentacjach systemów pod hasłem
                      nale y wtedy identyfikator objąć apostrofami
                                                                              słowa kluczowe (ang. keywords) lub słowa
                      ( PWOGT VGNGHQPW ). Tworzenie nazw
                                                                              zastrze one (ang. reserved words).
                      obiektów zawierających spacje nie jest
                      jednak zalecane. Do oddzielania wyrazów                 Microsoft SQL Server, Oracle, MySQL
                      lepiej stosować znaki podkreślenia                      oraz PostgreSQL akceptują zarówno
                      (PWOGTAVGNGHQPW) lub kombinacje małych                  komentarze jedno- jak i wieloliniowe
                      i du ych liter (0WOGT6GNGHQPW).                         zawarte pomiędzy symbolami komentarza
i
. Szczegóły w dokumentacjach
Składnia SQL-a




                      Wyra enie jest dowolną poprawną
                                                                              systemów pod hasłem komentarze
                      kombinacją symboli, która daje w wyniku
                                                                              (ang. comments). MySQL dopuszcza
                      pojedynczą wartość. Mo e zawierać operatory
                                                                              tak e u ywanie jako oznaczenia początku
                      matematyczne i logiczne, identyfikatory,
                                                                              komentarza znaku .
                      stałe, funkcje, nazwy kolumn itp. Tabela 3.3
                      przedstawia kilka rodzajów popularnych
                      wyra eń oraz ich przykłady. Typ ka dego
                      z wyra eń zostanie szczegółowo omówiony
                      przy okazji opisywania typów danych.

                 Tabela 3.3. Typy wyra eń

                 Wyrażenie                        Przykład
                 Przypadek (%CUG)                 %#5' 9*'0 P       6*'0 ZP '.5'  '0
                 Rzutowanie (%CUV)                %#56
FCVCAY[F #5 %*#4#%6'4
                 Czas i data (CVGVKOG)           ECUARQECVMW 
     
                 Okres (+PVGTXCN)                 +06'48#.       #;
Liczbowe (0WOGTKE)               
URTGFCP[EJ
EGPC  
                 Łańcuch znaków (5VTKPI)           5CPQYP[ 2CPKG      ^^ PCYKUMQACW ^^    




                 68
Podstawy SQL-a

Tabela 3.4. Kategorie typów danych
                                                     Typy danych
Typ danych           Przechowywany rodzaj danych
                                                     W podrozdziale „Tabele, kolumny i wiersze”
Łańcuch znaków       Ciągi znaków
                                                     w rozdziale 2. stwierdzono, e dziedzina
Łańcuch bitowy       Ciągi bitów
                                                     kolumny ogranicza wartości, które mogą być
Liczba dokładna      Liczby całkowite i dziesiętne
                                                     w danej kolumnie przechowywane. Praktyczną
Liczba przybli ona   Liczby zmiennoprzecinkowe
                                                     realizacją dziedzin są typy danych. Poni ej
Data i czas          Wartości czasu i daty
                                                     przedstawiono ich cechy.
Okres                Okresy czasu
                                                     u Ka da kolumna w tabeli ma określony
                                                        pojedynczy typ danych.
                                                     u Typ danych mieści się w jednej z kategorii
Wskazówki                                               przedstawionych w tabeli 3.4 (a opisanych
                                                        w następnych sześciu podrozdziałach).
   Do określania i zmiany typu danych
   kolumny oraz dotyczących jej ograniczeń           u Typ danych określa wartości, jakie dana
   słu ą konstrukcje %4'#6' 6#$.' oraz #.6'4            kolumna akceptuje, oraz operacje, jakie
   6#$.' — patrz rozdział 10.                           mo na na niej wykonać. Np. całkowity typ
                                                        danych (KPVGIGT) reprezentuje ka dą liczbę
   Projektanci baz danych przywiązują bardzo
                                                        całkowitą mieszczącą się w granicach
   du ą wagę do określania typów danych dla
                                                        określonych przez system DBMS i pozwala
   kolumn. Konsekwencją złego wyboru mo e
                                                        na wykonywanie zwykłych operacji
   być sytuacja, w której niemo liwe będzie




                                                                                                        Typy danych
                                                        arytmetycznych, m.in.: dodawania,
   wpisanie do kolumny określonych wartości,
                                                        odejmowania, mno enia i dzielenia. Ale typ
   a zmiana typu danych kolumny pociągnie
                                                        całkowity nie mo e reprezentować wartości
   za sobą utratę danych ju istniejących
                                                        nieliczbowych, np. UJCFGPHTGWFG oraz
   w kolumnie.
                                                        nie umo liwia przeprowadzania operacji
           Wiele szczegółów dotyczących                 znakowych (np. zamiana liter małych na du e).
   typów danych ustalają producenci systemów
                                                     u Typ danych narzuca sposób sortowania
   DBMS. Stąd typy danych SQL-a nie są
                                                        kolumny. Liczby całkowite 1, 2 i 10 są
   wiernie odwzorowane w konkretnych
                                                        sortowane arytmetycznie: , , . Łańcuchy
   systemach DBMS, nawet, jeśli nazywają się
                                                        znaków  ,  i  będą natomiast
   identycznie. Nazwy analogicznych lub
                                                        posortowane słownikowo i dadzą w wyniku
   zbli onych do teoretycznych typów danych
                                                        kolejność:  ,  ,  . Sortowanie
   systemów DBMS przedstawiono we
                                                        słownikowe polega na kolejnym
   wskazówkach w następnych podrozdziałach.
                                                        porównywaniu pojedynczych znaków. Stąd
   Systemy DBMS często mają rozszerzony
                                                          jest przed  — znak  w porządku
   zestaw typów danych pozwalający
                                                        słownikowym występuje przed znakiem  .
   przechowywać specyficzne wartości
   np. logiczne czy walutowe. Szczegóły              u Wartości wzorców przechowywane są
   dotyczące standardowych i rozszerzonych              w kolumnach. Wzorzec jest stałą, a nie
   typów danych znajdziesz w dokumentacjach             wynikiem wyliczenia wartości wyra enia
   systemów DBMS pod hasłem typy danych                 liczbowego. Przykładami wzorców
   (ang. data types). Informacje na temat               liczbowych są  i , wzorcami
   sposobu sortowania znajdują się                      znakowymi są np.  i KGNQP[ ,
   w podrozdziale „Sortowanie wierszy                   natomiast #6'  i 6+/'
   za pomocą frazy ORDER BY” w rozdziale 4.                to wzorce daty i czasu.




                                                                                                  69
Rozdział 3.


                        Typy łańcuchów znaków
                        Łańcuchy znaków u ywane są do
                        reprezentowania tekstu. Łańcuch znaków — lub
                        po prostu łańcuch — posiada następujące cechy:
                        u Jest uporządkowanym ciągiem
                             zawierającym (lub nie) pewną ilość znaków.
                        u Jego długość mo e być stała lub zmienna.
                        u Rozró nia wielkość liter (w czasie sortowania
                          litera # umieszczana jest przed C ).
                        u W konstrukcjach SQL wzorce łańcuchowe
                             objęte są apostrofami.
                        u Jest jednym z typów przedstawionych
                             w tabeli 3.5.

                        Tabela 3.5. Typy łańcuchów znaków
Typy łańcuchów znaków




                        Typ                    Opis
                        %*#4#%6'4              Reprezentuje stałą liczbę znaków. Łańcuch przechowywany w kolumnie zdefiniowanej
                        (znakowy)              jako %*#4#%6'4
FNWIQUE mo e zawierać maksymalnie FNWIQUE znaków, gdzie FNWIQUE
                                               jest liczbą całkowitą większą lub równą 1. Maksymalna długość zale y od systemu DBMS.
                                               Jeśli w kolumnie typu %*#4#%6'4
FNWIQUE umieszczony jest łańcuch o długości mniejszej
                                               od FNWIQUE, system DBMS wypełni brakujące miejsca spacjami tak, eby powstał łańcuch
                                               o długości równej dokładnie FNWIQUE. Np. łańcuch ,CEGM w kolumnie typu %*#4#%6'4

                                               przechowywany jest jako ,CEGM        . Typy %*#4#%6'4 oraz %*#4 są równowa ne.
                        %*#4#%6'4 8#4;+0)      Reprezentuje zmienną liczbę znaków. Łańcuch przechowywany w kolumnie zdefiniowanej
                        (znakowy o zmiennej    jako %*#4#%6'4 8#4;+0)
FNWIQUE mo e zawierać maksymalnie FNWIQUE znaków, gdzie
                        długości)              FNWIQUE jest liczbą całkowitą większą lub równą 1. Maksymalna długość zale y od systemu
                                               DBMS. W przeciwieństwie do typu %*#4#%6'4, jeśli umieścimy w kolumn ie zdefiniowanej
                                               jako %*#4#%6'4 8#4;+0)
FNWIQUE łańcuch o długości mniejszej ni FNWIQUE, system DBMS
                                               przechowa go w pierwotnej postaci nie wypełniając brakujących miejsc spacjami. Np. łańcuch
                                                 ,CEGM w kolumnie typu %*#4#%6'4 8#4;+0)
 przechowywany jest jako ,CEGM . Typy
                                               %*#4#%6'4 8#4;+0), %*#4 8#4;+0) oraz 8#4%*#4 są równowa ne.
                        0#6+10#.               Ten typ danych odpowiada typowi %*#4#%6'4, z tym e jest on w stanie przechowywać
                        %*#4#%6'4              ustandaryzowane znaki wielobajtowe czy unikodowe (patrz ramka). W konstrukcjach SQL
                        (znakowy narodowy)     łańcuchy typu 0#6+10#. %*#4#%6'4 zapisuje się tak samo jak łańcuchy typu %*#4#%6'4,
                                               umieszczając jedynie przed pierwszym apostrofem literę 0, np. 0 ¼ . Typy 0#6+10#.
                                               %*#4#%6'4, 0#6+10#. %*#4 oraz 0%*#4 są równowa ne.
                        0#6+10#.               Ten typ danych odpowiada typowi %*#4#%6'4 8#4;+0) z tym, e mo e on przechowywać
                        %*#4#%6'4 8#4;+0)      ustandaryzowane znaki wielobajtowe czy unikodowe (patrz typ 0#6+10#. %*#4#%6'4).
                        (znakowy narodowy      Typy 0#6+10#. %*#4#%6'4 8#4;+0), 0#6+10#. %*#4 8#4;+0) oraz 0%*#4 8#4;+0) są
                        o zmiennej długości)   równowa ne.




                        70
Podstawy SQL-a

                                        Wskazówki
                                          Je eli chcesz w łańcuchu wpisać znak
                                          apostrofu, musisz wpisać go dwukrotnie.
              Unikod                      Np. łańcuchem odpowiadającym
                                          angielskiemu słowu it's jest KV U . Znak
Komputery przechowują znaki (litery,
cyfry, znaki interpunkcyjne, znaki        cudzysłowu ( ) jest oddzielnym znakiem
kontrolne oraz inne symbole) w swojej     i nie wymaga specjalnego traktowania.
pamięci, przypisując im wartości          Długością łańcucha jest liczba całkowita
liczbowe. Sposób zamiany znaków
                                          większa lub równa 0 i mniejsza lub równa
na liczby określa kodowanie. Ró ne
                                          NGPIVJ. Łańcuch niezawierający adnych
języki i ró ne systemy operacyjne
stosują wiele specyficznych sposobów      znaków — (dwa apostrofy bez spacji
kodowania. Standardowe łańcuchy           między nimi) — nazywany jest łańcuchem
w języku angielskim wykorzystują          pustym lub łańcuchem o zerowej długości.
kodowanie ASCII, które umo liwia          Łańcuch pusty traktowany jest jako 8#4%*#4
przypisanie liczbom 256 (28) znaków.      o długości 0.
Jest to niewiele — za mało, eby
przechować wszystkie litery u ywane       Systemy DBMS szybciej ni łańcuchy
w nowo ytnych językach europejskich       o zmiennej długości sortują i przetwarzają




                                                                                            Typy łańcuchów znaków
i stanowczo za mało, eby przechować       łańcuchy o stałej długości.
chińskie ideogramy.
                                                  W Microsoft Accessie łańcuchowymi
Unikod jest zestawem pojedynczych
znaków reprezentującym znaki prawie       typami danych są VGMUV oraz PQVC.
wszystkich języków pisanych               W Microsoft SQL Serverze są nimi EJCT,
występujących na świecie. Jest on         XCTEJCT, VGZV, PEJCT, PXCTEJCT oraz PVGZV.
w stanie zakodować 65536 (216)            Oracle oferuje typy: EJCT, XCTEJCT,
znaków. Standard unikodu ogłosiła         XCTEJCT, PEJCT, PXCTEJCT oraz PXCTEJCT.
i zarządza nim instytucja o nazwie        W MySQL-u są to: EJCT, XCTEJCT, PEJCT,
Unicode Consortium. Aktualna              PXCTEJCT, VGZV, VKP[VGZV, OGFKWOVGZV
specyfikacja unikodu jest zawsze          i NQPIVGZV, a w PostgreSQL-u EJCT, XCTEJCT
dostępna w najnowszym wydaniu             i VGZV.
(internetowym lub drukowanym)
standardu (The Unicode Standard)          Oracle puste łańcuchy traktuje jako wartości
pod adresem www.unicode.org.              null — patrz podrozdział „Wartości null”.




                                                                                       71
Rozdział 3.


                          Typy łańcuchów bitowych
                          Łańcuch bitowy reprezentuje liczbę binarną                        Uwaga dla doświadczonych
                          i posiada następujące cechy:                                      programistów: oprócz u ywania postaci
                                                                                            binarnej (o podstawie 2) mo na tak e
                          u Jest uporządkowanym ciągiem zawierającym
                                                                                            stosować dla łańcuchów znaków zapis
                               pewną liczbę bitów (lub niezawierającą
                                                                                            szesnastkowy (ang. hex lub hexadecimal)
                                adnego).
                                                                                            — o podstawie 16. System szesnastkowy
                          u Ka dy bit ma wartość 0 lub 1.                                   wykorzystuje cyfry od 0 do 9 oraz litery
                                                                                            (du e lub małe) od A do F. Jeden znak
                          u Zazwyczaj jest wykorzystywany do
                                                                                            szesnastkowy odpowiada czterem bitom.
                               przechowywania danych binarnych, takich                      W konstrukcjach SQL łańcuchy bitowe
                               jak pliki programów, cyfrowe dźwięki czy                     w zapisie szesnastkowym zawierają
                               obrazy. Długi łańcuch bitowy nazywany jest                   przed pierwszym apostrofem literę :.
                               często BLOB (ang. binary large object).                      Np. łańcuch szesnastkowy : $ jest
                          u W konstrukcjach SQL łańcuch znaków objęty                       odpowiednikiem łańcucha binarnego
                               jest apostrofami.                                            $  .

                          u Jest jednym z typów przedstawionych                                    W Microsoft Accessie binarnymi
Typy łańcuchów bitowych




                               w tabeli 3.6.                                                typami danych są VCMPKG oraz QDKGMV
                                                                                            1.'. W Microsoft SQL Serverze
                          Wskazówki                                                         występują DKPCT[, XCTDKPCT[ i KOCIG.
                                                                                            Oracle oferuje typy: TCY, NQPI, TCY, DNQD
                               Systemy DBMS nie próbują interpretować
                                                                                            oraz DHKNG. W MySQL-u istnieją DNQD,
                               łańcuchów bitowych, ich znaczenie jest
                                                                                            VKP[DNQD, OGFKWODNQD i NQPIDNQD,
                               wa ne z punktu widzenia wykorzystujących
                                                                                            a w PostgreSQL-u DKV i XCTDKV.
                               je aplikacji.


                          Tabela 3.6. Typy łańcuchów bitowych
                          Typ            Opis
                          $+6            Reprezentuje stałą liczbę bitów. Łańcuch bitowy przechowywany w kolumn ie zdefiniowanej jako
                          (bitowy)       $+6
FNWIQUE mo e zawierać maksymalnie FNWIQUE bitów, gdzie FNWIQUE jest liczbą całkowitą
                                         większą lub równą 1. Maksymalna długość zale y od systemu DBMS. W odró nieniu od łańcuchów
                                         znakowych typu %*#4#%6'4, próba umieszczenia w kolumn ie $+6
FNWIQUE łańcucha bitowego
                                         o długości mniejszej ni FNWIQUE spowoduje wystąpienie błędu. W konstrukcjach SQL łańcuchy
                                         bitowe zapisywane są podobnie, jak łańcuchy znakowe, jedynie przed pierwszym apostrofem
                                         umieszczona jest litera $. Np. łańcuchem typu $+6
 jest $  .
                          $+6 8#4;+0)    Reprezentuje zmienną liczbę bitów. Łańcuch bitowy przechowywany w kolumnie zdefiniowanej
                          (bitowy        jako $+6 8#4;+0)
FNWIQUE mo e zawierać maksymalnie FNWIQUE bitów, gdzie FNWIQUE jest
                          o zmiennej     liczbą całkowitą większą lub równą 1. Maksymalna długość zale y od systemu DBMS. Podobnie
                          długości)      jak w przypadku łańcuchów znakowych typu %*#4 8#4;+0), jeśli umieścimy w kolumnie zdefin iowanej
                                         jako $+6 8#4;+0)
FNWIQUE łańcuch o długości mniejszej ni FNWIQUE, system DBMS przechowa go
                                         w pierwotnej postaci nie wypełniając brakujących miejsc spacjami. Np. łańcuch $  typu $+6
                                         8#4;+0)
 przechowywany jest jako $  .




                          72
Podstawy SQL-a


                                                           Typy liczb dokładnych
                                                           Typy liczb dokładnych reprezentują dokładne
                                                           wartości liczbowe. Dokładna wartość liczbowa
                                                           posiada następujące cechy:
                                                            u Mo e być ujemna, dodatnia lub równa zero.
                                                            u Jest liczbą całkowitą lub dziesiętną.
                                                               Liczby całkowite nie zawierają
                                                               przecinka dziesiętnego (kropki w zapisie
                                                               komputerowym), np. –39, 0, 62262. Liczby
                                                               dziesiętne zawierają tak e cyfry po prawej
                                                               stronie przecinka np. –22.06, 0.0, 0.0003,
                                                               12.34.
                                                            u Posiada stałą rozdzielczość i dokładność.
                                                               Rozdzielczością określa się liczbę cyfr
                                                               znaczących wykorzystywanych do
                                                               przedstawiania liczby — liczba ta obejmuje
                                                               zarówno cyfry z prawej, jak i z lewej strony




                                                                                                                      Typy liczb dokładnych
                                                               przecinka dziesiętnego. Dokładność jest
                                                               to liczba cyfr po przecinku dziesiętnym.
                                                               Dokładność oczywiście nie mo e przekroczyć
                                                               rozdzielczości. Ustalenie dokładności
                                                               na poziomie zero powoduje przedstawienie
                                                               liczby w postaci całkowitej. We wskazówkach
                                                               zawarto kilka przykładów.
                                                            u Nale y do jednego z typów przedstawionych
                                                               w tabeli 3.7.
Tabela 3.7. Typy liczb dokładnych
Typ                  Opis
07/'4+%              Reprezentuje liczbę dziesiętną. Liczby dziesiętne są przechowywane w kolumnach zdefiniowanych
(liczbowa)           jako 07/'4+%
TQFKGNEQUE= FQMNCFPQUE?. TQFKGNEQUE jest liczbą większą lub równą 1
                     — maksymalna wielkość zale y od systemu DBMS. FQMNCFPQUE jest liczbą z przedziału od 0 do
                     TQFKGNEQUE. Jeśli FQMNCFPQUE nie jest jawnie określona, domyślnie przyjmowana jest jako 0
                     (co powoduje, e w rzeczywistości typ staje się całkowity).
'%+/#.              Ten typ danych jest analogiczny do typu 07/'4+%, niektóre systemy DBMS traktują je
(dziesiętna)         równowa nie. Ró nica jest taka, e system DBMS mo e określić TQFKGNEQUE liczby
                     jako większą ni ustalono to w definicji '%+/#.
TQFKGNEQUE= FQMNCFPQUE?
                     — TQFKGNEQUE jest min imalnym, a nie rzeczywistym rozmiarem przedstawianej liczby,
                     tak jak było to w przypadku typu 07/'4+%. Słowa '% i '%+/#. są synonimami.
+06')'4              Reprezentuje liczbę całkowitą. Minimalna i maksymalna wartość liczby, jaka mo e być
(całkowita)          przechowywana w kolumnie zdefiniowanej jako +06')'4, zale y od systemu DBMS. Defin icja
                     typu +06')'4 nie wymaga określania argumentów. Słowa +06')'4 oraz +06 są synonimami.
5/#..+06             Ten typ jest takim samym typem jak +06')'4, posiada tylko wę szy zakres dopuszczalnych
(całkowita krótka)   wartości — zale ny od systemu DBMS. Definicja tego typu nie wymaga określania argumentów.




                                                                                                                 73
Rozdział 3.

                        Wskazówki                                           Tabela 3.8. Przykłady rozdzielczości i dokładności
                                                                            dla liczby 123.89
                             Tabela 3.8 przedstawia sposób, w jaki liczba
                                                                            Definicja typu      Przechowywana wartość
                             123.89 jest przechowywana dla ró nych
                             wartości rozdzielczości i dokładności.         07/'4+%
          
                                                                            07/'4+%
        
                             Wartości liczbowych nie umieszcza się
                                                                            07/'4+%
        
                             w cudzysłowach.
                                                                            07/'4+%
        
                             Jeśli liczby nie są stosowane do adnych        07/'4+%
        
                             obliczeń (np. numery telefonów czy             07/'4+%
        
                             kody pocztowe), lepiej przechowywać
                                                                            07/'4+%
        Poza zakresem rozdzielczości
                             je jako łańcuchy znaków. Zapobiegnie
                                                                            07/'4+%
        Poza zakresem rozdzielczości
                             to ewentualnej utracie informacji
                             — na przykład przechowanie kodu 
                             jako liczby całkowitej spowoduje utratę
                             początkowych zer.
                             Obliczenia wykonywane tylko na liczbach
                             całkowitych są znacznie szybsze od
                             obliczeń, których argumentami są liczby
Typy liczb dokładnych




                             dziesiętne lub zmiennoprzecinkowe.
                                    Typami liczb dokładnych
                             w Microsoft Accessie są FKGUKúVPG, NKEDC
                             EC MQYKVC, DCLV oraz NKEDC EC MQYKVC
                             F WIC. Microsoft SQL Server oferuje typy:
                             PWOGTKE, FGEKOCN, KPVGIGT, UOCNNKPV, DKIKPV
                             oraz VKP[KPV. W Oracle’u wystepują:
                             PWOGTKE, FGEKOCN, KPVGIGT, UOCNNKPV
                             oraz PWODGT. MySQL oferuje typy PWOGTKE,
                             FGEKOCN, KPVGIGT, UOCNNKPV, DKIKPV,
                             OGFKWOKPV i VKP[KPV, natomiast PostgreSQL
                             PWOGTKE, FGEKOCN, KPVGIGT, UOCNNKPV
                             oraz DKIKPV.




                        74
Podstawy SQL-a


Typy liczb przybliżonych
Typy liczb przybli onych słu ą do                           u Posiada stałą rozdzielczość, ale nie posiada
reprezentowania przybli onych wartości                         dokładności w ścisłym sensie tego słowa
liczbowych. Przybli ona wartość liczbowa                       (określają ją znak oraz wartość eksponenta).
posiada następujące cechy:                                     Rozdzielczość jest liczbą bitów
                                                               wykorzystywanych do zapisu mantysy.
u Mo e być liczbą ujemną, dodatnią
                                                               Aby przekształcić rozdzielczość bitową na
   lub równą zero.
                                                               dziesiętną, nale y ją pomno yć przez liczbę
u Jest traktowana jako przybli enie liczby                     0.30103. Przekształcenie rozdzielczości
   zmiennoprzecinkowej (rzeczywistej).                         dziesiętnej na bitową mo na uzyskać,
                                                               mno ąc ją przez liczbę 3.32193. Na przykład
u Zazwyczaj wykorzystywana jest do
                                                               24 bity oznaczają rozdzielczość 7-cyfrową,
   reprezentowania liczb bardzo du ych                         a 53 bity to rozdzielczość 15-cyfrowa.
   lub bardzo małych oraz do obliczeń
   naukowych.                                               u Nale y do jednego z typów wymienionych
                                                               w tabeli 3.9.
u Wyra ana jest w postaci naukowej.
   Wartość w notacji naukowej zapisuje się                 Wskazówki
   jako liczbę dziesiętną mno oną przez




                                                                                                                        Typy liczb przybliżonych
   całkowitą potęgę liczby 10. Du a litera '                   Wartości liczbowych nie umieszcza się
   jest symbolem eksponenta np. 2.5E2 =                        w cudzysłowie.
   2.5∗102 = 250. Mantysą w takim zapisie                              Typami liczb przybli onych
   są cyfry znaczące (w podanym przykładzie                    w Microsoft Accessie są RQLGF[PEC RTGE[LC
   2.5), natomiast eksponentem jest                            i RQFYÎLPC RTGE[LC. W Microsoft SQL
   wykładnik potęgi liczby 10 (w podanym                       Serverze występują typy HNQCV i TGCN. Oracle
   przykładzie 2). Zarówno mantysa, jak                        oferuje typy HNQCV, TGCN, FQWDNG RTGEKUKQP
   i eksponent, mogą mieć określony znak:                      oraz PWODGT. W MySQL-u istnieją typy HNQCV,
   –2.5E–2 = –2.5∗10–2 = –0.025.                               TGCN i FQWDNG, natomiast w PostgreSQL-u
                                                               TGCN i FQWDNG RTGEKUKQP.


Tabela 3.9. Typy liczb przybli onych

Typ                    Opis
(.1#6                  Reprezentuje liczbę zmiennoprzecinkową. Liczba zmiennoprzecinkowa przechowywana
(zmiennoprzecinkowa)   w kolumnie zdefiniowanej jako (.1#6
TQFKGNEQUE posiada określoną w definicji
                       rozdzielczość — liczbę większą lub równą 1 wyra ającą ilość bitów, a nie cyfr. Maksymalna
                       rozdzielczość zale y od systemu DBMS.
4'#.                   Ten typ jest analogiczny do typu (.1#6, z tym e rozdzielczość ustala system DBMS.
(rzeczywista)          Liczby typu 4'#. często nazywa się liczbami pojedynczej precyzji. Definicja typu 4'#.
                       nie wymaga określania argumentów.
17$.' 24'%+5+10       Jest to taki sam typ, jak (.1#6. Ró nica jest tylko taka, e rozdzielczość typu 17$.'
(podwójnej precyzji)   24'%+5+10 ustalana przez system DBMS jest większa od rozdzielczości typu 4'#..
                       Definicja typu 17$.' 24'%+5+10 nie wymaga określania argumentów.




                                                                                                                   75
Rozdział 3.


                    Typy daty i czasu
                    Typy daty i czasu, jak sama nazwa                           u Reguły rządzące kalendarzem gregoriańskim
                    wskazuje, słu ą do reprezentowania dat                         określają w naturalny sposób format zapisu
                    i czasu. Wartości tych typów posiadają                         dat. Systemy DBMS odrzucają wartości,
                    następujące cechy:                                             których nie mogą zinterpretować jako daty.
                    u Są określane względem czasu UTC                           u Wartości czasowe oparte są na 24-godzinnym
                         (ang. Universal Coordinated Time)                         formacie czasu (np. 13:00 zamiast 1:00
                         zwanego oficjalnie czasem uniwersalnym                    po południu).
                         Greenwich (ang. GMT — Greenwich
                                                                                u Łączniki () oddzielają kolejne części dat,
                         Mean Time). Standard SQL-92 wymaga,
                                                                                  natomiast dwukropki () oddzielają kolejne
                         aby ka da sesja SQL posiadała domyślne
                                                                                   części wartości czasowych. Jeśli jedna wartość
                         przesunięcie czasowe względem czasu
                                                                                   zawiera jednocześnie datę i czas, to są one
                         UTC, które jest wykorzystywane
                                                                                   oddzielone spacją.
                         w trakcie trwania sesji. Na przykład
                         przesunięciem dla strefy czasowej                      u Nale ą do jednego z typów przedstawionych
                         San Francisco w Kalifornii jest –8.                       w tabeli 3.10.
                    Tabela 3.10. Typy daty i czasu
                    Typ                        Opis
Typy daty i czasu




                    #6'                       Reprezentuje datę. Data przechowywana w kolumnie zdefin iowanej jako #6' zawiera trzy
                    (data)                     liczby całkowite: rok (;'#4), miesiąc (/106*) i dzień (#;) sformatowane według schematu
                                               rrrr-mm-dd (długość 10), np. . Tabela 3.11 przedstawia poprawne wartości
                                               dla pól tego typu. Definicja typu #6' nie wymaga określania argumentów.
                    6+/'                       Reprezentuje czas dnia. Czas przechowywany w kolumnie zdefiniowanej jako 6+/' zawiera
                    (czas)                     trzy pola: godzinę (*174), minuty (/+076') oraz sekundy (5'%10) sformatowane według
                                               szablonu gg:mm:ss (długość 8), np. . Opcjonalnie mo na zdefiniować kolumnę
                                               jako 6+/'
TQFKGNEQUE, gdzie TQFKGNEQUE będzie liczbą większą lub równą zero
                                               oznaczającą liczbę cyfr określających części sekundy. Maksymalna TQFKGNEQUE zale y
                                               od systemu DBMS, natomiast mini malna wynosi 6. Wartości *174 oraz /+076' są liczbami
                                               całkowitymi, a 5'%10 jest liczbą dziesiętną. Szablonem wartości czasu zawierającym
                                               ułamkowe części sekund jest gg:mm:ss.ssss…(długość 9 + liczba cyfr ułamkowych),
                                               np.  . Tabela 3.11 przedstawia poprawne wartości pól tego typu.
                    6+/'56#/2                  Reprezentuje kombinację wartości #6' i 6+/' oddzielonych spacją. Formatem wartości
                    (stempel czasowy)          tego typu jest rrrr-mm-dd gg:mm:ss (długość 19), np.  . Mo na tak e
                                               określić za pomocą definicji 6+/'56#/2
TQFKGNEQUE ułamkowe części sekund — format
                                               zapisu wygląda wtedy następująco: rrrr-mm-dd gg:mm:ss.ssss… (długość 20 + liczba cyfr
                                               ułamkowych).
                    6+/' 9+6* 6+/' 10'        Ten typ jest typem analogicznym do typu #6#, z tym e zawiera dodatkowe pole
                    (czas ze strefą czasową)   — 6+/'A10'A1((5'6 (przesunięcie strefy czasowej) — określające przesunięcie w godzinach
                                               względem czasu UTC. Wartość 6+/'A10'A1((5'6 sformatowana jest jako +06'48#. *174
                                               61 /+076' (patrz następny podrozdział) i mo e zawierać wartości przedstawione w tabeli
                                               3.11. Uwzględnienie strefy czasowej osiąga się poprzez dodanie do wartości typu 6+/'
                                               zwrotu: #6 6+/' 10' VKOGAQPGAQHHUGV, np.  #6 6+/' 10' . Drugą
                                               mo liwością jest dodanie zwrotu #6 .1%#., co wskazuje, e strefa czasowa powinna być
                                               domyślna dla całej sesji, np.  #6 .1%#.. Jeśli fraza #6 nie jest jawnie określona,
                                               wszystkie wartości czasu są domyślnie przyjmowane jako #6 .1%#..
                    6+/'56#/2 9+6*             Ten typ odpowiada typowi 6+/'56#/2, zawiera tylko dodatkowe pole 6+/'A10'A1((5'6
                    6+/' 10'                  określające przesunięcie w godzinach względem czasu UTC. Zasady składniowe wyra eń tego
                    (stempel czasowy           typu są analogiczne, co w przypadku typu 6+/' 9+6* 6+/' 10', trzeba jedynie na początku
                    ze strefą czasową)         umieścić datę np.   #6 6+/' 10' .



                    76
Podstawy SQL-a

Tabela 3.11. Pola typu daty i czasu           Wskazówki
Pole                   Poprawna wartość         Opis pobierania czasu systemowego
;'#4                   od  do           znajdziesz w podrozdziale „Pobieranie
/106*                  od  do               bie ącej daty i czasu” w rozdziale 5.
#;                    od  do               Wartości daty i czasu mo na porównywać,
*174                   od  do               jeśli zawierają te same pola (patrz
/+076'                 od  do               „Filtrowanie wierszy za pomocą frazy
5'%10                 od  do           WHERE” w rozdziale 4. oraz „Obliczenia
                       (patrz wskazówki)        operujące na wartościach daty i czasu”).
6+/'A10'A1((5'6       od  do 

                                                Pole 5'%10 mo e zawierać wartości
                                                mniejsze lub równe 61.999… (zamiast
                                                59.999…), co pozwala na uwzględnianie
                                                w określonej minucie „sekund przestępnych”
                                                w celu zachowania zgodności zegara
                                                zdefiniowanego przez człowieka
                                                z naturalnym zegarem Ziemi.
                                                Wzorce daty i czasu wpisuje się,
          Typem daty i czasu w Microsoft        rozpoczynając od słowa oznaczającego typ,
   Accessie jest FCVCIQFKPC. Microsoft        potem następuje spacja i wartość daty




                                                                                             Typy daty i czasu
   SQL Server oferuje typy FCVGVKOG oraz        lub czasu umieszczona w apostrofach,
   UOCNNFCVGVKOG. W Oracle’u są to FCVG         czyli #6' TTTTOOFF , 6+/' IIOOUU
   i VKOGUVCOR. MySQL oferuje typy FCVG,        lub 6+/'56#/2 TTTTOOFF IIOOUU .
   VKOG, FCVGVKOG i VKOGUVCOR, natomiast
                                                Standard SQL-92 nie przewiduje mo liwości
   PostgreSQL FCVG, VKOG i VKOGUVCOR.
                                                przechowywania dat p.n.e. – przed naszą
   Systemy DBMS pozwalają na wpisywanie         erą czy przed Chrystusem (p. Ch), ale Twój
   wartości dat w formatach miesiąc-dzień-      system DBMS mo e taką mo liwość
   rok, dzień-miesiąc-rok oraz w innych,        oferować.
   a wartości czasu w postaci A.M./P.M..
                                                Stemple czasowe są w praktyce często
   Format, w jakim wartości dat i czasu są
                                                wykorzystywane do konstruowania
   wyświetlane mo e ró nić się od tego,
                                                unikalnych kluczy lub zaznaczania
   w jakim zostały wprowadzone.
                                                zdarzeń związanych z wierszem,
   W Microsoft Accessie wzorców dat i czasu     w którym występują.
   nie umieszcza się w apostrofach, lecz
                                                Typ danych 6+/' 9+6* 6+/' 10' właściwie
   pomiędzy znakami oraz nie wpisuje się
                                                nie ma sensu, gdy w rzeczywistości strefy
   nazwy typu.
                                                czasowe nie są jednoznaczne bez określonej
   W 4Microsoft SQL Serverze tak e nie          daty (przesunięcie czasowe zmienia się
   wpisuje się typu danych przed wzorcami       w ciągu roku). Lepiej jest stosować typ
   dat i czasu.                                 6+/'56#/2 9+6* 6+/' 10'.




                                                                                        77

More Related Content

What's hot

Oracle Database 10g. Nowe możliwości
Oracle Database 10g. Nowe możliwościOracle Database 10g. Nowe możliwości
Oracle Database 10g. Nowe możliwościWydawnictwo Helion
 
Oracle. Optymalizacja wydajności
Oracle. Optymalizacja wydajnościOracle. Optymalizacja wydajności
Oracle. Optymalizacja wydajnościWydawnictwo Helion
 
PostgreSQL. Leksykon kieszonkowy
PostgreSQL. Leksykon kieszonkowyPostgreSQL. Leksykon kieszonkowy
PostgreSQL. Leksykon kieszonkowyWydawnictwo Helion
 
mod_rewrite. Podręcznik administratora
mod_rewrite. Podręcznik administratoramod_rewrite. Podręcznik administratora
mod_rewrite. Podręcznik administratoraWydawnictwo Helion
 
Po prostu Mac OS X 10.5 Leopard PL
Po prostu Mac OS X 10.5 Leopard PLPo prostu Mac OS X 10.5 Leopard PL
Po prostu Mac OS X 10.5 Leopard PLWydawnictwo Helion
 
Microsoft Visual C++ 2008. Tworzenie aplikacji dla Windows
Microsoft Visual C++ 2008. Tworzenie aplikacji dla WindowsMicrosoft Visual C++ 2008. Tworzenie aplikacji dla Windows
Microsoft Visual C++ 2008. Tworzenie aplikacji dla WindowsWydawnictwo Helion
 
Witryny nie do ukrycia. Jak zbudować stronę, którą znajdzie każda wyszukiwarka
Witryny nie do ukrycia. Jak zbudować stronę, którą znajdzie każda wyszukiwarkaWitryny nie do ukrycia. Jak zbudować stronę, którą znajdzie każda wyszukiwarka
Witryny nie do ukrycia. Jak zbudować stronę, którą znajdzie każda wyszukiwarkaWydawnictwo Helion
 
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie II
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie IICo potrafi Twój iPhone? Podręcznik użytkownika. Wydanie II
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie IIWydawnictwo Helion
 

What's hot (20)

MySQL. Opis języka
MySQL. Opis językaMySQL. Opis języka
MySQL. Opis języka
 
Oracle Database 10g. Nowe możliwości
Oracle Database 10g. Nowe możliwościOracle Database 10g. Nowe możliwości
Oracle Database 10g. Nowe możliwości
 
Po prostu Access 2003 PL
Po prostu Access 2003 PLPo prostu Access 2003 PL
Po prostu Access 2003 PL
 
Oracle. Optymalizacja wydajności
Oracle. Optymalizacja wydajnościOracle. Optymalizacja wydajności
Oracle. Optymalizacja wydajności
 
ACDSee. Ćwiczenia
ACDSee. ĆwiczeniaACDSee. Ćwiczenia
ACDSee. Ćwiczenia
 
PostgreSQL. Leksykon kieszonkowy
PostgreSQL. Leksykon kieszonkowyPostgreSQL. Leksykon kieszonkowy
PostgreSQL. Leksykon kieszonkowy
 
SQL. Od podstaw
SQL. Od podstawSQL. Od podstaw
SQL. Od podstaw
 
Po prostu Excel 2003 PL
Po prostu Excel 2003 PLPo prostu Excel 2003 PL
Po prostu Excel 2003 PL
 
mod_rewrite. Podręcznik administratora
mod_rewrite. Podręcznik administratoramod_rewrite. Podręcznik administratora
mod_rewrite. Podręcznik administratora
 
Excel. Funkcje w przykładach
Excel. Funkcje w przykładachExcel. Funkcje w przykładach
Excel. Funkcje w przykładach
 
Access w biurze i nie tylko
Access w biurze i nie tylkoAccess w biurze i nie tylko
Access w biurze i nie tylko
 
Po prostu Mac OS X 10.5 Leopard PL
Po prostu Mac OS X 10.5 Leopard PLPo prostu Mac OS X 10.5 Leopard PL
Po prostu Mac OS X 10.5 Leopard PL
 
Po prostu Excel 2007 PL
Po prostu Excel 2007 PLPo prostu Excel 2007 PL
Po prostu Excel 2007 PL
 
Oracle Discoverer
Oracle DiscovererOracle Discoverer
Oracle Discoverer
 
Microsoft Visual C++ 2008. Tworzenie aplikacji dla Windows
Microsoft Visual C++ 2008. Tworzenie aplikacji dla WindowsMicrosoft Visual C++ 2008. Tworzenie aplikacji dla Windows
Microsoft Visual C++ 2008. Tworzenie aplikacji dla Windows
 
Witryny nie do ukrycia. Jak zbudować stronę, którą znajdzie każda wyszukiwarka
Witryny nie do ukrycia. Jak zbudować stronę, którą znajdzie każda wyszukiwarkaWitryny nie do ukrycia. Jak zbudować stronę, którą znajdzie każda wyszukiwarka
Witryny nie do ukrycia. Jak zbudować stronę, którą znajdzie każda wyszukiwarka
 
Algorytmy. Od podstaw
Algorytmy. Od podstawAlgorytmy. Od podstaw
Algorytmy. Od podstaw
 
Excel. Indywidualne szkolenie
Excel. Indywidualne szkolenieExcel. Indywidualne szkolenie
Excel. Indywidualne szkolenie
 
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie II
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie IICo potrafi Twój iPhone? Podręcznik użytkownika. Wydanie II
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie II
 
Modelowanie danych
Modelowanie danychModelowanie danych
Modelowanie danych
 

Viewers also liked

Viewers also liked (15)

CorelDRAW 11. Vademecum profesjonalisty. Tom 2
CorelDRAW 11. Vademecum profesjonalisty. Tom 2CorelDRAW 11. Vademecum profesjonalisty. Tom 2
CorelDRAW 11. Vademecum profesjonalisty. Tom 2
 
Po prostu Flash MX
Po prostu Flash MXPo prostu Flash MX
Po prostu Flash MX
 
J2EE. Wzorce projektowe
J2EE. Wzorce projektoweJ2EE. Wzorce projektowe
J2EE. Wzorce projektowe
 
Po prostu HTML 4. Wydanie III
Po prostu HTML 4. Wydanie IIIPo prostu HTML 4. Wydanie III
Po prostu HTML 4. Wydanie III
 
Znajdź błąd. Sztuka analizowania kodu
Znajdź błąd. Sztuka analizowania koduZnajdź błąd. Sztuka analizowania kodu
Znajdź błąd. Sztuka analizowania kodu
 
Sieci komputerowe. Kompendium
Sieci komputerowe. KompendiumSieci komputerowe. Kompendium
Sieci komputerowe. Kompendium
 
Java 2. Techniki zaawansowane
Java 2. Techniki zaawansowaneJava 2. Techniki zaawansowane
Java 2. Techniki zaawansowane
 
IrfanView
IrfanViewIrfanView
IrfanView
 
PHP 5 i MySQL. Zastosowania e-commerce
PHP 5 i MySQL. Zastosowania e-commercePHP 5 i MySQL. Zastosowania e-commerce
PHP 5 i MySQL. Zastosowania e-commerce
 
Windows XP. Indywidualne szkolenie
Windows XP. Indywidualne szkolenieWindows XP. Indywidualne szkolenie
Windows XP. Indywidualne szkolenie
 
Java 2. Techniki zaawansowane. Wydanie II
Java 2. Techniki zaawansowane. Wydanie IIJava 2. Techniki zaawansowane. Wydanie II
Java 2. Techniki zaawansowane. Wydanie II
 
Perl. Ćwiczenia
Perl. ĆwiczeniaPerl. Ćwiczenia
Perl. Ćwiczenia
 
Dreamweaver MX
Dreamweaver MXDreamweaver MX
Dreamweaver MX
 
Po prostu Outlook 2000 PL. Zarządzanie czasem
Po prostu Outlook 2000 PL. Zarządzanie czasemPo prostu Outlook 2000 PL. Zarządzanie czasem
Po prostu Outlook 2000 PL. Zarządzanie czasem
 
Sekrety kryptografii
Sekrety kryptografiiSekrety kryptografii
Sekrety kryptografii
 

Similar to SQL. Szybki start

Programowanie w języku C. Szybki start
Programowanie w języku C. Szybki startProgramowanie w języku C. Szybki start
Programowanie w języku C. Szybki startWydawnictwo Helion
 
100 sposobów na serwery Windows
100 sposobów na serwery Windows100 sposobów na serwery Windows
100 sposobów na serwery WindowsWydawnictwo Helion
 
Oracle9i. Podręcznik administratora baz danych
Oracle9i. Podręcznik administratora baz danychOracle9i. Podręcznik administratora baz danych
Oracle9i. Podręcznik administratora baz danychWydawnictwo Helion
 
Asembler. Sztuka programowania
Asembler. Sztuka programowaniaAsembler. Sztuka programowania
Asembler. Sztuka programowaniaWydawnictwo Helion
 
Ajax. Wzorce i najlepsze rozwiązania
Ajax. Wzorce i najlepsze rozwiązaniaAjax. Wzorce i najlepsze rozwiązania
Ajax. Wzorce i najlepsze rozwiązaniaWydawnictwo Helion
 
Bazy danych SQL. Teoria i praktyka
Bazy danych SQL. Teoria i praktykaBazy danych SQL. Teoria i praktyka
Bazy danych SQL. Teoria i praktykaWydawnictwo Helion
 
SQL Server 2005. Wyciśnij wszystko
SQL Server 2005. Wyciśnij wszystkoSQL Server 2005. Wyciśnij wszystko
SQL Server 2005. Wyciśnij wszystkoWydawnictwo Helion
 
Struktury danych i techniki obiektowe na przykładzie Javy 5.0
Struktury danych i techniki obiektowe na przykładzie Javy 5.0Struktury danych i techniki obiektowe na przykładzie Javy 5.0
Struktury danych i techniki obiektowe na przykładzie Javy 5.0Wydawnictwo Helion
 
Po prostu PHP. Techniki zaawansowane
Po prostu PHP. Techniki zaawansowanePo prostu PHP. Techniki zaawansowane
Po prostu PHP. Techniki zaawansowaneWydawnictwo Helion
 
Oracle Database 11g. Programowanie w języku PL/SQL
Oracle Database 11g. Programowanie w języku PL/SQLOracle Database 11g. Programowanie w języku PL/SQL
Oracle Database 11g. Programowanie w języku PL/SQLWydawnictwo Helion
 
Oracle9i. Administrowanie bazami danych od podstaw
Oracle9i. Administrowanie bazami danych od podstawOracle9i. Administrowanie bazami danych od podstaw
Oracle9i. Administrowanie bazami danych od podstawWydawnictwo Helion
 
PHP6 i MySQL 5. Dynamiczne strony WWW. Szybki start
PHP6 i MySQL 5. Dynamiczne strony WWW. Szybki startPHP6 i MySQL 5. Dynamiczne strony WWW. Szybki start
PHP6 i MySQL 5. Dynamiczne strony WWW. Szybki startWydawnictwo Helion
 
Serwer SQL 2008. Administracja i programowanie
Serwer SQL 2008. Administracja i programowanieSerwer SQL 2008. Administracja i programowanie
Serwer SQL 2008. Administracja i programowanieWydawnictwo Helion
 
Windows Server 2003. Wysoko wydajne rozwiązania
Windows Server 2003. Wysoko wydajne rozwiązaniaWindows Server 2003. Wysoko wydajne rozwiązania
Windows Server 2003. Wysoko wydajne rozwiązaniaWydawnictwo Helion
 
Programowanie w języku C. FAQ
Programowanie w języku C. FAQProgramowanie w języku C. FAQ
Programowanie w języku C. FAQWydawnictwo Helion
 

Similar to SQL. Szybki start (19)

Programowanie w języku C. Szybki start
Programowanie w języku C. Szybki startProgramowanie w języku C. Szybki start
Programowanie w języku C. Szybki start
 
100 sposobów na serwery Windows
100 sposobów na serwery Windows100 sposobów na serwery Windows
100 sposobów na serwery Windows
 
Oracle9i. Podręcznik administratora baz danych
Oracle9i. Podręcznik administratora baz danychOracle9i. Podręcznik administratora baz danych
Oracle9i. Podręcznik administratora baz danych
 
Asembler. Sztuka programowania
Asembler. Sztuka programowaniaAsembler. Sztuka programowania
Asembler. Sztuka programowania
 
Ajax. Wzorce i najlepsze rozwiązania
Ajax. Wzorce i najlepsze rozwiązaniaAjax. Wzorce i najlepsze rozwiązania
Ajax. Wzorce i najlepsze rozwiązania
 
Bazy danych SQL. Teoria i praktyka
Bazy danych SQL. Teoria i praktykaBazy danych SQL. Teoria i praktyka
Bazy danych SQL. Teoria i praktyka
 
SQL Server 2005. Wyciśnij wszystko
SQL Server 2005. Wyciśnij wszystkoSQL Server 2005. Wyciśnij wszystko
SQL Server 2005. Wyciśnij wszystko
 
Struktury danych i techniki obiektowe na przykładzie Javy 5.0
Struktury danych i techniki obiektowe na przykładzie Javy 5.0Struktury danych i techniki obiektowe na przykładzie Javy 5.0
Struktury danych i techniki obiektowe na przykładzie Javy 5.0
 
Po prostu PHP. Techniki zaawansowane
Po prostu PHP. Techniki zaawansowanePo prostu PHP. Techniki zaawansowane
Po prostu PHP. Techniki zaawansowane
 
Oracle Database 11g. Programowanie w języku PL/SQL
Oracle Database 11g. Programowanie w języku PL/SQLOracle Database 11g. Programowanie w języku PL/SQL
Oracle Database 11g. Programowanie w języku PL/SQL
 
Oracle9i. Administrowanie bazami danych od podstaw
Oracle9i. Administrowanie bazami danych od podstawOracle9i. Administrowanie bazami danych od podstaw
Oracle9i. Administrowanie bazami danych od podstaw
 
PHP6 i MySQL 5. Dynamiczne strony WWW. Szybki start
PHP6 i MySQL 5. Dynamiczne strony WWW. Szybki startPHP6 i MySQL 5. Dynamiczne strony WWW. Szybki start
PHP6 i MySQL 5. Dynamiczne strony WWW. Szybki start
 
Java. Potrzaski
Java. PotrzaskiJava. Potrzaski
Java. Potrzaski
 
Po prostu Flash MX 2004
Po prostu Flash MX 2004Po prostu Flash MX 2004
Po prostu Flash MX 2004
 
Java. Rozmówki
Java. RozmówkiJava. Rozmówki
Java. Rozmówki
 
Serwer SQL 2008. Administracja i programowanie
Serwer SQL 2008. Administracja i programowanieSerwer SQL 2008. Administracja i programowanie
Serwer SQL 2008. Administracja i programowanie
 
Windows Server 2003. Wysoko wydajne rozwiązania
Windows Server 2003. Wysoko wydajne rozwiązaniaWindows Server 2003. Wysoko wydajne rozwiązania
Windows Server 2003. Wysoko wydajne rozwiązania
 
Delphi 7 i bazy danych
Delphi 7 i bazy danychDelphi 7 i bazy danych
Delphi 7 i bazy danych
 
Programowanie w języku C. FAQ
Programowanie w języku C. FAQProgramowanie w języku C. FAQ
Programowanie w języku C. FAQ
 

More from Wydawnictwo Helion

Tworzenie filmów w Windows XP. Projekty
Tworzenie filmów w Windows XP. ProjektyTworzenie filmów w Windows XP. Projekty
Tworzenie filmów w Windows XP. ProjektyWydawnictwo Helion
 
Blog, więcej niż internetowy pamiętnik
Blog, więcej niż internetowy pamiętnikBlog, więcej niż internetowy pamiętnik
Blog, więcej niż internetowy pamiętnikWydawnictwo Helion
 
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczne
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktycznePozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczne
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczneWydawnictwo Helion
 
E-wizerunek. Internet jako narzędzie kreowania image'u w biznesie
E-wizerunek. Internet jako narzędzie kreowania image'u w biznesieE-wizerunek. Internet jako narzędzie kreowania image'u w biznesie
E-wizerunek. Internet jako narzędzie kreowania image'u w biznesieWydawnictwo Helion
 
Makrofotografia. Magia szczegółu
Makrofotografia. Magia szczegółuMakrofotografia. Magia szczegółu
Makrofotografia. Magia szczegółuWydawnictwo Helion
 
Java. Efektywne programowanie. Wydanie II
Java. Efektywne programowanie. Wydanie IIJava. Efektywne programowanie. Wydanie II
Java. Efektywne programowanie. Wydanie IIWydawnictwo Helion
 
Ajax, JavaScript i PHP. Intensywny trening
Ajax, JavaScript i PHP. Intensywny treningAjax, JavaScript i PHP. Intensywny trening
Ajax, JavaScript i PHP. Intensywny treningWydawnictwo Helion
 
PowerPoint 2007 PL. Seria praktyk
PowerPoint 2007 PL. Seria praktykPowerPoint 2007 PL. Seria praktyk
PowerPoint 2007 PL. Seria praktykWydawnictwo Helion
 
Serwisy społecznościowe. Budowa, administracja i moderacja
Serwisy społecznościowe. Budowa, administracja i moderacjaSerwisy społecznościowe. Budowa, administracja i moderacja
Serwisy społecznościowe. Budowa, administracja i moderacjaWydawnictwo Helion
 
USB. Praktyczne programowanie z Windows API w C++
USB. Praktyczne programowanie z Windows API w C++USB. Praktyczne programowanie z Windows API w C++
USB. Praktyczne programowanie z Windows API w C++Wydawnictwo Helion
 
Microsoft Visual Studio 2008. Księga eksperta
Microsoft Visual Studio 2008. Księga ekspertaMicrosoft Visual Studio 2008. Księga eksperta
Microsoft Visual Studio 2008. Księga ekspertaWydawnictwo Helion
 
Rewizor GT. Prowadzenie ewidencji księgowej
Rewizor GT. Prowadzenie ewidencji księgowejRewizor GT. Prowadzenie ewidencji księgowej
Rewizor GT. Prowadzenie ewidencji księgowejWydawnictwo Helion
 
Fotografia cyfrowa. Poradnik bez kantów
Fotografia cyfrowa. Poradnik bez kantówFotografia cyfrowa. Poradnik bez kantów
Fotografia cyfrowa. Poradnik bez kantówWydawnictwo Helion
 

More from Wydawnictwo Helion (20)

Tworzenie filmów w Windows XP. Projekty
Tworzenie filmów w Windows XP. ProjektyTworzenie filmów w Windows XP. Projekty
Tworzenie filmów w Windows XP. Projekty
 
Blog, więcej niż internetowy pamiętnik
Blog, więcej niż internetowy pamiętnikBlog, więcej niż internetowy pamiętnik
Blog, więcej niż internetowy pamiętnik
 
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczne
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktycznePozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczne
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczne
 
E-wizerunek. Internet jako narzędzie kreowania image'u w biznesie
E-wizerunek. Internet jako narzędzie kreowania image'u w biznesieE-wizerunek. Internet jako narzędzie kreowania image'u w biznesie
E-wizerunek. Internet jako narzędzie kreowania image'u w biznesie
 
Makrofotografia. Magia szczegółu
Makrofotografia. Magia szczegółuMakrofotografia. Magia szczegółu
Makrofotografia. Magia szczegółu
 
Java. Efektywne programowanie. Wydanie II
Java. Efektywne programowanie. Wydanie IIJava. Efektywne programowanie. Wydanie II
Java. Efektywne programowanie. Wydanie II
 
JavaScript. Pierwsze starcie
JavaScript. Pierwsze starcieJavaScript. Pierwsze starcie
JavaScript. Pierwsze starcie
 
Ajax, JavaScript i PHP. Intensywny trening
Ajax, JavaScript i PHP. Intensywny treningAjax, JavaScript i PHP. Intensywny trening
Ajax, JavaScript i PHP. Intensywny trening
 
PowerPoint 2007 PL. Seria praktyk
PowerPoint 2007 PL. Seria praktykPowerPoint 2007 PL. Seria praktyk
PowerPoint 2007 PL. Seria praktyk
 
Excel 2007 PL. Seria praktyk
Excel 2007 PL. Seria praktykExcel 2007 PL. Seria praktyk
Excel 2007 PL. Seria praktyk
 
Access 2007 PL. Seria praktyk
Access 2007 PL. Seria praktykAccess 2007 PL. Seria praktyk
Access 2007 PL. Seria praktyk
 
Word 2007 PL. Seria praktyk
Word 2007 PL. Seria praktykWord 2007 PL. Seria praktyk
Word 2007 PL. Seria praktyk
 
Serwisy społecznościowe. Budowa, administracja i moderacja
Serwisy społecznościowe. Budowa, administracja i moderacjaSerwisy społecznościowe. Budowa, administracja i moderacja
Serwisy społecznościowe. Budowa, administracja i moderacja
 
AutoCAD 2008 i 2008 PL
AutoCAD 2008 i 2008 PLAutoCAD 2008 i 2008 PL
AutoCAD 2008 i 2008 PL
 
Bazy danych. Pierwsze starcie
Bazy danych. Pierwsze starcieBazy danych. Pierwsze starcie
Bazy danych. Pierwsze starcie
 
Inventor. Pierwsze kroki
Inventor. Pierwsze krokiInventor. Pierwsze kroki
Inventor. Pierwsze kroki
 
USB. Praktyczne programowanie z Windows API w C++
USB. Praktyczne programowanie z Windows API w C++USB. Praktyczne programowanie z Windows API w C++
USB. Praktyczne programowanie z Windows API w C++
 
Microsoft Visual Studio 2008. Księga eksperta
Microsoft Visual Studio 2008. Księga ekspertaMicrosoft Visual Studio 2008. Księga eksperta
Microsoft Visual Studio 2008. Księga eksperta
 
Rewizor GT. Prowadzenie ewidencji księgowej
Rewizor GT. Prowadzenie ewidencji księgowejRewizor GT. Prowadzenie ewidencji księgowej
Rewizor GT. Prowadzenie ewidencji księgowej
 
Fotografia cyfrowa. Poradnik bez kantów
Fotografia cyfrowa. Poradnik bez kantówFotografia cyfrowa. Poradnik bez kantów
Fotografia cyfrowa. Poradnik bez kantów
 

SQL. Szybki start

  • 1. IDZ DO PRZYK£ADOWY ROZDZIA£ SPIS TRE CI SQL. Szybki start KATALOG KSI¥¯EK Autor: Chris Fehily T³umaczenie: Jaros³aw Gierlicki KATALOG ONLINE ISBN: 83-7361-037-5 Tytu³ orygina³u: SQL: Visual QuickStart Guide ZAMÓW DRUKOWANY KATALOG Format: B5, stron: 416 TWÓJ KOSZYK DODAJ DO KOSZYKA SQL jest uznawanym za standard jêzykiem programowania s³u¿¹cym do tworzenia, modyfikowania oraz pobierania informacji przechowywanych przez systemy zarz¹dzania relacyjnymi bazami danych. Chocia¿ ka¿dy system bazodanowy u¿ywa CENNIK I INFORMACJE nieco innego dialektu tego jêzyka, czêsto rozbudowuj¹c go o dodatkowe funkcje, podstawowe instrukcje SQL s¹ wspólne dla wszystkich systemów: od Accessa do ZAMÓW INFORMACJE Oracle'a. O NOWO CIACH Bogata w ilustracje, napisana przystêpnym jêzykiem ksi¹¿ka „SQL. Szybki start” pozwoli Ci nauczyæ siê SQL-a i zacz¹æ pracê z relacyjn¹ baz¹ danych, niezale¿nie ZAMÓW CENNIK do tego, który system wybierzesz. Autor k³adzie szczególny nacisk na realizacjê konkretnych zadañ, przedstawiaj¹c kolejne kroki, jakie nale¿y wykonaæ, by rozwi¹zaæ dany problem. Dziêki temu ksi¹¿ka jest nie tylko przewodnikiem po jêzyku SQL i jego CZYTELNIA odmianach, ale tak¿e doskona³¹ pomoc¹, po któr¹ bêdziesz czêsto siêga³ w swojej praktyce programistycznej. FRAGMENTY KSI¥¯EK ONLINE W ksi¹¿ce omówiono m.in.: • Najpopularniejsze systemy bazodanowe, ich wady i zalety • Relacyjny model danych • Podstawy jêzyka SQL: sk³adniê i najwa¿niejsze typy danych • Pobieranie danych za pomoc¹ zapytañ • Operatory i funkcje SQL • Filtrowanie, grupowanie i sortowanie wyników zapytañ • Dodawanie, usuwanie i modyfikowanie danych • Korzystanie z indeksów • U¿ywanie perspektyw • Stosowanie transakcji Wydawnictwo Helion ul. Chopina 6 44-100 Gliwice tel. (32)230-98-63 e-mail: helion@helion.pl
  • 2. Spis treści Spis treści Wprowadzenie 9 Rozdział 1. Wybrane systemy zarządzania bazami danych 23 Uruchamianie programów 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 główne .................................................................................. 44 Spis treści Klucze obce....................................................................................... 46 Relacje .............................................................................................. 48 Normalizacja...................................................................................... 51 Przykładowa baza danych ................................................................... 56 Rozdział 3. Podstawy SQL-a 63 Składnia SQL-a ................................................................................. 64 Typy danych ...................................................................................... 69 Typy łańcuchów znaków..................................................................... 70 Typy łańcuchów bitowych .................................................................. 72 Typy liczb dokładnych........................................................................ 73 Typy liczb przybli onych.................................................................... 75 Typy daty i czasu .............................................................................. 76 Typy interwałowe (okresowe) ............................................................. 78 Wartości null ..................................................................................... 80 Rozdział 4. Pobieranie danych z tabeli 83 Pobieranie kolumn za pomocą fraz SELECT i FROM........................... 84 Tworzenie aliasów kolumn za pomocą słowa kluczowego AS ............... 87 Eliminowanie powtarzających się wierszy za pomocą słowa kluczowego DISTINCT............................................ 90 Sortowanie wierszy za pomocą frazy ORDER BY................................ 92 5
  • 3. Spis treści Filtrowanie wierszy za pomocą frazy WHERE .................................... 97 Łączenie i negacja warunków za pomocą operatorów AND, OR i NOT..100 Dopasowywanie szablonów za pomocą słowa kluczowego LIKE .........106 Filtrowanie poprzez zdefiniowanie zakresów za pomocą słowa kluczowego BETWEEN..........................................110 Filtrowanie za pomocą list i słowa kluczowego IN ..............................113 Sprawdzanie występowania wartości null za pomocą słowa kluczowego IS NULL..............................................116 Rozdział 5. Operatory i funkcje 119 Tworzenie kolumn opartych na wyra eniach .......................................120 Wykonywanie operacji arytmetycznych..............................................122 Wyznaczanie kolejności wykonywania obliczeń..................................124 Sklejanie łańcuchów za pomocą operatora ||........................................125 Wyodrębnianie podłańcuchów za pomocą funkcji SUBSTRING().........129 Zmiana wielkości liter w łańcuchach za pomocą funkcji UPPER() i LOWER() ............................................131 Obcinanie łańcuchów za pomocą funkcji TRIM() ................................133 Określanie długości łańcucha za pomocą funkcji Spis treści CHARACTER_LENGTH() ...............................................................136 Wyszukiwanie podłańcuchów za pomocą funkcji POSITION() ............138 Obliczenia operujące na wartościach daty i czasu................................140 Pobieranie bie ącej daty i czasu .........................................................142 Pobieranie informacji o u ytkowniku..................................................144 Konwertowanie typów danych za pomocą funkcji CAST() ..................145 Wyznaczanie wartości warunkowych za pomocą wyra enia CASE.......149 Sprawdzanie występowania wartości null za pomocą funkcji COALESCE() .......................................................153 Wyra enia porównujące oparte na funkcji NULLIF()...........................154 Rozdział 6. Sumowanie i grupowanie danych 157 Wykorzystywanie funkcji agregujących..............................................158 Wyszukiwanie wartości minimalnych za pomocą funkcji MIN()...........160 Wyszukiwanie wartości 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 Słowo kluczowe DISTINCT a funkcje agregujące ...............................165 Grupowanie wierszy za pomocą frazy GROUP BY .............................169 Filtrowanie grup za pomocą frazy HAVING .......................................175 6
  • 4. Spis treści Rozdział 7. Pobieranie danych z wielu tabel 179 Kwalifikowanie nazw kolumn ............................................................180 Tworzenie aliasów tabel za pomocą słowa kluczowego AS....................182 Złączenia ..........................................................................................184 Tworzenie złączeń za pomocą składni JOIN lub WHERE ....................186 Tworzenie złączeń krzy owych za pomocą frazy CROSS JOIN.............190 Tworzenie złączeń naturalnych za pomocą frazy NATURAL JOIN ......192 Tworzenie złączeń wewnętrznych za pomocą frazy INNER JOIN ........196 Tworzenie złączeń zewnętrznych za pomocą frazy OUTER JOIN ........220 Tworzenie autozłączeń.......................................................................233 Składanie wierszy za pomocą słowa kluczowego UNION ....................240 Wyszukiwanie wspólnych wierszy za pomocą słowa kluczowego INTERSECT........................................249 Wyszukiwanie ró niących się wierszy za pomocą słowa kluczowego EXCEPT..............................................251 Rozdział 8. Podzapytania 253 Idea podzapytań ................................................................................254 Spis treści Składnia podzapytań .........................................................................256 Podzapytania a złączenia....................................................................257 Podzapytania proste i skorelowane .....................................................261 Podzapytania skorelowane ................................................................263 Kwalifikowanie nazw kolumn występujących w podzapytaniach..........267 Wartości null w podzapytaniach .........................................................268 Wykorzystywanie podzapytań jako wyra eń definiujących kolumny.....270 Dokonywanie porównań z wartością zwracaną przez podzapytanie za pomocą operatora porównania........................................................276 Sprawdzanie przynale ności do zbioru za pomocą operatora IN ...........281 Dokonywanie porównań ze wszystkimi wartościami zwracanymi przez podzapytanie za pomocą słowa kluczowego ALL ......................288 Dokonywanie porównań z niektórymi wartościami zwracanymi przez podzapytanie za pomocą słowa kluczowego ANY .....................291 Sprawdzanie istnienia zadanych wartości za pomocą operatora EXISTS ..294 Porównywanie równowa nych zapytań...............................................302 Rozdział 9. Wstawianie, modyfikowanie i usuwanie wierszy 303 Wyświetlanie 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
  • 5. Spis treści Rozdział 10. Tworzenie, modyfikowanie i usuwanie tabel 323 Tworzenie tabel.................................................................................324 Idea atrybutów ..................................................................................325 Tworzenie nowych tabel za pomocą konstrukcji CREATE TABLE......327 Nieakceptowanie w kolumnach wartości null za pomocą słowa kluczowego NOT NULL ........................................329 Określanie wartości domyślnych za pomocą słowa kluczowego DEFAULT...........................................332 Określanie klucza głównego za pomocą słowa kluczowego PRIMARY KEY .................................336 Określanie klucza obcego za pomocą słowa kluczowego FOREIGN KEY ..................................339 Zapewnianie unikalnych wartości za pomocą słowa kluczowego UNIQUE .............................................345 Określanie atrybutów weryfikacyjnych za pomocą słowa kluczowego CHECK ..............................................348 Tworzenie tymczasowych tabel za pomocą konstrukcji CREATE TEMPORARY TABLE .....................................................351 Tworzenie nowych tabel na bazie tabel istniejących Spis treści 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 indeksów za pomocą konstrukcji CREATE INDEX ...........364 Usuwanie indeksów 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 przykładowej bazy danych publikacje ................................394 Skorowidz 405 8
  • 6. 3 Podstawy SQL-a Podstawy SQL-a Podstawy SQL-a Mo e zauwa yłeś, e w poprzednim rozdziale SQL był rzadko wspomniany. Zapamiętaj: SQL ≠ model relacyjny SQL jest oparty na modelu relacyjnym, ale nie jest w pełni jego implementacją. Odstępstwem od modelu jest na przykład to, e istnienie kluczy głównych w SQL-u jest opcjonalne, a nie obligatoryjne. W konsekwencji tabele bez kluczy głównych mogą zawierać dublujące się wiersze, co z kolei mo e uniemo liwiać dostęp do niektórych danych. Tematyka niniejszej ksią ki nie obejmuje wyczerpującego opisu wspomnianych ró nic (jeśli chcesz uzyskać Podstawy SQL-a więcej informacji, poszukaj w Internecie artykułów na temat SQL-a autorstwa E.F. Codda, Chrisa Date’a lub Fabiana Pascala). Rezultatem tych rozbie ności jest fakt, e to na u ytkownikach systemów DBMS, a nie na samych systemach, spoczywa obowiązek zapewnienia struktury relacyjnej. Inną konsekwencją jest nieidealna wymienność terminów przedstawionych w tabeli 2.1 w rozdziale 2. Przystępując do nauki SQL-a nale y mieć na względzie powy sze uwagi. Program SQL jest to ciąg instrukcji SQL wykonywanych w podanej kolejności. Aby napisać program, trzeba znać zasady składni SQL-a. Reguły tworzenia instrukcji SQL przedstawia niniejszy rozdział. Zawarto w nim równie opis typów danych i wartości null. 63
  • 7. Rozdział 3. Składnia SQL-a Rysunek 3.1 przedstawia przykład konstrukcji 4. Słowa kluczowe. Słowa kluczowe, SQL. Nie zwracaj na razie uwagi na jej zwane tak e słowami zastrze onymi, znaczenie (semantykę) — zadaniem tego są zarezerwowane przez SQL, poniewa przykładu jest wyjaśnienie zasad składni SQL-a. mają w tym języku specjalne znaczenie. Próba u ycia słowa kluczowego w sposób 1. Komentarz. Komentarz jest opcjonalnym inny ni pozwala na to jego kontekst (np. tekstem wpisywanym w osobnej linii jako identyfikator) spowoduje wystąpienie w celu wyjaśnienia działania programu. błędu. Tabela 3.1 zawiera słowa kluczowe Początek komentarza oznaczają dwa łączniki języka SQL. W tabeli 3.2 umieszczono — następujący po nich tekst jest ignorowany potencjalne słowa kluczowe języka SQL, przez system DBMS. Komentarz kończy się które na razie nie są zarezerwowane, wraz z końcem linii. ale w przyszłości mogą się takimi stać. 2. Konstrukcja SQL. Konstrukcja SQL jest 5. Identyfikatory. Identyfikatory są to słowa, określoną kombinacją słów poprzedzonych których Ty (lub projektant bazy danych) słowem kluczowym. Słowa są niepodzielnymi u ywasz do nazywania obiektów bazy elementami języka SQL — pod względem danych takich jak tabele, kolumny, aliasy, gramatycznym nie mo na rozło yć ich na indeksy oraz perspektywy (widoki). mniejsze części. Do tej grupy nale ą słowa Identyfikatorami nie mogą być słowa kluczowe, identyfikatory, operatory, wzorce kluczowe, a ich długość mo e wynosić Składnia SQL-a oraz inne słowa (opisane w dalszej części maksymalnie 128 znaków. SQL dopuszcza ksią ki). u ywanie w identyfikatorach wszystkich 3. Frazy. Konstrukcja SQL składa się z jednej znaków i symboli zestawu znaków systemu lub kilku fraz. Mówiąc ogólnie, fraza to Windows (włączając znaki zestawu Western fragment konstrukcji SQL rozpoczynający oraz ideogramy), jednak zanim zaczniesz się słowem kluczowym. Frazy mogą być ich u ywać, zapoznaj się ze wskazówkami. wymagane lub opcjonalne i muszą W przedstawionym przykładzie występować w określonej kolejności. identyfikatorami są KOKGACW, PCYKUMQACW, Przedstawiony przykład zawiera cztery CWVQT[ oraz YQL. frazy: 5'.'%6, (41/, 9*'4' i 14&'4 $;. 6. Zakańczający średnik. Ka da konstrukcja SQL kończy się średnikiem. Rysunek 3.1. Konstrukcja SQL zawierająca komentarz 64
  • 8. Podstawy SQL-a Tabela 3.1. Słowa kluczowe języka SQL #$51.76 %4155 )'6 016 52#%' #%6+10 %744'06 ).1$#. 07.. 53. #&& %744'06A&#6' )1 07..+( 53.%1&' #.. %744'06A6+/' )16 07/'4+% 53.'4414 #..1%#6' %744'06A6+/'56#/2 )4#06 1%6'6A.'0)6* 53.56#6' #.6'4 %744'06A75'4 )4172 1( 57$564+0) #0 %74514 *#8+0) 10 57/ #0; #6' *174 10.; 5;56'/A75'4 #4' #; +'06+6; 12'0 6#$.' #5 '#..1%#6' +//'+#6' 126+10 6'/214#4; #5% '% +0 14 6*'0 #55'46+10 '%+/#. +0+%#614 14'4 6+/' #6 '%.#4' +0+6+#..; 176'4 6+/'56#/2 #76*14+#6+10 '(#7.6 +00'4 176276 6+/'10'A*174 #8) '('44#$.' +0276 18'4.#25 6+/'10'A/+076' $')+0 '('44' +05'05+6+8' 2# 61 $'69''0 '.'6' +05'46 2#46+#. 64#+.+0) $+6 '5% +06 215+6+10 64#05#%6+10 $+6A.'0)6* '5%4+$' +06')'4 24'%+5+10 64#05.#6' $16* '5%4+2614 +06'45'%6 24'2#4' 64#05.#6+10 Składnia SQL-a $; +#)0156+%5 +06'48#. 24'5'48' 64+/ %#5%#' +5%100'%6 +061 24+/#4; 647' %#5%#' +56+0%6 +5 24+14 70+10 %#5' 1/#+0 +51.#6+10 24+8+.')'5 70+37' %#56 17$.' ,1+0 241%'74' 70-0190 %#6#.1) 412 -'; 27$.+% 72#6' %*#4 '.5' .#0)7#)' 4'# 722'4 %*#4#%6'4 '0 .#56 4'#. 75#)' %*#4A.'0)6* '0':'% .'#+0) 4'('4'0%'5 75'4 %*#4#%6'4A.'0)6* '5%#2' .'(6 4'.#6+8' 75+0) %*'%- ':%'26 .'8'. 4'564+%6 8#.7' %.15' ':%'26+10 .+-' 4'81-' 8#.7'5 %1#.'5%' ':'% .1%#. 4+)*6 8#4%*#4 %1..#6' ':'%76' .19'4 41..$#%- 8#4;+0) %1..#6+10 ':+565 /#6%* 4195 8+'9 %1.7/0 ':6'40#. /#: 5%*'/# 9*'0 %1//+6 ':64#%6 /+0 5%41.. 9*'0'8'4 %100'%6 (#.5' /+076' 5'%10 9*'4' %100'%6+10 ('6%* /17.' 5'%6+10 9+6* %10564#+06 (+456 /106* 5'.'%6 914- %10564#+065 (.1#6 0#/'5 5'55+10 94+6' %106+07' (14 0#6+10#. 5'55+10A75'4 ;'#4 %108'46 (14'+)0 0#674#. 5'6 10' %144'5210+0) (170 0%*#4 5+' %1706 (41/ 0':6 5/#..+06 %4'#6' (7.. 01 51/' 65
  • 9. Rozdział 3. Tabela 3.2. Potencjalne słowa kluczowe języka SQL #(6'4 '37#.5 1. 4'6740 6'56 #.+#5 )'0'4#. 12'4#6+10 4'67405 6*'4' #5;0% +( 12'4#6145 41.' 64+))'4 $'(14' +)014' 16*'45 4176+0' 6;2' $11.'#0 .'#8' 2#4#/'6'45 419 70'4 $4'#6* .'55 2'0#06 5#8'21+06 8#4+#$.' %1/2.'6+10 .+/+6 24'14'4 5'#4%* 8+467#. %#.. .112 24+8#6' 5'05+6+8' 8+5+$.' %;%.' /1+(; 2416'%6' 5'37'0%' 9#+6 #6# 0'9 4'%745+8' 5+)0#. 9*+.' '26* 010' 4'( 5+/+.#4 9+6*176 +%6+10#4; 1$,'%6 4'('4'0%+0) 53.':%'26+10 '#%* 1(( 4'2.#%' 53.9#40+0) '.5'+( 1+ 4'5+)0#. 5647%674' 66
  • 10. Podstawy SQL-a UGNGEV KOKGACW SQL nie definiuje precyzyjnie formy konstrukcji. 0#9+5-1A#7 Konstrukcje SQL: (41/ CWVQT[ 9J'T' YQL u Mogą być pisane małymi lub du ymi literami / QTFGT (np. 5'.'%6 i UGNGEV oznaczają to samo słowo D; kluczowe). PCYKUM1A#7 u Mogą być kontynuowane w kolejnych Rysunek 3.2. Nie istnieją reguły, według których liniach. Niedopuszczalne jest tylko dzielenie trzeba formatować konstrukcję SQL. Powy sza słów oraz łańcuchów znaków zawartych konstrukcja jest analogiczna do konstrukcji w cudzysłowach. przedstawionej na rysunku 3.1 u Mogą być umieszczone w jednej linii z innymi konstrukcjami. u Mogą rozpoczynać się w dowolnej kolumnie. Pomimo przedstawionej dowolności najlepiej jednak trzymać się konsekwentnie jednego stylu (rysunek 3.2). Ja zazwyczaj piszę słowa kluczowe du ymi literami, a ka dą frazę wpisuję w osobnej linii — szczegóły wykorzystywanego przeze mnie stylu opisałem w podrozdziałach „Konwencje typograficzne” Składnia SQL-a oraz „Konwencje składniowe” zawartych we Wprowadzeniu. Częstymi błędami towarzyszącymi programowaniu w SQL-u są: u Pomyłka w słowie kluczowym lub identyfikatorze. u Pominięcie zakańczającego średnika. u Zmiana kolejności wpisanych fraz. u Nieobjęcie cudzysłowami łańcuchów znaków oraz wyra eń oznaczających czas i datę. u Objęcie cudzysłowami wzorców liczbowych. u Niepoprawne skojarzenie kolumn z tabelami (np. wpisanie 5'.'%6 RTQEGPVAVCPVKGO (41/ CWVQT[ zamiast 5'.'%6 RTQEGPVAVCPVKGO (41/ CWVQT[AV[VWNQY). 67
  • 11. Rozdział 3. Wskazówki Wprowadzające słowo kluczowe konstrukcji Systemy DBMS określają SQL nazywa się często czasownikiem, własne wymagania dotyczące długości poniewa wskazuje ono na wykonywaną identyfikatorów oraz dostępnego dla przez konstrukcję czynność. nich zestawu znaków — szczegółowe informacje mo esz znaleźć Pomimo e słów kluczowych nie mo na w dokumentacjach systemów pod u ywać jako identyfikatorów, to jednak hasłem identyfikatory (ang. identifiers) mo na je w identyfikatorach zawierać. lub nazwy (ang. names). Np. ITQWR czy OCZ nie są prawidłowymi identyfikatorami, ale ITQWRU czy OCZAEGPC Systemy DBMS posiadają tak e dodatkowe są poprawne. słowa kluczowe, których nie mo na u ywać w roli identyfikatorów. Szczegóły W identyfikatorach mo na zawierać spacje, w dokumentacjach systemów pod hasłem nale y wtedy identyfikator objąć apostrofami słowa kluczowe (ang. keywords) lub słowa ( PWOGT VGNGHQPW ). Tworzenie nazw zastrze one (ang. reserved words). obiektów zawierających spacje nie jest jednak zalecane. Do oddzielania wyrazów Microsoft SQL Server, Oracle, MySQL lepiej stosować znaki podkreślenia oraz PostgreSQL akceptują zarówno (PWOGTAVGNGHQPW) lub kombinacje małych komentarze jedno- jak i wieloliniowe i du ych liter (0WOGT6GNGHQPW). zawarte pomiędzy symbolami komentarza
  • 12. i
  • 13. . Szczegóły w dokumentacjach Składnia SQL-a Wyra enie jest dowolną poprawną systemów pod hasłem komentarze kombinacją symboli, która daje w wyniku (ang. comments). MySQL dopuszcza pojedynczą wartość. Mo e zawierać operatory tak e u ywanie jako oznaczenia początku matematyczne i logiczne, identyfikatory, komentarza znaku . stałe, funkcje, nazwy kolumn itp. Tabela 3.3 przedstawia kilka rodzajów popularnych wyra eń oraz ich przykłady. Typ ka dego z wyra eń zostanie szczegółowo omówiony przy okazji opisywania typów danych. Tabela 3.3. Typy wyra eń Wyrażenie Przykład Przypadek (%CUG) %#5' 9*'0 P 6*'0 ZP '.5' '0 Rzutowanie (%CUV) %#56 FCVCAY[F #5 %*#4#%6'4 Czas i data (CVGVKOG) ECUARQECVMW Okres (+PVGTXCN) +06'48#. #;
  • 14. Liczbowe (0WOGTKE) URTGFCP[EJ
  • 15. EGPC Łańcuch znaków (5VTKPI) 5CPQYP[ 2CPKG ^^ PCYKUMQACW ^^ 68
  • 16. Podstawy SQL-a Tabela 3.4. Kategorie typów danych Typy danych Typ danych Przechowywany rodzaj danych W podrozdziale „Tabele, kolumny i wiersze” Łańcuch znaków Ciągi znaków w rozdziale 2. stwierdzono, e dziedzina Łańcuch bitowy Ciągi bitów kolumny ogranicza wartości, które mogą być Liczba dokładna Liczby całkowite i dziesiętne w danej kolumnie przechowywane. Praktyczną Liczba przybli ona Liczby zmiennoprzecinkowe realizacją dziedzin są typy danych. Poni ej Data i czas Wartości czasu i daty przedstawiono ich cechy. Okres Okresy czasu u Ka da kolumna w tabeli ma określony pojedynczy typ danych. u Typ danych mieści się w jednej z kategorii Wskazówki przedstawionych w tabeli 3.4 (a opisanych w następnych sześciu podrozdziałach). Do określania i zmiany typu danych kolumny oraz dotyczących jej ograniczeń u Typ danych określa wartości, jakie dana słu ą konstrukcje %4'#6' 6#$.' oraz #.6'4 kolumna akceptuje, oraz operacje, jakie 6#$.' — patrz rozdział 10. mo na na niej wykonać. Np. całkowity typ danych (KPVGIGT) reprezentuje ka dą liczbę Projektanci baz danych przywiązują bardzo całkowitą mieszczącą się w granicach du ą wagę do określania typów danych dla określonych przez system DBMS i pozwala kolumn. Konsekwencją złego wyboru mo e na wykonywanie zwykłych operacji być sytuacja, w której niemo liwe będzie Typy danych arytmetycznych, m.in.: dodawania, wpisanie do kolumny określonych wartości, odejmowania, mno enia i dzielenia. Ale typ a zmiana typu danych kolumny pociągnie całkowity nie mo e reprezentować wartości za sobą utratę danych ju istniejących nieliczbowych, np. UJCFGPHTGWFG oraz w kolumnie. nie umo liwia przeprowadzania operacji Wiele szczegółów dotyczących znakowych (np. zamiana liter małych na du e). typów danych ustalają producenci systemów u Typ danych narzuca sposób sortowania DBMS. Stąd typy danych SQL-a nie są kolumny. Liczby całkowite 1, 2 i 10 są wiernie odwzorowane w konkretnych sortowane arytmetycznie: , , . Łańcuchy systemach DBMS, nawet, jeśli nazywają się znaków , i będą natomiast identycznie. Nazwy analogicznych lub posortowane słownikowo i dadzą w wyniku zbli onych do teoretycznych typów danych kolejność: , , . Sortowanie systemów DBMS przedstawiono we słownikowe polega na kolejnym wskazówkach w następnych podrozdziałach. porównywaniu pojedynczych znaków. Stąd Systemy DBMS często mają rozszerzony jest przed — znak w porządku zestaw typów danych pozwalający słownikowym występuje przed znakiem . przechowywać specyficzne wartości np. logiczne czy walutowe. Szczegóły u Wartości wzorców przechowywane są dotyczące standardowych i rozszerzonych w kolumnach. Wzorzec jest stałą, a nie typów danych znajdziesz w dokumentacjach wynikiem wyliczenia wartości wyra enia systemów DBMS pod hasłem typy danych liczbowego. Przykładami wzorców (ang. data types). Informacje na temat liczbowych są i , wzorcami sposobu sortowania znajdują się znakowymi są np. i KGNQP[ , w podrozdziale „Sortowanie wierszy natomiast #6' i 6+/' za pomocą frazy ORDER BY” w rozdziale 4. to wzorce daty i czasu. 69
  • 17. Rozdział 3. Typy łańcuchów znaków Łańcuchy znaków u ywane są do reprezentowania tekstu. Łańcuch znaków — lub po prostu łańcuch — posiada następujące cechy: u Jest uporządkowanym ciągiem zawierającym (lub nie) pewną ilość znaków. u Jego długość mo e być stała lub zmienna. u Rozró nia wielkość liter (w czasie sortowania litera # umieszczana jest przed C ). u W konstrukcjach SQL wzorce łańcuchowe objęte są apostrofami. u Jest jednym z typów przedstawionych w tabeli 3.5. Tabela 3.5. Typy łańcuchów znaków Typy łańcuchów znaków Typ Opis %*#4#%6'4 Reprezentuje stałą liczbę znaków. Łańcuch przechowywany w kolumnie zdefiniowanej (znakowy) jako %*#4#%6'4 FNWIQUE mo e zawierać maksymalnie FNWIQUE znaków, gdzie FNWIQUE jest liczbą całkowitą większą lub równą 1. Maksymalna długość zale y od systemu DBMS. Jeśli w kolumnie typu %*#4#%6'4 FNWIQUE umieszczony jest łańcuch o długości mniejszej od FNWIQUE, system DBMS wypełni brakujące miejsca spacjami tak, eby powstał łańcuch o długości równej dokładnie FNWIQUE. Np. łańcuch ,CEGM w kolumnie typu %*#4#%6'4 przechowywany jest jako ,CEGM . Typy %*#4#%6'4 oraz %*#4 są równowa ne. %*#4#%6'4 8#4;+0) Reprezentuje zmienną liczbę znaków. Łańcuch przechowywany w kolumnie zdefiniowanej (znakowy o zmiennej jako %*#4#%6'4 8#4;+0) FNWIQUE mo e zawierać maksymalnie FNWIQUE znaków, gdzie długości) FNWIQUE jest liczbą całkowitą większą lub równą 1. Maksymalna długość zale y od systemu DBMS. W przeciwieństwie do typu %*#4#%6'4, jeśli umieścimy w kolumn ie zdefiniowanej jako %*#4#%6'4 8#4;+0) FNWIQUE łańcuch o długości mniejszej ni FNWIQUE, system DBMS przechowa go w pierwotnej postaci nie wypełniając brakujących miejsc spacjami. Np. łańcuch ,CEGM w kolumnie typu %*#4#%6'4 8#4;+0) przechowywany jest jako ,CEGM . Typy %*#4#%6'4 8#4;+0), %*#4 8#4;+0) oraz 8#4%*#4 są równowa ne. 0#6+10#. Ten typ danych odpowiada typowi %*#4#%6'4, z tym e jest on w stanie przechowywać %*#4#%6'4 ustandaryzowane znaki wielobajtowe czy unikodowe (patrz ramka). W konstrukcjach SQL (znakowy narodowy) łańcuchy typu 0#6+10#. %*#4#%6'4 zapisuje się tak samo jak łańcuchy typu %*#4#%6'4, umieszczając jedynie przed pierwszym apostrofem literę 0, np. 0 ¼ . Typy 0#6+10#. %*#4#%6'4, 0#6+10#. %*#4 oraz 0%*#4 są równowa ne. 0#6+10#. Ten typ danych odpowiada typowi %*#4#%6'4 8#4;+0) z tym, e mo e on przechowywać %*#4#%6'4 8#4;+0) ustandaryzowane znaki wielobajtowe czy unikodowe (patrz typ 0#6+10#. %*#4#%6'4). (znakowy narodowy Typy 0#6+10#. %*#4#%6'4 8#4;+0), 0#6+10#. %*#4 8#4;+0) oraz 0%*#4 8#4;+0) są o zmiennej długości) równowa ne. 70
  • 18. Podstawy SQL-a Wskazówki Je eli chcesz w łańcuchu wpisać znak apostrofu, musisz wpisać go dwukrotnie. Unikod Np. łańcuchem odpowiadającym angielskiemu słowu it's jest KV U . Znak Komputery przechowują znaki (litery, cyfry, znaki interpunkcyjne, znaki cudzysłowu ( ) jest oddzielnym znakiem kontrolne oraz inne symbole) w swojej i nie wymaga specjalnego traktowania. pamięci, przypisując im wartości Długością łańcucha jest liczba całkowita liczbowe. Sposób zamiany znaków większa lub równa 0 i mniejsza lub równa na liczby określa kodowanie. Ró ne NGPIVJ. Łańcuch niezawierający adnych języki i ró ne systemy operacyjne stosują wiele specyficznych sposobów znaków — (dwa apostrofy bez spacji kodowania. Standardowe łańcuchy między nimi) — nazywany jest łańcuchem w języku angielskim wykorzystują pustym lub łańcuchem o zerowej długości. kodowanie ASCII, które umo liwia Łańcuch pusty traktowany jest jako 8#4%*#4 przypisanie liczbom 256 (28) znaków. o długości 0. Jest to niewiele — za mało, eby przechować wszystkie litery u ywane Systemy DBMS szybciej ni łańcuchy w nowo ytnych językach europejskich o zmiennej długości sortują i przetwarzają Typy łańcuchów znaków i stanowczo za mało, eby przechować łańcuchy o stałej długości. chińskie ideogramy. W Microsoft Accessie łańcuchowymi Unikod jest zestawem pojedynczych znaków reprezentującym znaki prawie typami danych są VGMUV oraz PQVC. wszystkich języków pisanych W Microsoft SQL Serverze są nimi EJCT, występujących na świecie. Jest on XCTEJCT, VGZV, PEJCT, PXCTEJCT oraz PVGZV. w stanie zakodować 65536 (216) Oracle oferuje typy: EJCT, XCTEJCT, znaków. Standard unikodu ogłosiła XCTEJCT, PEJCT, PXCTEJCT oraz PXCTEJCT. i zarządza nim instytucja o nazwie W MySQL-u są to: EJCT, XCTEJCT, PEJCT, Unicode Consortium. Aktualna PXCTEJCT, VGZV, VKP[VGZV, OGFKWOVGZV specyfikacja unikodu jest zawsze i NQPIVGZV, a w PostgreSQL-u EJCT, XCTEJCT dostępna w najnowszym wydaniu i VGZV. (internetowym lub drukowanym) standardu (The Unicode Standard) Oracle puste łańcuchy traktuje jako wartości pod adresem www.unicode.org. null — patrz podrozdział „Wartości null”. 71
  • 19. Rozdział 3. Typy łańcuchów bitowych Łańcuch bitowy reprezentuje liczbę binarną Uwaga dla doświadczonych i posiada następujące cechy: programistów: oprócz u ywania postaci binarnej (o podstawie 2) mo na tak e u Jest uporządkowanym ciągiem zawierającym stosować dla łańcuchów znaków zapis pewną liczbę bitów (lub niezawierającą szesnastkowy (ang. hex lub hexadecimal) adnego). — o podstawie 16. System szesnastkowy u Ka dy bit ma wartość 0 lub 1. wykorzystuje cyfry od 0 do 9 oraz litery (du e lub małe) od A do F. Jeden znak u Zazwyczaj jest wykorzystywany do szesnastkowy odpowiada czterem bitom. przechowywania danych binarnych, takich W konstrukcjach SQL łańcuchy bitowe jak pliki programów, cyfrowe dźwięki czy w zapisie szesnastkowym zawierają obrazy. Długi łańcuch bitowy nazywany jest przed pierwszym apostrofem literę :. często BLOB (ang. binary large object). Np. łańcuch szesnastkowy : $ jest u W konstrukcjach SQL łańcuch znaków objęty odpowiednikiem łańcucha binarnego jest apostrofami. $ . u Jest jednym z typów przedstawionych W Microsoft Accessie binarnymi Typy łańcuchów bitowych w tabeli 3.6. typami danych są VCMPKG oraz QDKGMV 1.'. W Microsoft SQL Serverze Wskazówki występują DKPCT[, XCTDKPCT[ i KOCIG. Oracle oferuje typy: TCY, NQPI, TCY, DNQD Systemy DBMS nie próbują interpretować oraz DHKNG. W MySQL-u istnieją DNQD, łańcuchów bitowych, ich znaczenie jest VKP[DNQD, OGFKWODNQD i NQPIDNQD, wa ne z punktu widzenia wykorzystujących a w PostgreSQL-u DKV i XCTDKV. je aplikacji. Tabela 3.6. Typy łańcuchów bitowych Typ Opis $+6 Reprezentuje stałą liczbę bitów. Łańcuch bitowy przechowywany w kolumn ie zdefiniowanej jako (bitowy) $+6 FNWIQUE mo e zawierać maksymalnie FNWIQUE bitów, gdzie FNWIQUE jest liczbą całkowitą większą lub równą 1. Maksymalna długość zale y od systemu DBMS. W odró nieniu od łańcuchów znakowych typu %*#4#%6'4, próba umieszczenia w kolumn ie $+6 FNWIQUE łańcucha bitowego o długości mniejszej ni FNWIQUE spowoduje wystąpienie błędu. W konstrukcjach SQL łańcuchy bitowe zapisywane są podobnie, jak łańcuchy znakowe, jedynie przed pierwszym apostrofem umieszczona jest litera $. Np. łańcuchem typu $+6 jest $ . $+6 8#4;+0) Reprezentuje zmienną liczbę bitów. Łańcuch bitowy przechowywany w kolumnie zdefiniowanej (bitowy jako $+6 8#4;+0) FNWIQUE mo e zawierać maksymalnie FNWIQUE bitów, gdzie FNWIQUE jest o zmiennej liczbą całkowitą większą lub równą 1. Maksymalna długość zale y od systemu DBMS. Podobnie długości) jak w przypadku łańcuchów znakowych typu %*#4 8#4;+0), jeśli umieścimy w kolumnie zdefin iowanej jako $+6 8#4;+0) FNWIQUE łańcuch o długości mniejszej ni FNWIQUE, system DBMS przechowa go w pierwotnej postaci nie wypełniając brakujących miejsc spacjami. Np. łańcuch $ typu $+6 8#4;+0) przechowywany jest jako $ . 72
  • 20. Podstawy SQL-a Typy liczb dokładnych Typy liczb dokładnych reprezentują dokładne wartości liczbowe. Dokładna wartość liczbowa posiada następujące cechy: u Mo e być ujemna, dodatnia lub równa zero. u Jest liczbą całkowitą lub dziesiętną. Liczby całkowite nie zawierają przecinka dziesiętnego (kropki w zapisie komputerowym), np. –39, 0, 62262. Liczby dziesiętne zawierają tak e cyfry po prawej stronie przecinka np. –22.06, 0.0, 0.0003, 12.34. u Posiada stałą rozdzielczość i dokładność. Rozdzielczością określa się liczbę cyfr znaczących wykorzystywanych do przedstawiania liczby — liczba ta obejmuje zarówno cyfry z prawej, jak i z lewej strony Typy liczb dokładnych przecinka dziesiętnego. Dokładność jest to liczba cyfr po przecinku dziesiętnym. Dokładność oczywiście nie mo e przekroczyć rozdzielczości. Ustalenie dokładności na poziomie zero powoduje przedstawienie liczby w postaci całkowitej. We wskazówkach zawarto kilka przykładów. u Nale y do jednego z typów przedstawionych w tabeli 3.7. Tabela 3.7. Typy liczb dokładnych Typ Opis 07/'4+% Reprezentuje liczbę dziesiętną. Liczby dziesiętne są przechowywane w kolumnach zdefiniowanych (liczbowa) jako 07/'4+% TQFKGNEQUE= FQMNCFPQUE?. TQFKGNEQUE jest liczbą większą lub równą 1 — maksymalna wielkość zale y od systemu DBMS. FQMNCFPQUE jest liczbą z przedziału od 0 do TQFKGNEQUE. Jeśli FQMNCFPQUE nie jest jawnie określona, domyślnie przyjmowana jest jako 0 (co powoduje, e w rzeczywistości typ staje się całkowity). '%+/#. Ten typ danych jest analogiczny do typu 07/'4+%, niektóre systemy DBMS traktują je (dziesiętna) równowa nie. Ró nica jest taka, e system DBMS mo e określić TQFKGNEQUE liczby jako większą ni ustalono to w definicji '%+/#. TQFKGNEQUE= FQMNCFPQUE? — TQFKGNEQUE jest min imalnym, a nie rzeczywistym rozmiarem przedstawianej liczby, tak jak było to w przypadku typu 07/'4+%. Słowa '% i '%+/#. są synonimami. +06')'4 Reprezentuje liczbę całkowitą. Minimalna i maksymalna wartość liczby, jaka mo e być (całkowita) przechowywana w kolumnie zdefiniowanej jako +06')'4, zale y od systemu DBMS. Defin icja typu +06')'4 nie wymaga określania argumentów. Słowa +06')'4 oraz +06 są synonimami. 5/#..+06 Ten typ jest takim samym typem jak +06')'4, posiada tylko wę szy zakres dopuszczalnych (całkowita krótka) wartości — zale ny od systemu DBMS. Definicja tego typu nie wymaga określania argumentów. 73
  • 21. Rozdział 3. Wskazówki Tabela 3.8. Przykłady rozdzielczości i dokładności dla liczby 123.89 Tabela 3.8 przedstawia sposób, w jaki liczba Definicja typu Przechowywana wartość 123.89 jest przechowywana dla ró nych wartości rozdzielczości i dokładności. 07/'4+% 07/'4+% Wartości liczbowych nie umieszcza się 07/'4+% w cudzysłowach. 07/'4+% Jeśli liczby nie są stosowane do adnych 07/'4+% obliczeń (np. numery telefonów czy 07/'4+% kody pocztowe), lepiej przechowywać 07/'4+% Poza zakresem rozdzielczości je jako łańcuchy znaków. Zapobiegnie 07/'4+% Poza zakresem rozdzielczości to ewentualnej utracie informacji — na przykład przechowanie kodu jako liczby całkowitej spowoduje utratę początkowych zer. Obliczenia wykonywane tylko na liczbach całkowitych są znacznie szybsze od obliczeń, których argumentami są liczby Typy liczb dokładnych dziesiętne lub zmiennoprzecinkowe. Typami liczb dokładnych w Microsoft Accessie są FKGUKúVPG, NKEDC EC MQYKVC, DCLV oraz NKEDC EC MQYKVC F WIC. Microsoft SQL Server oferuje typy: PWOGTKE, FGEKOCN, KPVGIGT, UOCNNKPV, DKIKPV oraz VKP[KPV. W Oracle’u wystepują: PWOGTKE, FGEKOCN, KPVGIGT, UOCNNKPV oraz PWODGT. MySQL oferuje typy PWOGTKE, FGEKOCN, KPVGIGT, UOCNNKPV, DKIKPV, OGFKWOKPV i VKP[KPV, natomiast PostgreSQL PWOGTKE, FGEKOCN, KPVGIGT, UOCNNKPV oraz DKIKPV. 74
  • 22. Podstawy SQL-a Typy liczb przybliżonych Typy liczb przybli onych słu ą do u Posiada stałą rozdzielczość, ale nie posiada reprezentowania przybli onych wartości dokładności w ścisłym sensie tego słowa liczbowych. Przybli ona wartość liczbowa (określają ją znak oraz wartość eksponenta). posiada następujące cechy: Rozdzielczość jest liczbą bitów wykorzystywanych do zapisu mantysy. u Mo e być liczbą ujemną, dodatnią Aby przekształcić rozdzielczość bitową na lub równą zero. dziesiętną, nale y ją pomno yć przez liczbę u Jest traktowana jako przybli enie liczby 0.30103. Przekształcenie rozdzielczości zmiennoprzecinkowej (rzeczywistej). dziesiętnej na bitową mo na uzyskać, mno ąc ją przez liczbę 3.32193. Na przykład u Zazwyczaj wykorzystywana jest do 24 bity oznaczają rozdzielczość 7-cyfrową, reprezentowania liczb bardzo du ych a 53 bity to rozdzielczość 15-cyfrowa. lub bardzo małych oraz do obliczeń naukowych. u Nale y do jednego z typów wymienionych w tabeli 3.9. u Wyra ana jest w postaci naukowej. Wartość w notacji naukowej zapisuje się Wskazówki jako liczbę dziesiętną mno oną przez Typy liczb przybliżonych całkowitą potęgę liczby 10. Du a litera ' Wartości liczbowych nie umieszcza się jest symbolem eksponenta np. 2.5E2 = w cudzysłowie. 2.5∗102 = 250. Mantysą w takim zapisie Typami liczb przybli onych są cyfry znaczące (w podanym przykładzie w Microsoft Accessie są RQLGF[PEC RTGE[LC 2.5), natomiast eksponentem jest i RQFYÎLPC RTGE[LC. W Microsoft SQL wykładnik potęgi liczby 10 (w podanym Serverze występują typy HNQCV i TGCN. Oracle przykładzie 2). Zarówno mantysa, jak oferuje typy HNQCV, TGCN, FQWDNG RTGEKUKQP i eksponent, mogą mieć określony znak: oraz PWODGT. W MySQL-u istnieją typy HNQCV, –2.5E–2 = –2.5∗10–2 = –0.025. TGCN i FQWDNG, natomiast w PostgreSQL-u TGCN i FQWDNG RTGEKUKQP. Tabela 3.9. Typy liczb przybli onych Typ Opis (.1#6 Reprezentuje liczbę zmiennoprzecinkową. Liczba zmiennoprzecinkowa przechowywana (zmiennoprzecinkowa) w kolumnie zdefiniowanej jako (.1#6 TQFKGNEQUE posiada określoną w definicji rozdzielczość — liczbę większą lub równą 1 wyra ającą ilość bitów, a nie cyfr. Maksymalna rozdzielczość zale y od systemu DBMS. 4'#. Ten typ jest analogiczny do typu (.1#6, z tym e rozdzielczość ustala system DBMS. (rzeczywista) Liczby typu 4'#. często nazywa się liczbami pojedynczej precyzji. Definicja typu 4'#. nie wymaga określania argumentów. 17$.' 24'%+5+10 Jest to taki sam typ, jak (.1#6. Ró nica jest tylko taka, e rozdzielczość typu 17$.' (podwójnej precyzji) 24'%+5+10 ustalana przez system DBMS jest większa od rozdzielczości typu 4'#.. Definicja typu 17$.' 24'%+5+10 nie wymaga określania argumentów. 75
  • 23. Rozdział 3. Typy daty i czasu Typy daty i czasu, jak sama nazwa u Reguły rządzące kalendarzem gregoriańskim wskazuje, słu ą do reprezentowania dat określają w naturalny sposób format zapisu i czasu. Wartości tych typów posiadają dat. Systemy DBMS odrzucają wartości, następujące cechy: których nie mogą zinterpretować jako daty. u Są określane względem czasu UTC u Wartości czasowe oparte są na 24-godzinnym (ang. Universal Coordinated Time) formacie czasu (np. 13:00 zamiast 1:00 zwanego oficjalnie czasem uniwersalnym po południu). Greenwich (ang. GMT — Greenwich u Łączniki () oddzielają kolejne części dat, Mean Time). Standard SQL-92 wymaga, natomiast dwukropki () oddzielają kolejne aby ka da sesja SQL posiadała domyślne części wartości czasowych. Jeśli jedna wartość przesunięcie czasowe względem czasu zawiera jednocześnie datę i czas, to są one UTC, które jest wykorzystywane oddzielone spacją. w trakcie trwania sesji. Na przykład przesunięciem dla strefy czasowej u Nale ą do jednego z typów przedstawionych San Francisco w Kalifornii jest –8. w tabeli 3.10. Tabela 3.10. Typy daty i czasu Typ Opis Typy daty i czasu #6' Reprezentuje datę. Data przechowywana w kolumnie zdefin iowanej jako #6' zawiera trzy (data) liczby całkowite: rok (;'#4), miesiąc (/106*) i dzień (#;) sformatowane według schematu rrrr-mm-dd (długość 10), np. . Tabela 3.11 przedstawia poprawne wartości dla pól tego typu. Definicja typu #6' nie wymaga określania argumentów. 6+/' Reprezentuje czas dnia. Czas przechowywany w kolumnie zdefiniowanej jako 6+/' zawiera (czas) trzy pola: godzinę (*174), minuty (/+076') oraz sekundy (5'%10) sformatowane według szablonu gg:mm:ss (długość 8), np. . Opcjonalnie mo na zdefiniować kolumnę jako 6+/' TQFKGNEQUE, gdzie TQFKGNEQUE będzie liczbą większą lub równą zero oznaczającą liczbę cyfr określających części sekundy. Maksymalna TQFKGNEQUE zale y od systemu DBMS, natomiast mini malna wynosi 6. Wartości *174 oraz /+076' są liczbami całkowitymi, a 5'%10 jest liczbą dziesiętną. Szablonem wartości czasu zawierającym ułamkowe części sekund jest gg:mm:ss.ssss…(długość 9 + liczba cyfr ułamkowych), np. . Tabela 3.11 przedstawia poprawne wartości pól tego typu. 6+/'56#/2 Reprezentuje kombinację wartości #6' i 6+/' oddzielonych spacją. Formatem wartości (stempel czasowy) tego typu jest rrrr-mm-dd gg:mm:ss (długość 19), np. . Mo na tak e określić za pomocą definicji 6+/'56#/2 TQFKGNEQUE ułamkowe części sekund — format zapisu wygląda wtedy następująco: rrrr-mm-dd gg:mm:ss.ssss… (długość 20 + liczba cyfr ułamkowych). 6+/' 9+6* 6+/' 10' Ten typ jest typem analogicznym do typu #6#, z tym e zawiera dodatkowe pole (czas ze strefą czasową) — 6+/'A10'A1((5'6 (przesunięcie strefy czasowej) — określające przesunięcie w godzinach względem czasu UTC. Wartość 6+/'A10'A1((5'6 sformatowana jest jako +06'48#. *174 61 /+076' (patrz następny podrozdział) i mo e zawierać wartości przedstawione w tabeli 3.11. Uwzględnienie strefy czasowej osiąga się poprzez dodanie do wartości typu 6+/' zwrotu: #6 6+/' 10' VKOGAQPGAQHHUGV, np. #6 6+/' 10' . Drugą mo liwością jest dodanie zwrotu #6 .1%#., co wskazuje, e strefa czasowa powinna być domyślna dla całej sesji, np. #6 .1%#.. Jeśli fraza #6 nie jest jawnie określona, wszystkie wartości czasu są domyślnie przyjmowane jako #6 .1%#.. 6+/'56#/2 9+6* Ten typ odpowiada typowi 6+/'56#/2, zawiera tylko dodatkowe pole 6+/'A10'A1((5'6 6+/' 10' określające przesunięcie w godzinach względem czasu UTC. Zasady składniowe wyra eń tego (stempel czasowy typu są analogiczne, co w przypadku typu 6+/' 9+6* 6+/' 10', trzeba jedynie na początku ze strefą czasową) umieścić datę np. #6 6+/' 10' . 76
  • 24. Podstawy SQL-a Tabela 3.11. Pola typu daty i czasu Wskazówki Pole Poprawna wartość Opis pobierania czasu systemowego ;'#4 od do znajdziesz w podrozdziale „Pobieranie /106* od do bie ącej daty i czasu” w rozdziale 5. #; od do Wartości daty i czasu mo na porównywać, *174 od do jeśli zawierają te same pola (patrz /+076' od do „Filtrowanie wierszy za pomocą frazy 5'%10 od do WHERE” w rozdziale 4. oraz „Obliczenia (patrz wskazówki) operujące na wartościach daty i czasu”). 6+/'A10'A1((5'6 od do Pole 5'%10 mo e zawierać wartości mniejsze lub równe 61.999… (zamiast 59.999…), co pozwala na uwzględnianie w określonej minucie „sekund przestępnych” w celu zachowania zgodności zegara zdefiniowanego przez człowieka z naturalnym zegarem Ziemi. Wzorce daty i czasu wpisuje się, Typem daty i czasu w Microsoft rozpoczynając od słowa oznaczającego typ, Accessie jest FCVCIQFKPC. Microsoft potem następuje spacja i wartość daty Typy daty i czasu SQL Server oferuje typy FCVGVKOG oraz lub czasu umieszczona w apostrofach, UOCNNFCVGVKOG. W Oracle’u są to FCVG czyli #6' TTTTOOFF , 6+/' IIOOUU i VKOGUVCOR. MySQL oferuje typy FCVG, lub 6+/'56#/2 TTTTOOFF IIOOUU . VKOG, FCVGVKOG i VKOGUVCOR, natomiast Standard SQL-92 nie przewiduje mo liwości PostgreSQL FCVG, VKOG i VKOGUVCOR. przechowywania dat p.n.e. – przed naszą Systemy DBMS pozwalają na wpisywanie erą czy przed Chrystusem (p. Ch), ale Twój wartości dat w formatach miesiąc-dzień- system DBMS mo e taką mo liwość rok, dzień-miesiąc-rok oraz w innych, oferować. a wartości czasu w postaci A.M./P.M.. Stemple czasowe są w praktyce często Format, w jakim wartości dat i czasu są wykorzystywane do konstruowania wyświetlane mo e ró nić się od tego, unikalnych kluczy lub zaznaczania w jakim zostały wprowadzone. zdarzeń związanych z wierszem, W Microsoft Accessie wzorców dat i czasu w którym występują. nie umieszcza się w apostrofach, lecz Typ danych 6+/' 9+6* 6+/' 10' właściwie pomiędzy znakami oraz nie wpisuje się nie ma sensu, gdy w rzeczywistości strefy nazwy typu. czasowe nie są jednoznaczne bez określonej W 4Microsoft SQL Serverze tak e nie daty (przesunięcie czasowe zmienia się wpisuje się typu danych przed wzorcami w ciągu roku). Lepiej jest stosować typ dat i czasu. 6+/'56#/2 9+6* 6+/' 10'. 77
  • 25. Rozdział 3. Typy interwałowe (okresowe) Zgodność systemów DBMS ze standardem SQL-92 w zakresie typów okresowych jest niewielka, stąd niniejszy rozdział nale y traktować jako w du ej mierze teoretyczny. Systemy DBMS posiadają własne rozszerzone typy danych oraz funkcje słu ące do obliczania okresów i wykonywania obliczeń na wartościach daty i czasu. Typy okresowe reprezentują okresy pomiędzy określonymi datami lub godzinami. Wartość okresowa posiada następujące cechy: u Przechowuje okres czasu, jaki upływa pomiędzy dwoma wartościami daty lub czasu. Np. pomiędzy godzinami 09:00 a 13:30 okres wynosi 04:30. Okres powstaje po odjęciu od siebie dwóch wartości typu daty lub czasu. Typy interwałowe (okresowe) u Mo e być dodawana lub odejmowana od wartości daty lub czasu — patrz „Obliczenia operujące na wartościach daty i czasu” w rozdziale 5. u Zawiera takie same pola, jak wartości daty i czasu (;'#4, *174, 5'%10 itd.), ale mo e być poprzedzona znakiem (w przód) lub (w tył) w celu określenia kierunku upływu czasu. Znaki oddzielające kolejne pola są takie same, jak dla wartości daty i czasu. u Występuje w dwóch postaciach: jako okres rok- miesiąc lub jako dzień-czas. Okres pierwszego typu wyra ony jest liczbą lat i całkowitą liczbą miesięcy, natomiast okres typu dzień-czas wyra a liczbę dni, godzin, minut i sekund. u Mo e posiadać kwalifikator jedno- lub kilkupolowy. Kwalifikator jednopolowy określany jest po prostu jako ;'#4, /106*, #;, *174, /+076' lub 5'%10. Natomiast kwalifikator wielopolowy zapisuje się w następującej postaci: RQNGARQECVMQYG 61 RQNGAMQPEQYG u RQNGARQECVMQYG mo e być polem ;'#4, #;, *174 lub /+076', a RQNGAMQPEQYG jednym z pól: ;'#4, /106*, #;, *174, /+076' lub 5'%10. RQNGAMQPEQYG musi oznaczać mniejszą jednostkę czasu, ni RQNGARQECVMQYG. 78
  • 26. Podstawy SQL-a Tabela 3.12. Typy okresowe Kolumna jednopolowa zdefiniowana jako Typ Opis +06'48#. *174 mo e przechowywać okresy typu „4 godziny” czy „25 godzin”. Kolumna Year-month Takie okresy zawierają tylko ilość lat, ilość miesięcy lub obie z nich. Poprawnymi wielopolowa zdefiniowana jako +06'48#. (rok-miesiąc) kolumnami są: +06'48#. ;'#4, +06'48#. #; 61 /+076' jest zdolna do przechowywania ;'#4 TQFKGNEQUE, +06'48#. /106*, wartości typu „2 dni, 5 godzin i 10 minut”. +06'48#. /106* TQFKGNEQUE, +06'48#. ;'#4 61 /106*, +06'48#. u Kolumna jednopolowa mo e posiadać ;'#4 TQFKGNEQUE 61 /106*. rozdzielczość określającą długość (liczbę Day-time Okresy tego typu mogą zawierać ilość dni, pozycji) pola, np. +06'48#. *174 . Jeśli (dzień-czas) godzin, minut, sekund lub ró ne ich rozdzielczość nie jest jawnie określona, kombinacje. Przykładami poprawnych przyjmowana jest domyślnie jako 2. typów kolumn są: +06'48#. /+076', +06'48#. #; TQFKGNEQUE, Pole typu 5'%10 mo e mieć dodatkowo +06'48#. #; 61 *174, +06'48#. określoną rozdzielczość ułamkową, czyli #; TQFKGNEQUE 61 5'%10, liczbę cyfr po przecinku dziesiętnym — np. +06'48#. /+076' TQFKGNEQUE INTERVAL SECOND(5, 2). Jeśli nie jest 61 5'%10 TQFKGNEQUEAWNCOMQYC. ona jawnie określona, przyjmowana jest domyślnie jako 6. Typy interwałowe (okresowe) Kolumna wielopolowa mo e mieć określoną rozdzielczość dla pola RQNGARQECVMQYG, ale nie dla RQNGAMQPEQYG (chyba, e RQNGA MQ EQYG jest typu 5'%10, wtedy mo na określić rozdzielczość ułamkową), np. +06'48#. #; 61 /+076' lub +06'48#. /+076' 61 5'%10 . u Nale y do jednego z typów przedstawionych w tabeli 3.12. Wskazówki Aby wprowadzić wzorzec okresu, nale y wpisać słowo +06'48#., następnie spację, a potem wartość okresu umieszczoną w apostrofach, np. +06'48#. dla wartości 15 lat i 3 miesięcy lub +06'48#. dla określenia okresu 22 godzin, 6 minut i 5,5 sekundy temu. Microsoft Access i Microsoft SQL Server oraz MySQL nie akceptują okresowych typów danych. Oracle i PostgreSQL oferują typ KPVGTXCN. 79
  • 27. Rozdział 3. Wartości null Kiedy zestaw Twoich danych nie jest kompletny, u Chocia wartości null nigdy nie są sobie jako oznaczenia brakującej czy nieznanej równe, to jednak słowo kluczowe +56+0%6 wartości mo esz u yć wartości pustej — null. traktuje wszystkie wartości null znajdujące Wartość null posiada następujące cechy: się w danej kolumnie jako duplikaty — patrz „Eliminowanie powtarzających u W konstrukcjach SQL wartość null jest się wierszy za pomocą słowa kluczowego reprezentowana przez słowo kluczowe 07... DISTINCT” w rozdziale 4. u Wartość określana jest jako null, jeśli nigdy u W czasie sortowania kolumny nie będzie ona znana, jeśli istnieje mo liwość, zawierającej wartości null mogą one e będzie określona później lub jeśli jest być większe lub mniejsze od wszystkich nieodpowiednia (wartość null mo na sobie innych wartości występujących wyobrazić raczej jako zaznaczenie wolnego w kolumnie — zale y to od systemu miejsca ni jako rzeczywistą wartość). DBMS. Patrz „Sortowanie wierszy za u Wartość null to nie to samo co zero, łańcuch pomocą frazy ORDER BY” w rozdziale 4. zawierający tylko puste miejsca czy łańcuch u Wartości null „propagują się” poprzez pusty ( ). Wartość null w kolumnie EGPC obliczenia. Wynik ka dego wyra enia nie oznacza, e dana pozycja nie ma ceny zawierającego wartość null wynosi null: lub e cena wynosi zero — oznacza to,
  • 28. 07.. 07... Patrz rozdział 5. e cena jest nieznana lub nie została Wartości null jeszcze ustalona (wyjątkiem jest Oracle, u Funkcje agregujące, takie jak 57/ , #8) który akceptuje puste łańcuchy — patrz czy /#: ignorują w trakcie obliczeń wskazówka DBMS). wartości null. Patrz rozdział 6. u Wartości null nie nale ą do adnego u Podczas grupowania za pomocą frazy typu danych i mogą być umieszczane )4172 $; kolumn zawierających wartości we wszystkich kolumnach z wyjątkiem tych null, są one wszystkie umieszczane zdefiniowanych jako 016 07.. — patrz w jednej grupie — patrz „Grupowanie „Nie akceptowanie w kolumnach wartości wierszy za pomocą frazy GROUP BY” null za pomocą wyra enia NOT NULL” w rozdziale 6. w rozdziale 10. u Wartości null mają wpływ na wynik u Wartości null mogą być wykrywane złączeń — patrz „Złączenia” w rozdziale 7. za pomocą wyra enia +5 07.. — patrz u Wartości null mogą sprawiać kłopoty „Sprawdzanie występowania wartości null w przypadku podzapytań — patrz za pomocą słowa kluczowego IS NULL” „Wartości null w podzapytaniach” w rozdziale 4. w rozdziale 8. u Wartości null nie są równe adnym innym. Nie mo na określić czy wartość null jest równa jakiejś innej wartości, nawet innej wartości null. Taka sytuacja jest punktem wyjścia do logiki trójwartościowej — patrz „Łączenie i negacja warunków za pomocą operatorów AND, OR i NOT” w rozdziale 4. 80
  • 29. Podstawy SQL-a 5'.'%6 /#: KFACW Wskazówki (41/ CWVQT[ 9*'4' PCYKUMQACW ::: Z wartościami null związanych jest tyle problemów i komplikacji — wa niejsze /#: KFACW z nich zostały opisane w niniejszym podrozdziale — e niektórzy znawcy baz 07.. danych zalecają u ytkownikom rezygnację Rysunek 3.3. Otrzymanie wartości null z kolumny, z ich u ywania (zamiast tego proponują która nie pozwala na istnienie wartości null stosowanie wartości domyślnych lub innych znaczników braku danych). Chocia więc do niektórych zastosowań wartości null są niezbędne, to jednak zalecana jest jak największa powściągliwość w ich u ywaniu. Sposób wyświetlania w wynikach Konkluzja jest taka: wyniki zawierające wartości null zale y od systemu DBMS. wartości null nale y interpretować ostro nie. Wartości puste mogą być wyświetlane Przeczytaj tak e podrozdziały „Sprawdzanie np. jako 07.., 07.., 07.. lub jako występowania wartości null za pomocą puste pola. funkcji COALESCE()” oraz „Porównywanie Obecna wersja Oracle’a traktuje puste wyra eń za pomocą funkcji NULLIF()” łańcuchy ( ) jako wartości null. Takie w rozdziale 5. rozwiązanie w kolejnych wersjach raczej Określenie wartość null nie jest precyzyjne Wartości null nie będzie stosowane, stąd Oracle ju — null oznacza brak wartości. teraz radzi nie opierać się na takiej jednoznaczności. Mo e to spowodować Słowa kluczowego 07.. nie nale y problemy z konwersjami danych do umieszczać w apostrofach — system innych systemów DBMS. W przykładowej DBMS zinterpretuje je wtedy jako łańcuch bazie danych kolumna KOKGACW w tabeli znaków 07.. , a nie jako wartość pustą. CWVQT[ zdefiniowana jest jako 016 07... Wartość null mo na tak e otrzymać W Oracle’u imieniem autora o nazwisku z kolumny, która na istnienie wartości Sitkowski (autor #) jest pojedyncza null nie pozwala. Kolumna KFACW w tabeli spacja ( ), natomiast w innych systemach CWVQT[ nie pozwala na istnienie wartości w tym miejscu występuje pusty łańcuch null, ale konstrukcja 5'.'%6 przedstawiona ( ). Informacje na temat przykładowej na rysunku 3.3 zwraca jako wartość bazy danych znajdują się w rozdziale 2. maksymalną KFACW właśnie wartość pustą. 81