sgmsql.pdf

(180 KB) Pobierz
Microsoft Word - SQL na szkolenia.doc
Zaawansowane szkolenie z Systemu Gospodarki Mostowej
KRÓTKI OPIS
J ZYKA SQL
Wrocław, stycze 2003
W opracowaniu omówiono podstawowe informacje potrzebne do opanowania
umiejtnoci zadawania pyta do baz danych SGM. Programy wchodzce w skład
SGM wyposaone s w wiele standardowych raportów. Jednak aden zestaw
przewidzianych przez programistów pyta nie jest w stanie zaspokoi wszystkich
potrzeb uytkowników systemu. W celu umoliwienia uytkownikom formułowania
własnych pyta system SGM został wyposaony w moliwo obsługi pyta
formułowanych w jzyku SQL.
1. Tabele SGM
Baza danych Systemu Gospodarki Mostowej została zrealizowana jako tak zwana
„relacyjna baza danych”. Oznacza to (w duym uproszczeniu), e informacje SGM
zostały rozbite na pewn ilo grup a kada grupa informacji została za
zrealizowana jako tabela (zwana równie relacj ). Wiersze tabel (zwane równie
rekordami lub krotkami ) opisuj pojedynczy zestaw danych (np. jeden obiekt
mostowy). Kolumny tabel (zwane równie polami lub atrybutami ) opisuj informacje
zwizane z danym wierszem.
Przykład tabeli.
Główna tabela SGM nazwa si JNIMain.db . Oto jej fragment (ze sztucznymi
danymi):
JNI
LNI Rodzaj
DrogaAdm KmAdm JAD
JAP
Miejscowo
sc
...
122212300 L231 JNI001a
123
23.341
WRWRWR 89887 Lubawka
...
122212301 L232 JNI001a
123
25.366
WRWRWR 89887 Mrgow
...
...
...
...
...
...
...
...
...
...
Cała tabela JNIMain.db zawiera 23 kolumny. Pełen ich wykaz z opisem znaczenia
poszczególnych kolumn znajduje si w oddzielnym opracowaniu powiconym
strukturze tabel SGM.
Pierwsza kolumna tabeli JNIMain.db zawiera Jednolity Numer Inwentarzowy obiektu
mostowego. Druga - Lokalny Numer Inwentarzowy. Kolejne dwie kolumny zawieraj
informacje o połoeniu obiektu na drodze, do której obiekt jest przypisany
administracyjnie. Nastpne kolumny zawieraj kody Jednostki Administracji
Strona 1
297330830.008.png 297330830.009.png
Zaawansowane szkolenie z Systemu Gospodarki Mostowej
Drogowej oraz Jednostki Administracji Pastwowej na terenie, których ley obiekt,
itd.
Jak wida na tym przykładzie pewne informacje zawarte w tej tabeli s zakodowane.
Znaczenie pewnych kodów mona wyczyta z dokumentacji SGM. Np. oto kody
Rodzajów (kolumna nr 3):
· JNI001a most
· JNI001b tunel
· JNI001c przejcie podziemne
· JNI001d przepust
· JNI001e prom
Jednostka Administracji Drogowej zapisana za jest w postaci szecioznakowego
kodu. Znaczenie tego kodu zapisane jest za w tabeli o nazwie RdbJAD.db. W
oddzielnej tabeli jest zapisane znaczenie kodu Jednostki Administracji Pastwowej.
Tabele SGM zapisane s w formacie "Paradox 7". Jest jeden z powszechnie
uywanych standardowych formatów baz danych (innymi znanymi formatami s, np.
dBase, InterBase, Sybase, Oracle,...). Tabele te maj rozszerzenie DB.
2. O j zyku SQL
Jzyk SQL (" Structure Query Language " - "Strukturalny Jzyk Zapyta"), rozwinicie
jzyka SEQUEL, jest jzykiem słucym do budowania systemów obsługi
relacyjnych baz danych (RDBMS „ Relational DataBase Managment System” ) na
dowolnej płaszczy nie sprz towej . W chwili obecnej jest on standardowym
jzykiem słucym do obsługi komercyjnych baz danych.
Programy napisane przez firm ProMat słuce do obsługi baz danych SGM
wykorzystuj jeden wspólny mechanizm dostpu do danych - "Borland Database
Engine" (BDE). Z kolei BDE umoliwia dostp do tabel baz danych za pomoc
pewnej wersji jzyka SQL. Jzyk ten jest podzbiorem standardu ANSI-92 SQL.
Jzyk SQL umoliwia zadawanie pyta do baz danych oraz pozwala na zmienianie
struktury baz danych. W opracowaniu tym omawiamy tylko ten fragment jzyka który
słuy do zadawania pyta.
Dokładny opis jzyka SQL mona znale w wielu ksikach dostpnych na rynku.
UWAGA . Opracowanie to jest tylko wprowadzeniem do jzyka SQL.
W adnym wypadku nie zastpuje podrcznika. Wzorujc si na
podanych tutaj przykładach mona nauczy si tylko zadawania
stosunkowo prostych pyta.
W przykładach bdziemy posługiwali si tablicami:
1. JNIMain.db - tabela ta zawiera główne informacje o lokalizacji obiektów
mostowych.
Strona 2
297330830.010.png
 
