Sbd – system baz danych bd



Pobieranie 147.63 Kb.
Data07.05.2016
Rozmiar147.63 Kb.
Baza danych – jest to strukturalna organizacyjna zbioru danych, która określa podział zbioru na stałe elementy zwane rekordami oraz system łączenia, dopisywania i wyszukiwania danych.

Pojęcie bazy danych często używa się wymiennie z określeniem system baz danych.

SBD=BD+OOD


SBD – system baz danych

BD – baza danych

OOD – oprogramowanie operowania danymi

OOD=SZBD + Aplikacja użytkowa


SZBD – system zarządzania baz danych – jest to oprogramowanie umożliwiające podstawowe operacje na danych (zbiór poleceń, procedur, funkcji).

Aplikacja – program użytkowy

Przykłady baz danych:

1. książki telefoniczne, w których informacja uporządkowana jest alfabetycznie wg miejscowości oraz nazwisk.

2. rezerwacja miejsc w samolotach, która wymaga informacji o wolnych i zarezerwowanych miejscach na poszczególne daty.

3. katalog biblioteczny, który zawiera spis książek posiadanych przez bibliotekę.



4. obsługa gospodarki materiałowej w zakładzie przemysłowym – wymagane jest przechowywanie informacji o materiałach znajdujących się w magazynach.

5. spis ludności, który zawiera pełną informację o materiałach znajdujących się w magazynach.

6. ewidencja uczniów w klasie

7. kartoteka gabinetu stomatologicznego, który zawiera spis pacjentów.

Rekord – elementarna jednostka informacji przy zapisie w pliku.

Na budowę rekordu składają się pola definiowane przez:

-nazwę

-typ


-długość

Wyróżniamy podstawowe typy pól:

1.Pola znakowe – zawierająca dowolne znaki najczęściej zapisane w kodzie ASCII

2.Pola numeryczne przeznaczone do przechowywania wielkości liczbowych, na których można wykonywać dowolne działania arytmetyczne

3.Pola logiczne – przeznaczone do przechowywania informacji logicznych, czyli posiadających wartość prawda lub fałsz.

4.Pola daty – do przechowywania daty w wybranym formacie.

5.Pola notatnikowe – które pozwalają zapisywać informacje o zmiennej długości dotyczące wybranego rekordu.

Własności współczesnych baz danych:

1.Niezależność aplikacji i danych.

2.Abstrakcyjna reprezentacja danych wykorzystywanych przez aplikacje związane z trójpoziomową architekturą baz danych:

-poziome


-fizyczne

-logiczne

3.Różnorodność widzenia baz danych przez różnych użytkowników

4. fizyczna i logiczna (wieloplatformowość SZBD)



Zalety współczesnych SZBD:

-zmniejszenie trójwymiarowości przechowywanych informacji

-autoryzacja dostępu

-współdzielenie danych (różne aplikacje, ta sama aplikacja –wielu użytkowników)

-wielkość interfejsów

-związki integralności bazy danych – spójność danych

-ochrona przed awariami systemu (niezawodność dwufazowy protokół potwierdzeń)

-architektura klient – serwer


FUNKCJE SERWERA


-Manipulowanie danymi:

-kontrola dostępu

-kontrola integralności baz danych

-organizacja pracy z wieloma bazami danych

-blokowanie dostępu

FUNKCJE APLIKACJI:

-interfejs z użytkownikiem

-formułowanie zapytań

-realizacja skomplikowanych zapytań



Wady:

-konieczność zakupu serwera baz danych



Zalety:

-podniesienie poziomu bezpieczeństwa BD.

-wzrost efektywności pracy w sieci
Komplementacyjne modele baz danych:

-kartotekowe

-hierarchiczne

-sieciowe

-relacyjne

-o swobodnym schemacie

-obiektowe

Kartotekowa baza danych: (strukturalna)

Schemat:


Odrębne dokumenty o identycznej strukturze, lecz różnej zawartości

Zastosowanie mają w liście płac, kartotekach personalnych, w magazynach.



Hierarchiczne bazy danych oparte na powiązaniach pomiędzy plikami np.: struktura katalogów i plików w Dosie

Sieciowe bazy danych oprócz powiązań pionowych występują także powiązania poziome lub skośne np. książki z rozdziałami, lub odnośnikami

Relacyjne bazy danych: (Tabele)

Struktura:

Tabele powiązań między sobą poprzez kolumny, w których występują wspólne dane, np. odszukanie określonego rekordu danej tablicy umożliwia odszukanie odpowiadającego mu rekordu w drugiej.

Zalety i wady baz danych:

1.możliwość zdefiniowania powiązań między danymi znajdującymi się w różnych zbiorach

2.szybsze wyszukanie informacji miejsca pliku

3.dodatkowe pliki indeksowe

4.redukcja łącznej zajętości miejsca na dysku

5.łatwiejsza aktualizacja danych

6.większy stopień skompilowania

Obiektowe bazy danych – oparte na technologii obiektowej np. system obsługujący różnych klientów (krajowych, zagranicznych, prywatnych).Zawierają dowolne informacje tekstowe i liczbowe bez podziału na pola. Każda informacja opisana jest słowami kluczowymi wg.

Których można ją odszukać np.: zbiór wypisów z czasopism.



Bazy danych o dowolnym schemacie zawierają dowolne informacje tekstowe i liczbowe, bez podziału na pola, każda informacja opisana jest słowami kluczowymi, wg których można ją odszukać, np. zbiór wypisów z czasopism.

Relacje pomiędzy plikami


Tworzymy dwa pliki z danymi

I plik „uczeń”

II plik „oceny” -umieszczone będą w nim oceny ucznia z przedmiotów oraz numer identyfikacji.

JĘZYKI BAZ DANYCH:

-język definiowania danych (DDL) – definiuje struktury danych, tj. schematu implementacyjnego

-język manipulowania danymi (DMK) – wypełnianie, usuwanie, poprawianie

-język sterowania danymi (DCL) – sterowanie transakcjami

