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"); }