Rola i zadania administratora. Rodzaje baz danych. Front

Transkrypt

Rola i zadania administratora. Rodzaje baz danych. Front
ADMINISTRATOR BAZ DANYCH
TO
CZŁOWIEK OGARNIAJĄCY POJĘCIA
●
●
●
●
●
●
●
●
●
●
●
Rola i zadania administratora.
Rodzaje baz danych.
Front-end i Back-end w bazach.
Modele aplikacji bazodanowych.
Instalacja i aktualizacja systemów bazodanowych.
Zarządzanie bazami danych.
Dobór platformy sprzętowej.
Środowiska testowe.
Relacyjne bazy danych.
Projektowanie baz danych. SQL.
Dokumentowanie struktur baz.
ROLA i ZADANIA ADMINISTRATORA BAZ DANYCH
●
●
●
●
●
●
●
instalacja silnika - instalacja poprawek,
łatek , aktualizacja
kopie bezpieczeństwa – scenariusze,
monitorowanie działania bazy
bezpieczeństwo, nieuprawniony dostęp,
problemy wydajnościowe,,
zakładanie użytkowników i przyznawanie
praw dostępu,
„papierologia”,
skalowanie,
replikacja .
ROLA i ZADANIA ADMINISTRATORA BAZ DANYCH
●
●
●
●
●
●
●
instalacja silnika - instalacja poprawek,
łatek , aktualizacja
kopie bezpieczeństwa – scenariusze,
monitorowanie działania bazy
bezpieczeństwo, nieuprawniony dostęp,
problemy wydajnościowe,,
zakładanie użytkowników i przyznawanie
praw dostępu,
„papierologia”,
skalowanie,
replikacja .
Rodzaje baz danych
●
●
●
●
●
●
●
●
●
●
●
●
●
Tekstowe i hypertekstowe.
Xbase.
Relacyjne.
Obiektowe.
Relacyjno - Obiektowe.
Multimedialne.
Scentralizowane.
Rozproszone.
Tajne.
Publiczne.
Przestrzenne dla GIS- Geographic Information System.
Temporalne.
Stumieniowe.

Front-end i Back-end w bazach.
Front-end – fasada – GUI.
●
●
●
●
Back-end – zaplecze – konsola.

Modele aplikacji bazodanowych.
BUDOWANE W OPARCIU O FRONT-END I BACK-AND
MODEL APLIKACJI 1W
MODEL APLIKACJI 2W
MODEL APLIKACJI 3W
MODEL APLIKACJI opartej o wzorzec projektowy MVC
(WKM)
MODEL APLIKACJI KLASY ENTERPRISE
( Microsoft )
MODEL APLIKACJI KLASY ENTERPRISE
MODEL APLIKACJI
MODEL APLIKACJI 4W

●
●
Instalacja i aktualizacja systemów
bazodanowych.
PROCES INSTALACJI JEST SZCZEGÓLOWO OPISANY
W DOKUMENTACJI PRODUKTU
NA PODSTAWIE DOKUMENTACJI UWZGLĘDNIAMY:
- dobór zasobów sprzętowych,
- środków bezpieczeństwa,
- aktualizacji,
- wprowadzania łatek.

Zarządzanie bazami danych.
Zarządzanie bazą jest ściśle związane z oprogramowaniem
systemowym Systemu Zarządzania Bazami Danych.
TE SAME OPERACJE
(czasami z pewnymi ograniczeniami)
SĄ DOSTĘPNE Z POZIOMU
BACK-ENDU
i
FRONT-END

Zarządzanie bazami danych.
Tworzenie struktur baz danych.
Optymalizacja struktur baz danych.
Zarządzanie indeksacją.
Zarządzanie replikacją.
Korekta BAZ.
Kopie BAZ.
●
●
●
ORAZ
SZERG CZYNNOŚCI ZAPEWNIAJĄCYCH UTRZYMANIE
BAZ W DOBREJ KONDYCJI
ZARZĄDZANIE SYSTEMEM BAZODANOWYM
ZARZĄDZANIE BAZAMI DANYCH
●
●
ZARZĄDZANIE SERWEREM
●
●
ZARZĄDZANIE APLIKACJAMI BAZODANOWYMI
●
●
KONFIGURACJA USŁUG SIECIOWYCH