-język zapytań (QL) – pobieranie informacji z baz danych zgodnie z wyspecyfikowanymi warunkami

SQL – standard języka baz danych

(DDL+DMK+QL)



ERD – konwencja i definicje, wyróżniamy 4 encje lub związki

1 Osoba ----- paszport

2 Katalog ---- plik

3 Zamówienie ---- pozycja

4 Wyrób ------ magazyn

Zasady tworzenia diagramów ERD:

1.Identyfikowanie zbioru obiektów w systemie wraz z ich atrybutami kluczowymi

2.Idnetyfikowanie powiązań bezpośrednich między obiektami

3.Przekształcenie tablicy krzyżowej powiązań w model danych, identyfikacja pozostałych atrybutów obiektu.

4.Przekształecenie każdego z powiązań typu N:N na 2 powiązania typu 1:N i identyfikacja dodatkowych atrybutów charakterystycznych dla nowo powstałych obiektów.

Sprawdzenie poprawności otrzymanej struktury poprzez porównanie z wymaganiami systemu.



Atrybut – dowolny szczegół do kwalifikowania, identyfikowania, określenia ilości lub wyrażenia stanu encji.

Transakcja – jest to funkcja przejścia baz danych z jednego stanu spójnego na inny stan spójny.

1.Niezawodnośc baz danych.

Wymagania:

a)odtworzenie transakcji zakończonych w chwili awarii

b) wycofanie transakcji niezakończonych



2. metody osiągania niezawodności

a) niezawodność sprzętowa

b) niezawodność sprzętowa

3) Ochrona danych

a) Sterowanie dostępem

b) sterowanie przepływem danych – kontrolowanie przesyłań danych w celu ich ochrony.

c) ograniczenie możliwości wnioskowania – uniemożliwienie pozyskania w sposób pośredni informacji

d) szyfrowanie danych przekazywanie informacji w postaci czytelnej jedynie dla użytkowników znających kod dostępu.

Relacyjne operacje na bazie danych


Projekcja – ograniczenie liczby pól, utworzenie pionowego podzbioru relacji poprzez wybór określonych atrybutów.

Selekcja – ograniczenie liczby kratek w relacji spełniających warunek selekcji, utworzenie poziomego podzbioru relacji przy pomocy warunku

Połączenie – łączenie kilku tabel w jedno

BDE Borland DataBase Engine – interfejs pozwalający zarządzać bazami i obsługiwać

ODBCOpen DataBase Connectivity – otwarty sterownik dołączenia z bazami

MS Query – aplikacja MSQRY32.EXE stanowi interfejs do obsługi baz danych w języku SQL, pozwalają tworzyć i wykorzystywać zapytania, czyli kwerendy SQL. Narzędzie to jest dostępne dla wszystkich posiadaczy pakietu.

DB ExplorerDataBase Explorer – program wchodzący w skład Delphi/C++ Buildera i pozwalający na obsługę baz danych w języku SQL. Przeznaczony jest głównie do korzystania z interfejsu BDE (ale może korzystać ze sterowników ODBC). W sensie funkcjonalnym – zbliżony do MS Query. Pozwala przeglądać architekturę bazy danych i obsługiwać zapytania zapisane w języku SQL.

DB DesktopDataBase Desktop – uniwersalne narzędzie do obsługi baz danych. Program wchodzący w skład Delphi/C++ Buildera, pozwalający na obsługę baz danych w języku SQ:, ale dodatkowo – na łatwe projektowanie tabel. Podobnie jak DB Explorer, może korzystać ze sterowników BDE i ODBC. DataBase Desktop umożliwia sprawną pracę z tabelami i zapytaniami baz danych, tworząc łagodny, wielofunkcyjny graficzny interfejs użytkownika.

SQL to skrót od Structured Query Language, czyli Strukturalnego Języka Zapytań. Pod koniec 70 lat dr E. F. Codd z IBM oraz inżynier z Oracle opracowali język służący do komunikowania się z relacyjnymi bazami danych

Z technicznego punktu widzenia, SQL jest podjęzykiem danych. Oznacza to, że jest on wykorzystywany wyłącznie do komunikacji z bazą danych. Nie posiada on cech pozwalających na tworzenie kompletnych programów. Jego wykorzystanie może być trojakie i z tego względu wyróżnia się trzy formy SQL-a:



  1. SQL interakcyjny lub autonomiczny wykorzystywany jest przez użytkowników w celu bezpośredniego pobierania lub wprowadzania informacji do bazy. Przykładem może być zapytanie prowadzące do uzyskania zestawienia aktywności kont w miesiącu. Wynik jest wówczas przekazywany na ekran, z ewentualną opcją jego przekierowania do pliku lub drukarki.

  2. Statyczny kod SQL (Static SQL) nie ulega zmianom i pisany jest wraz z całą aplikacją, podczas której pracy jest wykorzystywany. Nie ulega zmianom w sensie zachowania niezmiennej treści instrukcji, które jednak zawierać mogą odwołania do zmiennych lub parametrów przekazujących wartości z lub do aplikacji. Statyczny SQL występuje w dwóch odmianach.

        1. Embedded SQL (Osadzony SQL) oznacza włączenie kodu SQL do kodu źródłowego innego języka. Większość aplikacji pisana jest w takich językach jak C++ czy Java, jedynie odwołania do bazy danych realizowane są w SQL. W tej odmianie statycznego SQL-a do przenoszenia wartości wykorzystywane są zmienne.

        2. Język modułów. W tym podejściu moduły SQL łączone są z modułami kodu w innym języku. Moduły kodu SQL przenoszą wartości do i z parametrów, podobnie jak to się dzieje przy wywoływaniu podprogramów w większości język proceduralnych. Jest to pierwotne podejście, zaproponowane w standardzie SQL. Embedded SQL został do oficjalnej specyfikacji włączony nieco później.

  3. Dynamiczny kod SQL (Dynamic SQL) generowany jest w trakcie pracy aplikacji. Wykorzystuje się go w miejsce podejścia statycznego, jeżeli w chwili pisania aplikacji nie jest możliwe określenie treści potrzebnych zapytań - powstaje ona w oparciu o decyzje użytkownika. Tę formę SQL generują przede wszystkim takie narzędzia jak graficzne języki zapytań. Utworzenie odpowiedniego zapytania jest tu odpowiedzią na działania użytkownika.