Zaawansowane szkolenie z Systemu Gospodarki Mostowej
2. MstMain.db - tabela ta zawiera główne informacje o obiekcie, jeli jest on
mostem (a nie np. przepustem).
3. MstPrzes.db - tabela ta zawiera informacje o przsłach mostów.
4. JNIDrogi.DB - tabela ta zawiera informacje o drogach przechodzcych przez
obiekt.
Pytania napisane w jzyku SQL nazywane s zapytaniami .
3. Elementy j zyka SQL
Oto najwaniejsze zasady obowizujce przy formułowaniu zapyta w jzyku SQL:
1. W kadym zapytaniu wystpuj tzw. klauzule rozpoczynajce si od słów
kluczowych (np. SELECT, FROM, WHERE...).
2. Zapytania SQL mog by zapisane w jednym lub kilku wierszach.
3. Małe i wielkie litery nie s rozróniane. Nie dotyczy to jednak wartoci pisanych
w cudzysłowach.
3.1. Proste zapytania
Najprostsze zapytanie ma posta:
SELECT *
FROM tabela
Przykład 1.
SELECT *
FROM ”JNIMain.DB”
Zostan wybrane wszystkie obiekty mostowe ( i ich wszystkie dane) zapisane
w tabeli JNIMain.DB.
Aby wywietli jedynie cz informacji z tabeli w zapytaniu naley wypisa
nazwy kolumn, które maj zosta wywietlone:
SELECT wyra enie_1 [, wyra enie_2, ..., wyra enie_n]
FROM tabela [tabela_2, ..., tabela_n]
W wyraeniach moemy stosowa nazwy kolumn oraz operatory
arytmetyczne: +, -, *, /, operator konkatenacji || (łczenie napisów).
Przykład 2.
SELECT
Strona 3
297330830.001.png 297330830.002.png
Zaawansowane szkolenie z Systemu Gospodarki Mostowej
JNI,
Rodzaj,
DrogaAdm,
KmAdm
FROM ”JNIMain.DB”
Zostan wywietlone numery JNI, rodzaje obiektów, numery dróg i kilometra
wszystkich obiektów mostowych zapisanych w tabeli JNIMain.DB.
Jedn z zalet zapyta SQL jest moliwo nakładania warunków na dane
zwracane w wyniku zapytania. Podstawowym mechanizmem stosowanym dla
narzucania ogranicze na rekordy zwracane w wyniku zapyta jest klauzula
WHERE.
SELECT wyra enie_1 [, wyra enie_2, ..., wyra enie_n]
FROM relacja
WHERE warunek_1 [AND/OR warunek_2 ... AND/OR warunek_n]
W warunkach wystpujcych w klauzuli WHERE stosuje si zwykle operatory
arytmetyczne:
Symbol Znaczenia
= równo
<> nierówno
> wikszo
>= wikszo lub równo
< mniejszo
<= mniejszo lub równo
oraz operatory jzyka SQL
Operator Znaczenie
between ... and ... warto z przedziału
like
warto zgodna z wzorcem
is null
warto pusta - null
in
warto w zbiorze danych
Kady z operatorów SQL moe by poprzedzony negacj not , która zmienia
jego logiczne znaczenie. Warunki złoone zbudowane s z warunków prostych
powizanych spójnikami logicznymi AND i OR.
Przykład 3.
SELECT *
FROM ”JNIMain.DB”
Strona 4
297330830.003.png 297330830.004.png 297330830.005.png
Zaawansowane szkolenie z Systemu Gospodarki Mostowej
WHERE Rodzaj = ‘JNI001a’
Zostan wywietlone wszystkie informacje o obiektach, które s mostami.
Przypomnijmy, e w tabeli „JNIMain.db” kod JNI001a oznacza most, JNI001b
-tunel, JNI001c- przejcie podziemne, JNI001d– przepust oraz JNI001e-prom.
Wyniki zapyta generowane s w postaci tabel, gdzie poszczególne wiersze
reprezentuj kolejne obiekty uzyskiwane w wyniku zapytania. Kolumny w tabeli
stanowicej wynik zapytania opatrzone s nagłówkiem, który jest opisem wyraenia,
którego wynik pojawia si w kolejnych wierszach w tej kolumnie. Niekiedy taka
posta nie jest najbardziej eleganckim i czytelnym sposobem na nazwanie kolumny
pojawiajcego si wydruku i czsto dla kolumny w tabeli nadajemy osobny alias
(nazw zastpcz), który wystpuje jako nagłówek kolumny wyników zapytania.
SELECT artybut_1 AS Atrybut_Jeden, atrybut_2 AS Atrybut_Dwa ...
FROM relacja
[WHERE warunki]
Przykład 4.
SELECT
JNI,
Rodzaj AS Rodzaj_Obiektu,
DrogaAdm AS DROGA_NR,
KmAdm AS Km
FROM ”JNIMain.DB”
Zostan wywietlone numery JNI, numery dróg i kilometra wszystkich
obiektów mostowych zapisanych w tabeli JNIMain.DB. Kolumny zostan nazwane (w
kolejnoci) JNI, Rodzaj_Obiektu, DROGA_NR, Km.
Celem unikania wielokrotnych wystpie identycznych wierszy w tabeli stanowicej
wynik zapytania mona zastosowa klauzule DISTINCT.
SELECT DISTINCT atrybut
FROM tabela
[WHERE warunek]
Przykład 5.
SELECT
DISTINCT(JAD)
FROM ”JNIMAIN.DB”
WHERE Rodzaj = JNI001e;
Strona 5
297330830.006.png 297330830.007.png
Zgłoś jeśli naruszono regulamin