Dobór platformy sprzętowej.
PIERWSZA WERSJA
NA PODSTAWIEDOKUMENTACJI PRODUKTU
●
●
DRUGA WERSJA
PO TESTACH I OPTYMALIZACJI
●
●
KOLEJNE WERSJE
W PRZYPADKU UAKTUALNIENIA WERSJI MOTORU BAZ
NA PODSTAWIE DOKUMENTACJI PRODUKTU

Środowiska testowe.
NIE MOŻNA TESTOWAĆ NOWYCH STRUKTUR BAZ,
SYTEMÓW I APLIKACJ
I NA TYCH SAMYCH ZASOBACH
CO PRACUJĄCE SYSTEMY
ŚRODOWISKA SPRZĘTOWO-SOFTWEROWE
DEDYKOWANE
ŚRODOWISKA WIRTUALZOWANE

Relacyjne bazy danych.
W bazach relacyjnych wiele tablic danych może
współpracować ze sobą - są między sobą
powiązane.
POZOSTAJĄ MIĘDZY SOBĄ W PEWNYCH
RELACJACH
Bazy relacyjne posiadają wewnętrzne języki
programowania.
SŁOWNICZEK
SQL
PASCAL
MATEMATYKA
DIAGRAMY ERD
BAZA
KATALOG
BAZA
RELACJE ENCJI
TABELA
PLIK
RELACJA
ENCJA
WIERSZ
REKORD
KROTKA
ATRYBUT
KOLUMNA
POLE
ATRYBUT
„DZIEDZINA”

Projektowanie baz danych. SQL.
Cytując C.J.Date'a
Zasady projektowania baz danych
to nic więcej
niż sformalizowany zdrowy rozsądek.

Projektowanie baz danych. SQL.
Relacja abstrakcyjne pojęcie matematyczne opisujące
podzbiór iloczynu kartezjańskiego pewnych zbiorów
danych (tzw. domen) reprezentowany przez zbiór
krotek.
Reprezentacją relacji w relacyjnych bazach danych
(termin z nazwy bd) jest dwuwymiarowa tablica, złożona
z kolumn i wierszy.

Projektowanie baz danych. SQL.
Relacyjna bd (def. matematyczna) oparta na mat. pojęciu
tzn. baza danych złożona z relacji (def „na chłopski rozum”)
Relacyjna bd składa się z tabel, kolumn, wierszy i złączeń
(powiązań wierszy) (def. formalna) taka która spełnia postulaty
Coda

Projektowanie baz danych. SQL.
Tablica (plik,baza) reprezentuje relację, składa się z
kolumn (inf. tzw pola) i wierszy (inf. tzw. rekordy),
Wiersz
reprezentuje krotki relacji, (inf. tzw. rekordy), ilość
w tablicy dowolna
Kolumna
reprezentuje atrybuty, cechy relacji, ilość kolumn
jest stała dla relacji, przyjmują wartości określonego
typu, kolejność kolumn nieistotna, wartości atomowe

Projektowanie baz danych. SQL.
Klucz główny kolumna lub kombinacja kolumn, których
wartości jednoznacznie identyfikują wiersze w tablicy

Projektowanie baz danych. SQL.
Klucz obcy kolumna lub kombinacja kolumn, których wartości
określają klucz główny innej tablicy (pozostającej w związku), czyli
reprezentują związek 1:N (1 do wielu)

Projektowanie baz danych. SQL.
Indeks
używany w celu przyśpieszenia dostępu do
danych, zawiera posortowana kopie zbioru wartości
kolumny/kolumn danej tabeli. Z każdą wartością indeksu
jest związana specjalna wartość wskazująca, gdzie na
dysku może być wiersz, z którego ta wartość pochodzi.

Projektowanie baz danych. SQL.
NORMALIZACJA

Projektowanie baz danych. SQL.
PRZEPROWADZENIE NORMALIZACJI
STRUKTUR
BAZ DANYCH ZAPEWNIA
Zidentyfikowanie wzajemnych zależności pomiędzy danymi
●Rozwiązanie niejednoznaczności
●Zgrupowanie danych w optymalnych (logicznie) tablicach
●Stworzenie podstaw do dzielenia danych przez różne procesy
●Zdefiniowanie danych elementarnych
●Zbudowanie
łatwego do zarządzania rozszerzania modelu
danych
●