Wymagania tych trzech form różnią się i znajduje to odbicie w wykorzystywanych przez nie konstrukcjach językowych. Zarówno statyczny, jak i dynamiczny SQL uzupełniają formę autonomiczną cechami odpowiednimi tylko w określonych sytuacjach. Większość języka pozostaje jednak dla wszystkich form identyczna.

DDLData Definition Language – język definiowania struktury/konstrukcji baz danych. Ten zbir instrukcji SQL służy do tworzenia i zarządzania obiektami bazy danych (tabelami, widokami, indeksami itp.).

DMLData Manipulation Language – język manipulowania danymi. Do tego zbioru nalezą instrukcje INSERT, UPDATE, DELETE.

DCLData Control Language – język zarządzania danymi. W skład tego zbioru wchodzą słowa kluczowe określające prawa dostępu praw dostępu do danych, np. PASSWORD, GRANT, REVORE.

DQLData Query Language – język zapytań (kwerend), w istocie oznacza jednoelementowy zbiór = SELECT


TCLTransaction Control Language – język zarządzania transakcjami, co określa zbiór instrukcji: COMMI, ROLLBACK, SAVE POINT.

Relacyjne bazy danych (RDBMS Relatinal DataBase Managment System), czyli – na dobrą sprawę – wszystkie stosowane obecnie w dużej skali systemy baz danych; to takie systemy, które pozwalają na łączenie danych tzw. relacjami. Istnieją trzy kategorie takich relacji

  • One to One – jeden do jednego. Przykładem takiej relacji jest przyporządkowanie każdemu obywatelowi jednego, jednoznacznego identyfikatora np. NIP, PESEL.

  • One to Many – jeden do wielu. Przykładem takiej relacji jest przyporządkowanie każdemu obywatelowi jednego (na pewien czas) adresu.

  • Many to Many – wiele do wielu. Np. przyporządkowanie zabawek dzieciom w przedszkolu. To samo dziecko może się bawić różnymi zabawkami.

DataBase Owner (DBO) – właściciel bazy danych, czyli użytkownik mający uprawnienia do tworzenia nowych obiektów w obrębie bazy danych i dowolnych manipulacji danymi.

DataBase Objects (DBO) – obiekty wchodzące w skład bazy danych, czyli tabele, widoki, indeksy, zapytania itp. Najważniejsze obiekty w każdej bazie danych to oczywiście tabele.

DataBase Table – tabele baz danych

Typy wartości, które można wpisywać do poszczególnych kolumn (typy danych)

  1. INT/Counter – liczba całkowita (INTEGER). Licznik automatycznie inkrementujący się (każdy następny wpis (rekord) uzyskuje kolejny numer porządkowy).

  2. Char(30) – łańcuch znaków (tekst) o maksymalnej długości do 30 znaków. Liczba w nawiasie oznacza ile maksymalnie znaków może się zmieścić w danym łańcuchu znaków.

  3. INT lub INTEGER – liczba całkowita. Niektórych systemach RDBMS występują odmiany SMALLINT (całkowita krótka), TINYINT (jednobajtowa).

  4. FLOAT – liczba zmiennoprzecinkowa (rzeczywista). W różnych systemach RDBMS liczby zmiennoprzecinkowej mogą nazywać się także NUMBER, NUMERIC, DECIMAL, CUURENCY. Typ CURRENCY przeznaczony jest specjalnie do reprezentacji sum pieniędzy (automatycznie zaokrąglenie do 2 cyfr po przecinku).

Typy danych


  1. Char – łańcuch znaków

  2. Date – data kalendarzowa

  3. Logical – zmienna logiczna (True/False)

  4. Memo – pole znakowe o znacznej długości (tzw. notatnik)

  5. Numeric – liczba

  6. OleObiect –obiekt osadzony w tabeli techniką OLE

OLE (Object Linking and Embedding) wiązanie i osadzanie obiektów; OLE 1.0; dostępna w niektórych aplikacjach pracujących pod systemem MS Windows technika natychmiastowego wywoływania tej aplikacji, która była używana do tworzenia danego fragmentu dokumentu; OLE 1.0 zrealizowano za pomocą mechanizmu dynamicznej wymiany danych DDE.

OLE 2.0 - wprowadzona przez Microsoft w 1993 r. technika OLE o rozszerzonych możliwościach kolejnego natychmiastowego odwoływania się z różnych partii jednego dokumentu źródłowego, do wielu (maksymalnie kilkunastu) aplikacji, w których powstały poszczególne jego fragmenty; OLE 2.0 została zrealizowana m.in. dzięki pochodzącej z Unixu procedurze RPC (Remote Procedure Call).

Technika OLE pozwala przenosić fragmenty dokumentów wykonane w różnych programach. Taki sposób pracy z komputerem zwany jest OLE - ang. Object Linking and Embedding i na język polski został przetłumaczony jako osadzanie i łączenie obiektów.

W technice OLE występują dwa sposoby pracy:



1. osadzanie obiektów, które dzieli się na:

  • osadzanie bez użycia schowka

  • osadzanie z użyciem schowka oraz

2. łączenie obiektów.

Rekord –pojedynczy wpis do tabeli, inaczej pojedynczy wiersz.

Pole – najmniejsza jednostka danych leżąca na przecięciu kolumny i wiersza.

ASCII (skrót od ang. American Standard Code for Information Interchange) – kod przyporządkowujący liczby z zakresu 0-127 literom (alfabetu angielskiego), cyfrom, znakom przestankowym i innym symbolom, oraz poleceniom sterującym. Przykładowo litera "a" jest zakodowana liczbą 97, a polecenie "powrót karetki" – liczbą 13. Pierwsze 32 kody (0-31) oraz ostatni kod (127) to tzw. znaki sterujące, które oryginalnie nie służyły do przenoszenia informacji, tylko do sterowania urządzeniem (np. drukarką). Ponieważ kod ASCII jest 7-bitowy, a większość komputerów operuje na 8-bitowych bajtach, powstało wiele różnych rozszerzeń ASCII zagospodarowujących ósmy bit (np. norma ISO 8859).

Operator – symbol powodujący wykonanie jakiejś operacji.

Trymowanie – usuwanie nadmiarowych odstępów (spacji)

Alias (alternatywna nazwa kolumny) – inna alternatywna nazwa dla konkretnego pola bądź konkretnej wartości. Przypisanie aliasu następuje poprzez użycie słowa kluczowego AS. Przykład: SELECT D_name+’ ‘+...+D_miasto AS NAKLEJKA FROM Dostawcy;.

Konkatencja - połączenie dwóch łańcuchów znaków.

Klauzula – jest ciąg znaków słowa kluczowego z jego parametrami. Klauzulą może być SELECT, FROM.

Listing – wydruk kodu źródłowego programu. Mianem listingu określa się kody zawarte w literaturze, czasopismach oraz stronach WWW. Dodatkowo dla listingów publikowanych w Internecie często jest stosowane kolorowaniem kodu.

EQUIJOIN - połączenie równościowe - rodzaj operacji połączenia tabel, w której predykatem połączeniowym jest predykat równości.

Klucz podstawowy (primary key) – zwany też kluczem głównym to jedno lub więcej pól, których wartość jednoznacznie identyfikuje każdy rekord w tabeli. Taka cecha klucza nazywana jest unikatowością. Klucz podstawowy służy do powiązania rekordów w jednej tabeli z rekordami z innej tabeli. Klucz podstawowy jest nazywany kluczem obcym, jeśli odwołuje się do innej tabeli. Na przykład, w bazie pracowników kluczem podstawowym może być numer ewidencyjny pracownika.

Relacja – po podzieleniu danych na tabele i zdefiniowaniu pól kluczy podstawowych trzeba wprowadzić do systemu bazy danych informacje na temat sposobu poprawnego łączenia powiązanych danych w logiczną całość. W tym celu definiuje się relacje między tabelami.

Połączenie równoważne – warunek połączenia sprawdza równość pomiędzy kolumnami dwóch tabel.

Instrukcje


CREAT (utwórz) – słowo to może w SQL występować w wielu instrukcjach. W zależności od możliwości wybranego sterownika lub systemu DBMS za jego pomocą można stworzyć różne obiekty wchodzące w skład baz danych np. CREAT TABLE – tabele, CREAT VIEW – widoki.

INSERT TO (wstaw do) – instrukcja wstawiająca nowy rekord do istniejącej już tabeli. Nowy rekord zostaje dodany na końcu.

VALUSES (wartości) – słowo kluczowe SQL rozpoczynające listę danych składających się na rekord wstawiany do tabeli.

UPDATE (zaktualizuj) – słowo kluczowe SQL rozpoczynające listę aktualizacji grupowej lub indywidualnej.

SET (ustaw, przyporządkuj nową wartość) – słowo kluczowe słowo kluczowe SQL powodujące przypisanie za pomocą operatora = nowej wartości danych w tabeli.

WHERE (gdzie) – słowo kluczowe SQL pozwalające na podanie warunku rekordu(-ów) w tabeli.

CHAR(1) (typ danych: znakowych) – podanie po nazwie kolumny tabeli typu danych CHAR(1) powoduje, że można w polach takiej kolumny umieszczać tylko po jednym znaku. Przykład LP CHAR(1);

DROP (usuń) – słowo kluczowe SQL powodujące usunięcie obiektu. Podobnie jak CREAT może być łączone z różnymi obiektami (np. DROP COLUMN).

NULL (brak wpisu) – słowo kluczowe SQL oznaczające brak danych w określonym polu.

INT – liczba całkowita (INT – skrót od Integer). Przykład LP INT;

NUMBER – liczba.

NUMERIC – dane numeryczne.

AS (ang. AS – jako) to ważne słowo pozwalające w SQL na powiązanie danych (wartości lub typów) z nazwami symbolicznymi. Jego najprostsze i najczęściej zastosowanie polega na tworzeniu tzw. aliasów, czyli alternatywnych, nowych nazw (przykład: SLECT 5 AS AS Pierwsza, 22 AS Druga;). Zastosowanie słowa AS pozwala na dodanie opisu do zwracanych wartości.

SELECT – choć słowo SELECT znaczy dokładnie „wybierz”, instrukcja SELECT nie zawsze musi pobierać dane z tabeli. Istnieje taka postać instrukcji SELECT, której dane można podać w trybie bezpośrednim. Najprostsza postać tej instrukcji to: SELECT ; (np. SELECT 5;). Pojedyncza instrukcja SELECT może zwracać wiele wartości (np. SELECT ((5+5)/2)*3-1; lub SELECT ((5+5)/2)*3-1 AS Wynik).

DECIMAL(6,2) określa liczby dziesiętne (dokładniej zmiennoprzecinkowe) i pozwala w nawiasie wyznaczyć liczbę stosowanych cyfr znaczących – ogólnie (6) i po przecinku (2).

DATETIME – data/czas (np. Z_data DATETIME).

VARCHAR (Char – łańcuch znaków; Var – o zmiennej długości) określa maksymalną szerokość pola opisu (np. T_opis VARCHAR(100);).