Projektowanie baz danych. SQL.
ANOMALIE
w przypadku źle zaprojektowanej bazy.
Anomalia dołączania - musimy wpisywać
wszystko albo nic.
Anomalia aktualizacji – możemy przeoczyć
wiersze do uaktualnienia.
Anomalia usuwania – przy okazji usuwania
jednej informacji znika druga.

Projektowanie baz danych. SQL.
Tablica, aby była relacją, musi
posiadać cechy:
żadne dwa wiersze nie mogą być dokładnie takie
same
● uporządkowanie wierszy nie ma znaczenia
● uporządkowanie kolumn nie ma znaczenia
● każda kolumna musi mieć unikalną nazwę
●

Projektowanie baz danych. SQL.
KLUCZ
musi mieć unikalne wartości w relacji
nie może się powtarzać
w tym samym wierszu lepiej wybrać
nie-tekstowy klucz
lepsze są klucze krótkie i stałej długości

Projektowanie baz danych. SQL.
Kandydaci na klucze :
jest to dowolna kolumna lub kombinacja kolumn,
których zawartość może być użyta dla
identyfikacji wierszy tablicy.
każdy funkcyjnie determinujący element staje się
kluczem kandydującym relacji

Projektowanie baz danych. SQL.
POSTULATY CODD'A
1. Postulat informacyjny – dane są reprezentowane
jedynie poprzez wartości atrybutów w wierszach tabel,
2. Postulat (gwarantowanego) dostępu – każda wartość
w bazie danych jest dostępna poprzez podanie nazwy
tabeli, atrybutu oraz wartości klucza podstawowego,
3. Postulat dotyczący wartości NULL – dostępna jest
specjalna wartość NULL dla reprezentacji wartości
nieokreślonej jak i nieadekwatnej, inna od wszystkich
i podlegająca przetwarzaniu,

Projektowanie baz danych. SQL.
4. Postulat dotyczący katalogu – informacje o obiektach bazy danych
tworzących schemat bazy danych są na poziomie logicznym
zgrupowane w tabele i dostępne w taki sam sposób jak każde inne
dane.
5. Postulat języka danych – system musi dostarczać pełnego języka
przetwarzania danych, który:
• charakteryzuje się liniową składnią,
• może być używany zarówno w trybie interaktywnym, jak i w obrębie
programów aplikacyjnych,
• obsługuje operacje definiowania danych (łącznie z definiowaniem
perspektyw),operacje manipulowania danymi (aktualizację, także
wyszukiwanie), ograniczenia związane z bezpieczeństwem
i integralnością oraz operacje zarządzania transakcjami (rozpoczynanie,
zapis zmian i ponowny przebieg)