ORDER BY – sortowanie danych w tabeli. Często, już po wprowadzeniu danych do tabeli bazy danych, następuje wiele operacji dodania (ang. Insert), usunięcia (ang. Delete) i/lub modyfikacji dodania (ang. Update) danych. ORDER BY zawsze musi być ostania klauzula w instrukcji rozpoczynającej się od SELECT. Jeśli chcemy sortować według wielu kolumn musimy po prostu zamiast jednej kolumny w klauzuli sortującej wymienić listę kolumn, rozdzielając ich nazwy przecinkami. Zamiast podawać nazwy kolumn tabeli możemy podać tylko kolejny numer kolumny (licząc od lewej, a poczynając od 1) na liście instrukcji SELECT. Aby odwrócić sortowanie rosnące trzeba dopisać DESC. Słowo kluczowe DESC stosuje się do tej kolumny, której nazwa bezpośrednio je poprzedza. Jeśli chcemy, by sortowanie przebiegła w kierunku malejącym względem wszystkich kolejnych kolumn, po każdej nazwie kolumny musimy ponownie użyć słowa kluczowego DESC. Przykłady: SELECT * FROM Towary ORDER BY T_cena; SELECT * FROM Towary ORDER BY 4; SELECT T_nazwa, T_cena, T_opis FROM Towary ORDER BY T_ceny DESC T_opis;

WHERE służy do określania warunków, które powinny spełnić poszukiwane dane. Rzadko w praktyce potrzebne bywa pobranie z tabeli wszystkich wierszy (rekordów). Częściej należy pobrać z tabeli tylko pewien podzbiór, potrzebny do dalszego przetwarzania. Wybranie z tabeli tylko tych danych, które nas interesują, wymaga określenia kryteriów filtracji. „Tnąc” pionowo klauzulą SELECT i „tnąc” poziomo klauzulą WHERE, wycinamy z tabeli tylko wybrane pola z wybranych rekordów. Klauzula WHERE następuje zawsze po nazwie tabeli (a więc po klauzuli FROM). Operatory relacji języka stosowane w klauzuli WHERE

=




Równe

<>

!=

Różne od... / nie równa się...

<




Mniejsze niż...

<=




Mniejsze lub równe...

>




Większe niż...

>=

!<

Większe lub równe ... / nie mniejsze niż...

!>




Nie większe od...

BETWEEN




Pomiędzy, od … do

IS NULL




Puste, zawiera tzw. wartość zerową (NULL value)

Przykład: T_nazwa, T_cena, T_opis FROM Towary WHERE T_cena>11;

Aby dokonać filtracji wg zawartości więcej niż jednej kolumny, należy zastosować operator iloczynu logicznego AND oraz dołączyć drugi (kolejny) warunek na końcu klauzuli WHERE. Przykład: SELECT T_opis, T_cena FROM Towary WHERE T_iddost = ‘GUMG’ AND T_cena <=6; Operator sumy logicznej OR pozwala w klauzulach WHERE łączyć warunki na zasadzie alternatywy zwykłej. Skoro wystarczy spełnić choćby jeden z warunków i pozostałe już nie mają wtedy żądnego znaczenia – większość systemów DBMS dokonuje sprawdzenia tylko do pierwszego sprawdzonego warunku. Warunki połączone walternawą logiczną mogą być wzajemnie wykluczające się lub niewykluczające się. Przykład: T_iddost = ‘GUMG’ OR T_iddost = ‘LALW’; T_iidost = ‘GUMG’ OR T_cena < 10;



XOR może zapewniać najskuteczniejszą filtrację danych i najkrótszy zapis instrukcji SQL. XOR jest alternatywą wyłączną. Przykład: T_iddost, T_opis, T_cena FROM Towary WHERE T_iddost =’GUMG’ XOR T_cena < 10 ORDER BY T_iddost;

Operator IN jest używany do wyspecyfikowania zbioru warunków, jeśli wystarczy nam spełnienie co najmniej jednego z tych warunków (na zasadzie dokładnego dopasowania). Po operatorze IN podaje się listę dopuszczalnych warunków. Cała lista jest najmowana w okrągłe nawiasy. Przykład: SELECT T_opis, T_cena, T_iddost FROM Towary WHERE T_iddost IN (‘GUNG’, ‘LALW’) ORDER BY T_iddost;

W większości systemów DBMS wykonanie operatora IN jest szybsze niż wykonanie długiej, złożonej sumy logicznej z wieloma operatorami OR. Inne operatory klauzuli WHERE:


  1. NOT – operator negacji logicznej, który neguje warunek bezpośrednio przed nim

  2. % - znak procentu. Jest to najczęściej używany znak uniwersalny w SQL. Umieszczony wewnątrz łańcucha znaków oznacza dowolną ilość dowolnych znaków ASCII, by coś wyszukać w bazie danych.

  3. LIKE – operator pomagający w wyszukiwaniu wszystkich danych w bazie danych, które w nazwie zawierają zadany łańcuch znaków.

  4. znak podkreślenia _ - działa podobnie jak % ale oznacza zawsze tylko dokładnie jeden dowolny znak.

  5. nawiasy kwadratowe [] – pozwala na podanie zbioru (zestawu), który musi odpowiadać znakowi w wyszukiwanym łańcuchu na ściśle określonej pozycji.

Podstawowe funkcje matematyczne SQL


Abs() zwraca wartość bezwzględną liczby argumentu.

COS() zwraca wartość kosinusa.

EXP() zwraca wartość liczby „e” podniesionej do zadanej argumentem potęgi.

POW() podnoszenie argumentu rzeczywistego do potęgi.

SIN() zwraca wartość sinusa kąta.

SQRT() zwraca wartość pierwiastka kwadratowego z zadanej liczby.

TAN() zwraca wartość tangensa kąta.

ATAN() zwraca wartość kąta o podanym tangensie.

Przy obliczeniach trygonometrycznych należy pamiętać o przeliczeniu kąta podanego w stopniach na radiany. Przykład: SELECT 30, (30*3,14/180), SIN(30*3,14/180);


Funkcje tekstowe SQL


LEFT() także SUBSTRING() zwraca fragment łańcucha tekstowego z lewej strony(pobiera substring).

LEGHT() także DATALEGHT() lub LE() zwraca długość łańcucha tekstowego (tj. liczbę znaków).

LOWER() zamienia znaki w łańcuchu na małe litery.

LTRIM() usuwa znaki niewidoczne (spacje) z lewej strony.

RIGHT() także SUBSTRING() zwraca skrajny prawy fragment łańcucha znaków.

RTRIM() usuwa znaki niewidoczne (spacje) z prawej strony.

UPPER() zamienia znaki w łańcuchu ba duże litery.

Przykład: SELECT LOWER(T_nazwa) AS F1, SUBSTRING(T_nazwa FROM 1 FOR 1) AS F3 FROM Towary WHERE T_nazwa LIKE ‘L%’;


Funkcje przetwarzające datę i czas


EXTRACT() służy do pobrania odrębnego pola numerycznego z pola day/czasu. Ogólny zapis: EXTRACT (pole_numeryczne FROM nazwa_kolumny_z_datą); Przykład: SELECT EXTRACT MONTH FROM Z_data) FROM Zlecenia; Prócz miesiąca (MONTH) można pobrać dzień (DAY), godzinę (HOUR), minuty (MINUTE), sekundy (SECOND) i rok (YEAR). Przykład: SELECT Z_data, EXTRACT (MONTH FROM Z_data) AS M, EXTRACT (YEAR FROM Z_data) AS R FROM Zlecenia ORDER BY Z_data DESC;

Przykłady z systemu SQL SERVER 2000


DATEPART() część daty.

GETDATE() podaje bieżącą datę.

Przykład: SELECT DATEPART (YYY, GETDATE()) AS ROK, DATEPART (MM, GETDATE()) AS MIESIAC;


Funkcje agregatyzujące SQL


AVG(), AVE() lub AVERAGE() zwraca wartość średnią obliczoną w obrębie kolumny (AveraGe – średnia).

COUNT() zwraca faktyczną wartość liczbę wierszy (rekordów) w kolumnie (COUNTing – zliczanie).

MAX() zwraca największą wartość w obrębie danej kolumny.

MIN() zwraca najmniejszą wartość w obrębie danej kolumny.

SUM() zwraca sumę wartości w kolumnie.

Przykłady:



  1. SELECT AVG(T_cena) AS SREDNIA FROM Towary

  2. SELECT COUNT(*) AS Ile_dostawcow FROM Towary;

  3. SELECT SUM(P_cena*P_ile) AS Koszt_zlec FROM Pozycje WHERE P_numzlec=3;

DISTINCT – wybieranie tylko unikalnych (nie powtarzających się) wartości w funkcjach agregatyzujących się SQL. Przykład: SELECT AVG(DISTINCT T_cena) AS SREDNIA FROM Towary;

GROUP BY – grupowanie danych. Przykład: SELECT T_iddost, COUNT(*) AS Ile FROM Towary GROUP BY T_iddost;

Istotne zasady dotyczące poprawnego stosowania klauzuli GROUP BY:



  1. klauzula GROUP BY może zawierać dowolnie dużą liczbę kolumn. Umożliwia to zagnieżdżenie jednych grup we wnętrzu innych, co pozwala na dokładniejsze, wielostopniowe kontrolowanie grupowania danych.

  2. klauzula GROUP BY musi następować po (ewentualnej) ostatniej klauzuli WHERE.

  3. każda kolumna wymieniona na liście klauzuli GROUP BY musi być kolumną pobieraną z tabeli lub poprawnym wyrażeniem.

  4. większość implementacji SQL nie zezwala na używanie klauzuli GROUP BY wobec kolumn z danymi o zmiennej długości. Nie mogą to zatem zazwyczaj być pola typu text ani Memo.

  5. oprócz wyrażeń wykonujących agregatyzację, każda kolumna użyta w instrukcji SELECT musi występować w klauzuli GROUP BY.

  6. jeśli kolumna, według której następuje grupowanie, zawiera puste pola, NULL zostanie zwrócony jako odrębna grupa. Jeśli jest wiele wierszy/pól z wartościami zerowymi – wszystkie zostaną połączone w zerową grupę – NULL group.

HAVING filtruje i pojedyncze rekordy i grupy. Przykład filtrowania grupowego (w obrębie całej grupy a nie pojedynczych wierszy): SELECT Z_idklienta COUNT(*) AS Ile FROM Zlecenia GROUP BY Z_idklienta HAVING COUNT(*)>=2;

Przykład w obrębie jednej instrukcji: SELECT T_iddost, COUNT(*) AS Ile FROM Towary WHERE T_cena>5 GROUP BY T_iddost HAVING COUNT(*) >=2;



INNER JOIN/ON – relacja połączeń pomiędzy tabelami zostaje zadana wprost. Klauzula ON zastępuje klauzulę WHERE. Przykład: SELECT D_name, T_opis, T_cena FROM Dostawcy INNER JOIN Towary ON Dostawcy.D_id=Towary_T_.iddost ORDER BY D_name;

EQIJIN nazywanie też wewnętrznym INNER JOIN

OUTER JOIN – połączenie obejmujące także wiersze, które nie mają żadnych przyporządkowany im wierszy w drugiej tabeli związanej relacją. Nazywane też relacyjnym połączeniem zewnętrznym. Przykład dla BDE: SELECT Klienci.K_name, Zlecenia.Z_numer, Zlecenia.Z_data FROM Klienci LEFT OUTER JOIN Zlecenia ON Klienci.K_id=Zlecenia.Z_idklienta; - pobiera wszystkie wiersze z Klienci.K_id; zamiast LEFT może być RIGHT i mogą być pobierane wiersze z Zlecenia.Z_idklienta.

Przykład dla reszty programów do SQL: SELECT Klienci.Kname, Zlecenia.Z_numer, Zlecenia.Z_data FROM Klienci, Zlecenia WHERE Klienci.K_id*=Zlecenia.Z_idklienta; może też występować =*