Projektowanie baz danych. SQL.
Perspektywa (widok)
to logiczna struktura, wirtualna tabela wyliczana w locie,
określona przez zapytanie SQL, umożliwia dostęp do podzbioru
kolumn i wierszy tabeli lub tabel.
Przy pobieraniu wyników do perspektywy odwołujemy się identycznie
jak do tabeli. Operacje wstawiania, modyfikowania oraz usuwania
rekordów nie zawsze są możliwe ,
a w przypadku niektórych SBD perspektywa służy tylko i wyłącznie do
pobierania wyników i ograniczania dostępu do danych.
(http://pl.wikipedia.org/wiki/Perspektywa_(bazy_danych))

Projektowanie baz danych. SQL.
6. Postulat modyfikowalności perspektyw – system musi
umożliwiać modyfikowanie perspektyw, o ile jest ono
(modyfikowanie) semantycznie realizowane,
7. Postulat modyfikowalności danych – system musi
umożliwiać operacje modyfikacji danych, musi
obsługiwać operatory INSERT, UPDATE oraz DELETE,
8. Postulat fizycznej niezależności danych – zmiany
fizycznej reprezentacji danych i organizacji dostępu nie
wpływają na aplikacje,

Projektowanie baz danych. SQL.
9. Postulat
logicznej niezależności danych – zmiany wartości w
tabelach nie wpływają na aplikacje,
10. Postulat
niezależności więzów spójności (niezależność
integralnościowa) – więzy spójności są definiowane w bazie i nie
zależą od aplikacji,
11. Postulat
niezależności dystrybucyjnej – działanie aplikacji nie
zależy od modyfikacji i dystrybucji bazy,

Projektowanie baz danych. SQL.
12. Postulat bezpieczeństwa względem operacji niskiego
poziomu – operacje niskiego poziomu nie mogą
naruszać modelu relacyjnego i więzów spójności.
Reguła nieprowadzenia "działalności wywrotowej":
jeśli system jest wyposażony w interfejs niskiego
poziomu (operacje na pojedynczych rekordach),
nie może być użyty do prowadzenia
działalności wywrotowej (np. omijania zabezpieczeń
relacyjnych lub ograniczeń integralnościowych)

Projektowanie baz danych. SQL.
Tabela nieznormalizowana:
IND
●
EKS
STU
-DENT
23455 Kowals
ki
Przedmiot Przedmiot Przedmiot Opie
Obieralny Obieralny Obieralny -kun
1
2
3
POK
IT
SK1
IT
43211
Nowy
WWW
32521
Bobik
IT
WWW
Drabik
1
Gabon
2
Kuc
3

Projektowanie baz danych. SQL.
Pierwsza postać normalna
Tablica (relacja) spełnia warunek 1PN:
Wszystkie wartości kolumn muszą być
elementarne (atomowe) („niepodzielne”)
Nie dopuszczamy do sytuacji kiedy w tablicy
przechowujemy listy wartości.
Projektowanie baz danych. SQL.
1 PN klucz główny INDEKS + Przedmiot Obieralny

INDEKS STUDENT
OPIEKUN
23455
23455
Kowalski
Kowalski
Drabik
Drabik
Przedmiot
Obieralny
SK1
IT
23455
43211
Kowalski
Nowy
Drabik
Gabon
WWW
IT
1
2
43211
32521
Nowy
Bobik
Gabon
Kuc
WWW
IT
2
3
POK
1
1

Projektowanie baz danych. SQL.
Druga postać normalna
Tablica (relacja) jest w 1PN i każda kolumna
nie należąca do żadnego klucza potencjalnego jest
całkowicie zależna od klucza głównego.
Nie dopuszczamy do sytuacji kiedy w tablicy przechowujemy
informację dotyczące więcej niż jednej „rzeczy”,
a „rzecz” ta jest identyfikowana przez klucz główny.

INDEKS
Projektowanie baz danych. SQL.
2PN
STUDENT
OPIEKUN
POK
23455
Kowalski
Drabik
1
43211
Nowy
Gabon
2
32521
Bobik
Kuc
3
INDEKS
PRZEDMIOT OBIERALNY
23455
23455
23455
32521
43211
43211
IT
SK1
WWW
IT
IT
WWW

Projektowanie baz danych. SQL.
Trzecia postać normalna
Tablica (relacja) jest w 3PN gdy jest w 2PN
i wszystkie kolumny nie należące do żadnego klucza potencjalnego
są wzajemnie niezależne.
Nie dopuszczamy do sytuacji kiedy w tablicy pojawiają się zależności
gdyż utrudnia to aktualizację usuwanie lub dodawanie danych do bazy.
Oczywistym przykładem jest kolumna wyliczeniowa.
„Inaczej mówiąc, wszystkie niekluczowe kolumny są określane
kluczem,całym kluczem i tylko kluczem, …tak nam dopomóż Codd”

INDEKS
Projektowanie baz danych. SQL.
3PN
STUDENT
OPIEKUN
23455
Kowalski
Drabik
43211
Nowy
Gabon
32521
Bobik
Kuc
INDEKS
PRZEDMIOT
OBIERALNY
23455
SK1
OPIEKUN
23455
IT
Drabik
1
23455
WWW
Gabon
2
43211
IT
Kuc
3
43211
WWW
32521
IT
POK

Projektowanie baz danych. SQL.
DENORMALIZACJA
W większości przypadków po znormalizowaniu
bazy danych
przychodzi kolej na wykonania.
Odwrotnej operacji do normalizacji
Tzw. ( denormalizacji ),
polegającej na połączeniu niektórych
znormalizowanych tabel,
w celu przyspieszenia dostępu do
pewnych danych.
Elementy diagramu ERD
Generalnie, obiekty na diagramie ERD
odpowiadają znormalizowanym
magazynom danych na diagramie DFD.
Podstawowe komponenty diagramu ERD
• encje
• relacje
• wskaźniki supertyp/podtyp
Encje
Encja jest reprezentowana przez kolekcję (zbiór) obiektów
(rzeczy) realnego świata, w którym to zbiorze każde
wystąpienie obiektu ma następującą charakterystykę:
¨każde wystąpienie musi być zdefiniowane unikalnie,
¨kade z nich pełni niezbędną rolę w budowanym systemie, to
znaczy system nie może działać bez dostępu do wystąpień
encji,
¨każde wystąpienie może być opisane przez jeden lub więcej
elementów (atrybutów, z których każdy ma swoją dziedzinę),
¨te same atrybuty opisują każde wystąpienie tego samego
typu obiektu.
Atrybuty encji
Klucz główny (powinien):
●Unikalny
●Minimalny
●Różny od zera.
Sztuczne klucze główne
Alternatywne klucze
Klucze obce – np. z innej tablicy
Encja „normalna”,
jest reprezentowana przez prostokąt i ma
nazwę, która jest rzeczownikiem w
liczbie pojedynczej. Oznacza dowolna
znaczacą rzecz, o której informacja powinna
być znana albo utrzymywana. Encjami mogą
być fizyczne istniejące pojęcia.
Encja słaba
jest reprezentowana przez prostokąt narysowany podwójną
linią i jest obiektem, który może istnieć tylko wtedy, gdy jest
podwiązany / jest w relacji/ do innych obiektów. Słabe obiekty
mogą zależeć tylko od wystąpienia obiektu od którego zależą
i dlatego muszą być powiązane relacją 1:1 lub 1:m w
stosunku do tego obiektu.
Słabymi encjami są również obiekty, które nie mają własnych
atrybutów kluczowych i dlatego są zależne od innych
obiektów.
Encja łącząca (asocjacyjna)
reprezentuje przypadek, gdy dwa obiekty są
związane relacją, natomiast trzeci obiekt
(obiekt łączący ) przechowuje informacje o
relacji pomiędzy tymi dwoma obiektami.
Obiekty asocjacyjne są często używane do
projekcji relacji n:m łączącej dwa obiekty na
dwie relacje 1:m i 1:n
Relacje
Relacja jest zawsze powiązaniem między
dokładnie dwiema nazwanymi
encjami. W szczególnym przypadku może być
powiązaniem tej samej
encji ze sobą.
Każdy związek ma dwa końce, z których każdy
ma przypisaną:
- nazwę,
- stopień /liczebność, krotność/ (jak wiele),
- opcjonalność (opcjonalny czy wymagany).
Rodzaje relacji (krotność)

Dokumentowanie baz danych.
Opisowa
Opisowa matematyczna
Diagramowa
Diagramy ERD
Diagramy UML
Entity Relationship Diagrams — ERD
Model Związków Encji
ERD jest konceptualną reprezentacją
otaczającego świata, składającego się z
obiektów i relacji pomiędzy nimi.
ERD definiuje informacje (dane),
którymi system zarządza, które wytwarza,
Usuwa,
a także relacjami które utrzymywane są
przez baz danych.
Cytując C.J.Date'a
PROJEKTOWANIE BAZ DANCH
TO BARDZIEJ
SZTUKA NIŻ NAUKA

Projektowanie baz danych. SQL.
Grupy poleceń języka SQL
• DML (Data Manipulation Language)
select insert update delete
• DDL (Data Definition Language)
create alter drop
• DCL (Data Control Language)
commit rollback

Projektowanie baz danych. SQL.
Zasady składniowe poleceń SQL
• Polecenie SQL może być zapisane w pojedynczym wierszu lub w
kilku wierszach.
• W każdym poleceniu można wyróżnić tzw. klauzule
rozpoczynające się słowem kluczowym.
• Polecenia SQL mogą być pisane zarówno dużymi jak i małymi
literami.
• Polecenie SQL kończymy średnikiem.
Składnia:
CREATE DATABASE
CREATE DATABASE [IF NOT EXISTS] nazwa [opcje]
opcje:
[DEFAULT] CHARACTER SET [=] charset_name
np:mysql> CREATE DATABASE tabaza;
Tworzy bazę danych o nazwie tabaza
Aby ją użyć zastosujemy:
mysql> USE tabaza;
Aby jej się pozbyć użyjemy:
mysql> DROP tabaza;
CREATE TABLE
Składnia:
CREATE TABLE nazwa_tabeli (nazwa_pola1
właściwości_pola1 , nazwa_pola2,
właściwości_pola2 , ...)
Nazwa_tabeli nie może ona zawierać spacji,
polskich liter ani innych znaków specjalnych. To
samo dotyczy nazwy_pola. Właściwość_pola to
dane które określają pole.
Np.:
mysql> CREATE TABLE users (id INT NOT NULL
AUTO_INCREMENT , login VARCHAR(32) , password
VARCHAR(32) );
CREATE INDEX
Składnia:
CREATE [opcje] INDEX nazwa_indeksu[typ]ON nazwa_tabeli
(nazwa_kolumny_do_poindeksowania,...);
np.:
mysql> CREATE INDEX users_id ON users (id);
Tworzy indeks „user_id” dla tabeli „users” na podstawie
pola ”id”.
Pozbycie się index zapewnia:
DROP INDEX nazwa_indeksu;
INSERT
Składnia:
INSERT INTO nazwa_tabeli (pole1, pole2) VALUES
('wartość1' , 'wartość2' , ...);
Wstawia dane do tabeli nazwa_tabeli
Np:
mysql>INSERT INTO users ( login, password)
VALUES ( 'miki' , '1234');
UWAGA: id – jest automatycznie inkrementowane
UPDATE
Składnia:
UPDATE nazwa_tabeli SET nazwa_pola='wartość'
Zmienia wartość pola w tabeli.
Np:
Dla tabeli users wyglądało by to następująco
mysql>UPDATE users SET login='laki'
DELETE
Składnia:
DELETE FROM nazwa_tabeli WHERE nazwa_pola =
'wartość'
Kasowanie danych w tabeli nazwa_tabeli dla pola
nazwa_pola o wartości „wartość”.
Np:
Mysql> DELETE FROM user WHERE login='laki'
DLA ZAPOMINALSKICH
Dodajemy kolumnę:
mysql> CREATE TABLE t1 ( c1 INT NOT NULL
AUTO_INCREMENT PRIMARY KEY );
mysql> ALTER TABLE t1
ADD COLUMN c2 INT,
ADD COLUMN c3 INT;
DLA ZAPOMINALSKICH
Dodanie indeksu:
ALTER TABLE t2 ADD INDEX (d);
Dodanie autoinkrementacji:
ALTER TABLE t2 AUTO_INCREMENT = wartość;
Dodanie klucza obcego:
ALTER TABLE tbl_name ADD FOREIGN KEY
fk_symbol;
Pozbycie się klucza obcego:
ALTER TABLE tbl_name DROP FOREIGN KEY
fk_symbol;
ZAPYTANIA - SELECT
Składnia:
SELECT pola FROM tabla
[WHERE spełniające_warunek];
„Wyłuskuje” selektywnie dane z tabeli
np. (wszystkie pola):
mysql>SELECT * FROM users WHERE users='laki';
np. (pole password):
mysql>SELECT password FROM users WHERE login='laki';
np. (wszystkie dane):
mysql>SELECT * FROM users
Podstawy SQL
Wyrażenia arytmetyczne
Wyrażenia arytmetyczne mogą zawierać nazwy
atrybutów, stałe numeryczne, oraz operatory
arytmetyczne:
+ operator dodawania,
- operator odejmowania,
* operator mnożenia,
/ operator dzielenia.
Operatory * i / mają wyższy priorytet niż + i -
Podstawy SQL
Operatory matematyczne
= równość,
!= nierówność,
> większość,
>= większość lub równość,
< mniejszość,
<= mniejszość lub równość.
Podstawy SQL
Operator konkatenacji ||
Operator konkatenacji || umożliwia łączenie
wyświetlanych wartości różnych kolumn w
pojedyncze łańcuchy znaków. Połączone wartości
kolumn są wyświetlane w jednej kolumnie.
np.:
select id||login users from users;
Podstawy SQL
Przykładowe typy danych (mogą się nieco różnić w zależności
od implementacji ):
NUMBER
(1*10^-130... 9.99..9*10^125
-1*10^-130... -9.99..9*10^125)
CHAR
(1 ... 255 B)
VARCHAR (1 ... 2000 B)
DATE
wiek (tj. numer stulecia),
rok, miesiąc, dzień, godzina,minuty,sekundy
BLOB bardzo duży obiekt danych binarnych
CBLOB bardzo duży blok danych tekstowych
Podstawy SQL
Klauzula order by
• Umożliwia sortowanie wyników;
• Może wystąpić wyłącznie jako ostatnia klauzula
polecenia select.
• Kolejność sortowania - słowo kluczowe desc
(ang.descending), lub asc (ang. ascending);
Podstawy SQL
Klauzula where
Umożliwia wybór krotek spełniających określone
warunki.
W klauzuli where można porównywać wartości
atrybutów, literały, wyrażenia oraz wartości funkcji.
Po słowie kluczowym where są oczekiwane trzy
elementy:
1. nazwa atrybutu,
2. operator porównania (matematyczne, logiczne,
sql)
3. nazwa atrybutu, stała lub lista wartości.
Operatory SQL
between ... and …
np.:select id,login from users Where id
between 5 and 10
Zostaną przedstawione w postaci tabelarycznej
kolumny id,login dla wierszy dla których id mieści
się w zakresie liczb od 5 do 10 (<5,10>).
In
np.:select id,login from users Where id in (5,10)
Wyświetli wiersze dla wartości z listy.
Lista może zawierać łańcuchy znakowe lub daty,
pod warunkiem ich ograniczenia znakami
apostrofów.
Operatory SQL
Like
np.:select id,login from users Where login
Like 'K%'
Wyświetli pozycje w których login zaczyna się od
„K”
is null
np.:select id,login from users Where login
Is null
Wyświetli pozycje w których login jest „pusty”.
Operatory SQL
not between ... and wartość spoza przedziału,
not in wartość różna od każdego z elementów
listy,
not like wartość niezgodna ze wzorcem,
is not null wartość niepusta
Operatory:
And
np.:select id,login from users Where id >10 and
login like „K%”
or
np.:select id,login from users Where id >10 or
login like „K%”
Funkcje grupowe
• operują na podzbiorach wierszy tabeli,
nazywanych grupami (ang. groups);
• wyznaczają wartość operując na kolumnach
wielu wierszy;
• funkcje (opcje ([distinct|all]atr)):
avg
count
max
min
Sum
●Klauzula Group by
np.:select etat, avg(placa) from pracownicy
where etat != 'DYREKTOR' group by etat;
Funkcje grupowe
Klauzula having
Np.:W celu wyświetlenia grup etatowych, w
których maksymalna płaca przekracza 2000
wprowadzamy polecenie:
select etat, max(placa) from pracownicy
having max(placa) > 2000 group by etat;
Podsumowanie
Reguły stosowania operatorów zbiorowych:
1.W łączonych operatorami zbiorowymi
klauzulach select musi wystąpić ta sama liczba
atrybutów.
2.Typy odpowiednich atrybutów różnych klauzul
select muszą być zgodne.
3.Duplikaty są eliminowane automatycznie. Nie
ma potrzeby stosowania słowa kluczowego
distinct.
Podsumowanie
4.W wyniku zapytania pojawiają się nazwy
atrybutów wyłącznie z pierwszej klauzuli select.
5.Klauzula order by może być użyta tylko jako
ostatnia klauzula zapytania.
6.W klauzuli order by nie stosujemy nazw
atrybutów lecz ich numery porządkowe.
7.Polecenia select są wykonywane w kolejności
ich wystąpienia (od góry do dołu).
8.Nawiasy umożliwiają zmianę domyślnej
kolejności wykonywania łączonych operatorami
zbiorowymi poleceń select.
Podzapytania
Podzapytanie jest poleceniem select
zagnieżdżonym w innym poleceniu select.
Ogólny format zagnieżdżania zapytań jest
następujący:
select col1, col2, ...from tabela
where col =(select col from tabela where
warunek);
Podzapytania
Podzapytania wyznaczające pojedyncze
wiersze
select nazwisko, etat, placa from pracownicy
where placa = (select min(placa) from
pracownicy);
Podzapytania wyznaczające wiele wierszy
select nazwisko, placa, id_zesp
from pracownicy where placa in
(select min(placa_pod) from pracownicy
group by id_zesp);
Podzapytania
Operator any:
select nazwisko, placa, etat,id_zesp
from pracownicy where placa >any(select distinct
placa from pracownicy where id_zesp = 30)
order by placa desc;
Operator all:
select nazwisko, placa, etat,id_zesp from
pracownic where placa> all (select
distinct placa from pracownicy
where id_zesp = 30) order by placa desc;
Podzapytania
Reguły wielopoziomowego zagnieżdżania zapytań
• Podzapytanie ograniczamy nawiasami i zagnieżdżamy po
prawej stronie warunku zapytania zewnętrznego;
• W podzapytaniu nie używamy klauzuli order by;
• Klauzula order by może wystąpić wyłącznie jako ostatnia
klauzula najbardziej zewnętrznego zapytania;
• Liczba oraz typy kolumn występujących w klauzuli select
podzapytania musi być zgodna z liczbą i typem kolumn
użytych w warunku zapytania zewnętrznego, tj. zapytania
wyższego poziomu zagnieżdżenia;
Podzapytania
Reguły wielopoziomowego zagnieżdżania zapytań
•W podzapytaniu można używać operatorów zbiorowych;
•Opisane wyżej podzapytania są zawsze wykonywane w kolejności
od najgłębiej zagnieżdżonego do najbardziej zewnętrznego.
• Poza operatorami any i all w warunkach zapytań zewnętrznych
można stosować dowolne matematyczne oraz operatory sql.
Podzapytania skojarzone
• wykonywane dla każdego wiersza przeglądanego przez
zapytanie zewnętrzne;
• operują na wartościach pól (kolumn) przekazanych
przez zapytanie zewnętrzne;
• zmiana kolejności wykonywania zapytań skojarzonych, w
stosunku do nieskojarzonych;
operator exists sprawdzenie czy podzapytanie wyznacza
jakąkolwiek wartość
operator not exists wręcz przeciwnie
Podzapytania skojarzone
W celu odszukania pracowników, którym
służbowo podlegają inni pracownicy
wprowadzamy polecenie:
select id_prac, nazwisko, etat, id_zesp from
pracownicy where exists
(select id_prac from pracownicy
where id_szefa = p.id_prac);
Transakcje
Transakcyjna obsługa tabeli.
>START TRANSACTION;
>instrukcja SQL
>COMMIT;
Cofanie transakcji.
>ROLLBACK;
(tabela powraca do stanu przed
wykonaniem instrukcji sql)
PHP + SQL
<?php
$username = "your_name";
$password = "your_password";
$hostname = "localhost";
//connection to the database
$dbhandle = mysql_connect($hostname,
$username, $password)
or die("Unable to connect to MySQL");
echo "Connected to MySQL<br>";
?>
PHP + SQL
<?php
//select a database to work with
$selected = mysql_select_db("examples",
$dbhandle)
or die("Could not select examples");
?>
JAVA + SQL
public static void main(String[] args) {
Connection con = null;
PreparedStatement pst = null;
ResultSet rs = null;
String url = "jdbc:mysql://localhost:3306/testdb";
String user = "testuser";
String password = "test623";
...
JAVA + SQL
try {
con = DriverManager.getConnection(url, user, password);
pst = con.prepareStatement("SELECT * FROM Authors");
rs = pst.executeQuery();
while (rs.next()) {
System.out.print(rs.getInt(1));
System.out.print(": ");
System.out.println(rs.getString(2));
}
●
●
●
C + SQL
if (mysql_real_connect(con, "localhost", "root",
"root_pswd",
NULL, 0, NULL, 0) == NULL)
{
fprintf(stderr, "%s\n", mysql_error(con));
mysql_close(con);
exit(1);
}
C + SQL
if (mysql_query(con, "SELECT * FROM Cars"))
{
finish_with_error(con);
}
int num_fields = mysql_num_fields(result);
MYSQL_ROW row;
while ((row = mysql_fetch_row(result)))
{
for(int i = 0; i < num_fields; i++)
{
printf("%s ", row[i] ? row[i] : "NULL");
}
printf("\n");
}

Podobne dokumenty