FULL OUTER JOIN – pełne połączenie zewnętrzne. Obustronne dołączenie wszystkich wierszy, włącznie z tymi, którym nie jest przyporządkowany żaden wiersz z drugiej (połączonej relacji) tabeli. Przykład: SELECT Klienci.K_name, Zlecenia.Z_numer, Zlecenia.Z_data FROM Klienci FULL OUTER JOIN Zlecenia ON Klienci.K_id=Zlecenia.Z_idklienta ORDER BY K_name;

UNION łączy parę instrukcji SELECT, a zwracane wyniki mogą zostać połączone w jeden zbiór wynikowy. Przykład: SELECT K_name, K_miasto, K_mail FROM Kliencie WHERE K_miasto IN (‘Warszawa’, ‘Lublin’) UNION SELECT K_name, K_miasto, K_mail FROM Klienci WHERE K_id LIKE ‘DD1_’ ORDER BY K_miasto;

Należy uważać na bardzo typowy (i najczęstszy) błąd. Jeśli zapomnimy o usunięciu średnika kończącego pierwsze zapytanie składowe.

Przykład bez użycia UNION: SELECT K_name; K_miasto, K_mailFROM Klienci WHERE K_miasto IN (‘Warszawa’, ‘Lublin’) OR K_id LIKE ‘DD1_’ ORDER BY K_miasto;

Zasady łączące zapytania proste w zapytania wielokrotne:


  1. kolumny, wyrażenia i funkcje agregatyzujące muszą występować w każdym połączonych operatorem UNION zapytań prostych – dokładnie w tej samej kolejności.

  2. każde z zapytań prostych łączonych operatorem UNION, musi zawierać te same kolumny, te same wyrażenia i/lub funkcje agregatyzujące.

  3. typy danych w kolumnach muszą być kompatybilne (zgodne), to znaczy nie muszą być dokładnie tego samego rodzaju, ale muszą być takiego typu, by system DBMS mógł dokonać automatycznie ich bezpośredniej konwersji. Takie „zbliżone” typy danych to np. różne typy numeryczne, różne elementy dat itp.

Domyślna opcja działania operatora polega na wykluczeniu duplikatów rekordów. Jeśli chcemy, aby duplikaty wierszy nie zostały usunięte, musimy po operatorze UNION dodać słowo kluczowe ALL (wszystkie). Przykład: SELECT K_name, K_miasto, K_mail FROM Klienci WHERE K_miasto IN (‘Warszawa’, ‘Lublin’) UNION ALL SELECT K_name, K_miasto, K_mail FROM Klienci WHERE K_id LIKE ‘DD1_’ ORDR BY K_miasto;

Jeśli instrukcje proste SELECT są łączone przy użyciu operatora UNION, może zostać użyta tylko jedna klauzula sortująca ORDER BY i musi zostać umieszczona po ostatniej prostej instrukcji SELECT.



INSERT służy do wstawiania (dodawania) nowych wierszy (rekordów) do tabel bazy danych. Instrukcja INSERT może być używana na kilka sposobów:

  1. do wstawienia nowego pełnego wiersza (rekordu) do istniejącej już tabeli bazy danych,

  2. do wstawiania pojedynczego niepełnego wiersza,

  3. do wstawienia wyników zwróconych przez zapytanie.

Przykład: INSERT INTO Klienci można tutaj wprowadzić nazwy kolumn, do których chcemy wprowadzić dane VALUES (‘nnwk’, ‘nowy’, ul. Wilcza 55’, ‘Warszawa’, NULL);

Można nie wprowadzać do niektórych kolumn danych pod dwoma warunkami:



  1. kolumna została zdefiniowana w projekcie tabeli jako taka, która pozwala na wystąpienie w niej wartości zerowych albo

  2. w definicji (projekcie) tabeli została zdefiniowana zawartość domyślna w danej kolumnie.

UPDATE zaktualizuj. Instrukcja ta może być stosowana w SQL do zmodyfikowania pojedynczego pola, pojedynczego wiersza lub do zmodyfikowania wszystkich wierszy tabeli jednocześnie. Składnia instrukcji UPDATE składa się z trzech elementów:

  1. nazwa tabeli, której zawartość ma zostać zmodyfikowana

  2. nazwa odpowiednich kolumn tejże tabeli oraz ich nowych wartości (nazwa zawartości)

  3. klauzuli z warunkiem filtracji, która decyduje o tym, które wiersze tabeli zostaną zmodyfikowane

Przykład: UPDATE Klienci SET K_mail=’nowy@adres.com’ WHERE K_id=’DD1S’;

Przykład na wiele kolumn:



  1. UPDATE Klienci SET K-mail=’nowy@helmut.de’, K_pair=’HELMUT WIES’ WHERE K_id=’DD1S’;

  2. UPDATE Klienci SET K_adres=UPPER(K_adres) WHERE K_miasto=’Warszawa’;

DELETE – instrukcja usuwająca dane zawarte w tabeli. Instrukcja ta może być używana na dwa sposoby

  1. do usuwania wybranych wierszy w tabeli

  2. do usuwania wszystkich wiersz tabeli

Instrukcja DELETE nie potrzebuje w roli argumentów żadnych nazw kolumn tabeli ani też nie akceptuje żadnych znaków uniwersalnych (tj. żadnych szablonów typu * itp.). Instrukcja DELETE usuwa zawartość całych wierszy (rekordów) a nie kolumn. Aby usunąć zawartość określonych kolumn należy użyć instrukcji UPDATE. Przykład na usunięcie pojedynczego wiersza (rekordu): DELETE FROM Klienci WHERE K_id=’DD1S’;

CREATE TABLE – tworzy tabele. Aby instrukcja zadziałała zgodnie z intencjami trzeba wyspecyfikować dodatkowe informacje:

  1. nazwę dla nowej tabeli, którą podaje się po słowach kluczowych CREAT TABLE

  2. nazwy i definicje poszczególnych kolumn tabeli, które podajemy w postaci delimitowanej listy

Przykład: CREAT TABLE Produkty (P_prodid CHAR(10) NOT NULL, P_iddost CHAR(10) NOT NULL, P_cena DECIMAL(8,2) NOT NULL);

ALTER TABLE – instrukcja do modyfikowania istniejących tabel. Aby stworzyć trzeba wyspecyfikować następujące informacje:

  1. nazwę tabeli przeznaczonej do zmodyfikowania, zaraz po słowach kluczowych ALTER TABBLE. Tabela musi istnieć w przeciwnym razie zostanie wygenerowany komunikat o błędzie

  2. listę zmian (modyfikacji) do wykonania

Przykład dodania (zmiany): ALTER TABLE Dostawcy ADD D_tel CHAR(12);

Przykład usunięcia (zmiany): ALTER TABLE Dostawcy DROP COLUMN D_tel;



DROP TABLE – usunięcie tabeli powoduje jej całkowite zniknięcie z bazy danych. Usuwa się tabele w całości, nie tylko zawarte w niej dane. Przykład: DROP TABLE Produkty;

CREAT INDEX – tworzy indeks, aby można było wyszukać. CREATE INDEX PierwszyID X ON Towary(T_opis);

DROP INDEX – usuwanie indeksu.

Dodatkowe informacje związane z instrukcjami


  1. SET ID_FIRMY = ‘CHAM’ ---> ustaw (w kolumnie) ID_FIRMY łańcuch znaków ‘CHAM’

Połączenia pomiędzy tabelami baz danych


  1. Notacja skrócona SELECT D_name, T_opis, T_cena FROM Dostawcy, Towary WHERE Dostawcy.D_id = Towary.T_iddost ORDER BY D_name;

  2. pełny zapis SELECT Dostawcy.D_name, Towary.T_opis, Towary.T_cena FROM Dostawcy, Towary WHERE Dostawcy.D_id=Towary.T_iddost ORDER BY Dostawcy.D_name;

Samego połączenia relacją dokonuje klauzula WHERE poprzez użycie operatora =, który instrukcje system DBMS, że połączone powinny zostać kolumny zawierające w tabelach identyfikatory. Zawsze, gdy istnieje możliwość pojawienia się niejednoznaczności, należy stosować notację z kropką, podając pełne rozwinięcie nazw kolumn. Bez klauzuli WHERE każdy wiersz z jednej tabeli zostanie połączony z wierszem z innej tabeli tej samej bazy danych.

Wywołanie funkcji w SQL


Podobnie jak w C i C++ rozpoznanie wywołania funkcji w instrukcjach SQL jest stosunkowo prosta. Po nazwie funkcji zawsze musi występować para nawiasów okrągłych (np. FUN_NAZWA()). Nawet jeśli funkcja nie pobiera żadnych argumentów (nawias jest wtedy pusty), nawias ten musi zawsze wystąpić. Pisownia i zestaw dostępnych funkcji zależy silnie od wersji i producenta interpretatora serwera SQL.

Przykład: SELECT DATE() AS DATA, NOW() AS TERAZ, (DATE()-1) AS WCZORAJ;


Tworzenie tabel


Dla ANSII SQL

CREAT TABLE Dostawcy ( D_id CHAR(4) PRIMARY KET, D_name CHAR(100) NOT NULL, D_adres CHAR(100), );

Dla PARADOX IBDE

CREAT TABLE Dostawcy ( D_id CHAR(4), D_name CHAR(10), D_adres CHAR(100), PRIMARY KEY (D_id), NOT NULL (D_name);

Uogólniona składnia tej instrukcji SQL jest następująca: CREAT TABLE ( [opcjonalne ograniczniki], [opcjonalne ograniczniki], […]);

definicja dla tej kolumny (poszczególnych kolumn). Dla każdej tworzonej kolumny musimy określić jej typ danych.

[ograniczniki] [NULL|NOT NULL] dopuszczalny/lub nie brak zawartości. Jeśli pominiemy ten parametr, SQL przyjmie domyślnie NULL – dopuszczalny brak wpisu.


Typy danych


  1. Logical – dwustanowy przełącznik logiczny Tak/Nie

  2. Date/Time – data i czas mogą być dwoma różnymi typami danych

  3. Timestamp – bieżąca data/czas

  4. Money – pieniądze (zawsze dwie cyfry po przecinku

Rodzaje komentarzy


  1. /* komentarz */

  2. – komentarz

Obliczenia arytmetyczne


Aby obliczyć coś z dwóch pól można skorzystać z funkcji arytmetycznych (+, -, *, /).

Przykład: SELECT P_idprod, P_ile, P_cena*P_ile AS CENA FROM Pozycje WHERE P_numzlec=3;



Gdzie WHERE P_numzlec=3 jest GDZIE numer_zlecenia = 3

Połączenie wielu tabel za pomocą relacji


W razie łączenia nie dwóch, lecz większej liczby tabel, zasady tworzenia relacji pozostają nadal te same – najpierw należy wyliczyć na liście wszystkie tabele, a następnie określić relację(-e) dla każdej spośród par tych tabel.

Zastępcze nazwy całych tabel


  1. uproszczenie i skrócenie zapisu instrukcji SQL

  2. umożliwienie wielokrotnego stosowania tej samej tabeli w obrębie pojedynczej instrukcji SELECT

Przykład: SELECT DISTINCT K_name, K_miasto, K_piar FROM Klienci AS K, Zlecenia AS Z, Pozycje AS P WHERE K.K_id+Z.Z_idklienta AND Z.Z_numer=P.P_numzlec;

Zmiany nazw tabel


  1. w Oracle – RENAME

  2. w systemach SQL Server jest to procedura serwera o nazwie sp_rename

Inne sposoby dostępu do źródeł danych i baz danych


  1. OLE DB Providers

  2. ActiveX Data Objects

  3. Active Data Objects z aplikacją w Visual Basicu

Programy dzięki którym można tworzyć bazy danych SQL


  1. MS Query

  2. DataBase Explorer (DB Explorer)

  3. DataBase Desktop (DB Desktop)

  4. Query Analyzer


©absta.pl 2016
wyślij wiadomość

    Strona główna