POLITECHNIKA WROCŁAWSKA WROCŁAWSKIE CENTRUM SIECIOWO-SUPERKOMPUTEROWE. Relacyjne Bazy Danych



Podobne dokumenty
Organizacja zajęć BAZY DANYCH II WYKŁAD 1. Plan wykładu. SZBD Oracle

Krzysztof Kadowski. PL-E3579, PL-EA0312,

Wykład 2. SQL 1 Structured Query Lenguage

Systemy baz danych. mgr inż. Sylwia Glińska

Wprowadzenie do BD Operacje na bazie i tabelach Co poza zapytaniami? Algebra relacji. Bazy Danych i Systemy informacyjne Wykład 2.

Bazy danych. Bazy danych. Podstawy języka SQL. Dr inż. Paweł Kasprowski.

strukturalny język zapytań używany do tworzenia i modyfikowania baz danych oraz do umieszczania i pobierania danych z baz danych

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

Bazy danych. Dr inż. Paweł Kasprowski

Laboratorium nr 1. Temat: Wprowadzenie do MySQL-a

SQL 4 Structured Query Lenguage

Projektowanie systemów baz danych

Systemy GIS Tworzenie zapytań w bazach danych

Podstawowe informacje o bazach danych. Technologie Informacyjne

77. Modelowanie bazy danych rodzaje połączeń relacyjnych, pojęcie klucza obcego.

Bazy danych - wykład wstępny

Język SQL, zajęcia nr 1

Bazy Danych i Usługi Sieciowe

Bazy danych i usługi sieciowe

SQL - DDL. 1 Tabele systemowe. 2 Typy danych

Podstawy języka SQL. SQL Structured Query Languagestrukturalny

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

Bazy danych 7. SQL podstawy

Ogólny plan przedmiotu. Strony WWW. Literatura BAZY DANYCH. Materiały do wykładu:

WPROWADZENIE DO BAZ DANYCH

Blaski i cienie wyzwalaczy w relacyjnych bazach danych. Mgr inż. Andrzej Ptasznik

3 Przygotowali: mgr inż. Barbara Łukawska, mgr inż. Maciej Lasota

Bazy danych. Polecenia SQL

Relacyjne bazy danych. Podstawy SQL

Paweł Rajba

Bazy danych. Wykład IV SQL - wprowadzenie. Copyrights by Arkadiusz Rzucidło 1

Języki programowania wysokiego poziomu. PHP cz.4. Bazy danych

Bazy danych. Bazy danych. Zapytania SELECT. Dr inż. Paweł Kasprowski.

Ref. 7 - Język SQL - polecenia DDL i DML

Wykład 8. SQL praca z tabelami 5

Przestrzenne bazy danych Podstawy języka SQL

Relacyjne bazy danych. Podstawy SQL

Aby uruchomić program klienta i połączyć się z serwerem, należy komendę:

Wprowadzenie do baz danych

Zarządzanie systemami informatycznymi. Zarządzanie internetową bazą danych MySQL

Zaawansowane bazy danych i hurtownie danych studia zaoczne II stopnia, sem. I

Bazy danych Wykład zerowy. P. F. Góra

Wyzwalacze (triggery) Przykład

P o d s t a w y j ę z y k a S Q L

PLAN WYKŁADU BAZY DANYCH PODSTAWOWE KWESTIE BEZPIECZEŃSTWA OGRANICZENIA DOSTĘPU DO DANYCH

Oracle11g: Wprowadzenie do SQL

Baza danych. Modele danych

Wykład 2. Relacyjny model danych

SQL Server i T-SQL w mgnieniu oka : opanuj język zapytań w 10 minut dziennie / Ben Forta. Gliwice, Spis treści

15. Funkcje i procedury składowane PL/SQL

E.14 Bazy Danych cz. 18 SQL Funkcje, procedury składowane i wyzwalacze

Programowanie MSQL. show databases; - pokazanie jakie bazy danych są dostępne na koncie

Widok Connections po utworzeniu połączenia. Obszar roboczy

T-SQL dla każdego / Alison Balter. Gliwice, cop Spis treści. O autorce 11. Dedykacja 12. Podziękowania 12. Wstęp 15

BAZY DANYCH wprowadzenie do języka SQL. Opracował: dr inż. Piotr Suchomski

Przykłady najlepiej wykonywać od razu na bazie i eksperymentować z nimi.

Podstawy języka SQL. standardy SQL formułowanie zapytań operacje na strukturach danych manipulowanie danymi. Bazy danych s.5-1

Kurs. Podstawy MySQL

Bazy danych 5. Samozłaczenie SQL podstawy

UPDATE Studenci SET Rok = Rok + 1 WHERE Rodzaj_studiow =' INŻ_ST'; UPDATE Studenci SET Rok = Rok 1 WHERE Nr_albumu IN ( '111345','100678');

PODSTAWY BAZ DANYCH 13. PL/SQL

Składowane procedury i funkcje

CREATE USER

Wykład 5 funkcje i procedury pamiętane widoki (perspektywy) wyzwalacze

Systemy baz danych w zarządzaniu przedsiębiorstwem. W poszukiwaniu rozwiązania problemu, najbardziej pomocna jest znajomość odpowiedzi

Autor: Joanna Karwowska

Definicja bazy danych TECHNOLOGIE BAZ DANYCH. System zarządzania bazą danych (SZBD) Oczekiwania wobec SZBD. Oczekiwania wobec SZBD c.d.

Podstawowe pakiety komputerowe wykorzystywane w zarządzaniu przedsiębiorstwem. dr Jakub Boratyński. pok. A38

Bazy Danych - Instrukcja do Ćwiczenia laboratoryjnego nr 8

Trigger jest obiektem związanym z tablicą, który aktywuje się gdy do tablicy następuje odpowiednie zapytanie.

Aspekty aktywne baz danych

Podyplomowe Studium Programowania i Baz Danych

NARZĘDZIA WIZUALIZACJI

SQL w 24 godziny / Ryan Stephens, Arie D. Jones, Ron Plew. Warszawa, cop Spis treści

Programowanie w SQL procedury i funkcje. UWAGA: Proszę nie zapominać o prefiksowaniu nazw obiektów ciągiem [OLIMP\{nr indeksu}] Funkcje użytkownika

Język SQL podstawy zapytań

Technologia informacyjna

Wprowadzenie do baz danych

Zaawansowane bazy danych i hurtownie danych studia niestacjonarne II stopnia, sem. I

CREATE DATABASE ksiegarnia_internetowa DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

Szkolenie Oracle SQL podstawy. Terminy lutego 2010 First Minute! 1100zł!

2017/2018 WGGiOS AGH. LibreOffice Base

SZKOLENIE: Administrator baz danych. Cel szkolenia

Internetowe bazy danych

Wyzwalacz - procedura wyzwalana, składowana fizycznie w bazie, uruchamiana automatycznie po nastąpieniu określonego w definicji zdarzenia

SQL (ang. Structured Query Language)

Laboratorium nr 4. Temat: SQL część II. Polecenia DML

Przykład 3 Zdefiniuj w bazie danych hurtownia_nazwisko przykładową funkcję użytkownika fn_rok;

Wprowadzenie do projektowania i wykorzystania baz danych Relacje

040 STRUCTURED QUERY LANGUAGE. Prof. dr hab. Marek Wisła

DECLARE <nazwa_zmiennej> typ [(<rozmiar> )] [ NOT NULL ] [ { := DEFAULT } <wartość> ];

DECLARE VARIABLE zmienna1 typ danych; BEGIN

Tworzenie tabel. Bazy danych - laboratorium, Hanna Kleban 1

I. Język manipulowania danymi - DML (Data Manipulation Language). Polecenia INSERT, UPDATE, DELETE

INTERNETOWE BAZY DANYCH materiały pomocnicze - wykład X

Wykład 5. SQL praca z tabelami 2

Język SQL. instrukcja laboratoryjna. Politechnika Śląska Instytut Informatyki. laboratorium Bazy Danych

Wykład I. Wprowadzenie do baz danych

D D L S Q L. Co to jest DDL SQL i jakie s jego ą podstawowe polecenia?

Transkrypt:

POLITECHNIKA WROCŁAWSKA WROCŁAWSKIE CENTRUM SIECIOWO-SUPERKOMPUTEROWE Relacyjne Bazy Danych mgr inż. Ireneusz Tarnowski e-mail: ireneusz.tarnowski@pwr.wroc.pl Ireneusz Tarnowski, Relacyjne Bazy Danych 26.02.2011 1

PLAN SEMINARIUM 1. Wprowadzenie (definicje - małe powtórzenie) 2. System Zarządzania Bazą danych 3. Relacyjne bazy danych 4. Dane, struktury, relacje 5. Projektowanie bazy danych 6. MySQL jako SZBD 7. Oracle Database jako SZBD 8. Język SQL 9. Aplikacja bazodanowa Ireneusz Tarnowski, Relacyjne Bazy Danych 26.02.2011 2

Wprowadzenie (definicje - małe powtórzenie) Dana (ang. data) - najmniejsza, elementarna jednostka informacji o obiekcie będąca przedmiotem przetwarzania komputerowego. Rekord (ang. record) - zwany także krotką lub wierszem, to pozioma struktura danych opisująca jeden obiekt. Rekord składa się z pól opisujących dokładnie cechy obiektu Pole (ang. field) - zwane także atrybutem lub kolumną, to struktura danych opisująca pojedynczą daną w rekordzie Tabela (ang. table) - nazywamy zbiór rekordów opisujących obiekty w sposób ujednolicony tj. każdy rekord posiada te same nazwy pól Ireneusz Tarnowski, Relacyjne Bazy Danych 26.02.2011 3

Wprowadzenie (definicje - małe powtórzenie) Klucz podstawowy (ang. primary key) Klucz podstawowy (klucz główny) to jedno lub więcej pól, których wartość jednoznacznie identyfikuje każdy rekord w tabeli (cecha: unikatowość). Klucz jest nazywany kluczem obcym (ang. foreign key), jeśli odwołuje się do klucza głównego innej tabeli. Klucz podstawowy jednopolowy (ang. single primary key) Jeśli istnieje pole zawierające dane unikatowe, można je zadeklarować jako klucz podstawowy. Klucz podstawowy wielopolowy zwany też kluczem złożonym (ang. composed key) Gdy żadne z pól nie gwarantuje unikatowości wartości w nim zawartych, należy utworzyć klucz podstawowy złożonego z kilku pól. Ireneusz Tarnowski, Relacyjne Bazy Danych 26.02.2011 4

System Zarządzania Bazą Danych (1) System Zarządzania Bazą Danych, SZBD (ang. Database Management System, DBMS) (potocznie: serwer baz danych, system baz danych) to oprogramowanie bądź system informatyczny służący do zarządzania komputerowymi bazami danych. Systemy baz danych mogą być sieciowymi serwerami baz danych lub udostępniać bazę danych lokalnie. Większość obecnie spotykanych systemów działa w trybie klient-serwer, gdzie baza danych jest udostępniana klientom przez SZBD będący serwerem. Najpopularnijesz dostępne systemy baz danych (Baza danych + System Zarządznaia Bazą Danych): klient-serwer: Oracle, MySQL, PosgreSQL, DB2, msql, dbase, Microsoft SQL Server, Inter- Base, Informix Dynamic Server, Firebird lokalne:microsoft Access, SQLite Ireneusz Tarnowski, Relacyjne Bazy Danych 26.02.2011 5

System Zarządzania Bazą Danych (2) ZSBD musi zapewnić: - środki do gromadzenia, utrzymywania i administrowania trwałymi i masowymi zbiorami danych, - środki zapewniające spójność i bezpieczeństwo danych, - sprawny dostęp do danych (zwykle poprzez język zapytań, np. SQL), - środki programistyczne służące do aktualizacji/przetwarzania danych (API dla popularnych języków programowania), - jednoczesny dostęp do danych dla wielu użytkowników (z reguły realizowany poprzez transakcje), - środki pozwalające na regulację dostępu do danych (autoryzację), - środki pozwalające na odtworzenie zawartości bazy danych po awarii, - środki do zarządzania katalogami, schematami i innymi metadanymi, - środki optymalizujące zajętość pamięci oraz czas dostępu (np. indeksy), - środki do pracy lub współdziałania w środowiskach rozproszonych. Ireneusz Tarnowski, Relacyjne Bazy Danych 26.02.2011 6

Relacyjne bazy danych (1) Relacyjna baza danych (RDBMS ang. Relational Database Management Systems) oparta jest ma modelu relacyjnym. Model relacyjny to model baz danych oparty na postulatach relacyjności. Twórcą teorii relacyjnych baz danych jest nieżyjący już Edgar Frank Codd. Dane w modelu relacyjnym są reprezentowane jako zbiór krotek, które w znormalizowanych bazach danych są unikatowe i nie gra roli ich kolejność. Dostęp do nich jest realizowany za pomocą algebry relacji - czyli dostęp do danych definiujemy poprzez operatory relacyjne takie jak: rzutowanie, selekcja, złączenie, suma, różnica, produkt kartezjański. Ograniczenie redundancji danych dokonuje się w procesie przejścia do kolejnych postaci normalnych. Zbiory danych powiązane są logicznie za pomocą encji. W ten sposób uniezależnia się widziany przez użytkownika obraz bazy danych od jej postaci fizycznej. Ireneusz Tarnowski, Relacyjne Bazy Danych 26.02.2011 7

Relacyjne bazy danych (2) W modelu relacyjnym każda relacja (prezentowana w postaci np. tabeli) posiada nagłówek i zawartość. Nagłówek relacji to zbiór atrybutów, gdzie atrybut jest parą nazwa atrybutu:nazwa typu, zawartość natomiast jest zbiorem krotek (reprezentowanych najczęściej w postaci wiersza lecz ściślej określane jako zbiór wartości atrybutów). Sukces relacyjnych baz danych leży w istnieniu formalnej matematycznej struktury zwanej rachunkiem relacyjnym, pozwalającym przeprowadzić automatyczne sprawdzanie pewnych konstrukcji. Gwarantuje to wykonalność pewnych operacji i spójność zbiorów danych. Ireneusz Tarnowski, Relacyjne Bazy Danych 26.02.2011 8

Relacje (1) Relacja (ang. relation) - informacja na temat sposobu poprawnego łączenia powiązanych danych w logiczną całość. Typy relacji: Relacja jeden-do-jednego (1:1) W relacji 1:1 każdy rekord w tabeli A może mieć tylko jeden dopasowany rekord z tabeli B, i tak samo każdy rekord w tabeli B może mieć tylko jeden dopasowany rekord z tabeli A. Ten typ relacji spotyka się rzadko, ponieważ większość informacji powiązanych w ten sposób byłoby zawartych w jednej tabeli. Relacji 1:1 można używać do podziału tabeli z wieloma polami, do odizolowania części tabeli ze względów bezpieczeństwa, albo do przechowania informacji odnoszącej się tylko do podzbioru tabeli głównej. Ireneusz Tarnowski, Relacyjne Bazy Danych 26.02.2011 9

Relacje (2) Typy relacji: (c.d.) Relacja jeden-do-wielu Relacja (1:n) W relacji jeden-do-wielu rekord w tabeli A może mieć wiele dopasowanych do niego rekordów z tabeli B, ale rekord w tabeli B ma tylko jeden dopasowany rekord w tabeli A. Relacja wiele-do-wielu Relacja (m:n) W relacji m:n, rekord w tabeli A może mieć wiele dopasowanych do niego rekordów z tabeli B i tak samo rekord w tabeli B może mieć wiele dopasowanych do niego rekordów z tabeli A. Jest to możliwe tylko przez zdefiniowanie trzeciej tabeli (nazywanej tabelą łącza), której klucz podstawowy składa się z dwóch pól - kluczy obcych z tabel A i B. Relacja m:n jest w istocie dwiema relacjami 1:n z trzecią tabelą. Ireneusz Tarnowski, Relacyjne Bazy Danych 26.02.2011 10

Projektowanie bazy danych (1) - Przechowywanie wymaganych danych podstawowa struktura musi być prawidłowa w pierwszej iteracji - Tworzenie wymaganych relacji schemat musi pozwolić na utworzenie relacji między tabelami - Rozwiązywanie problemów baza musi rozwiązywać problemy - a nie być ich źródłem - Wymuszenie integralnosci danych unikać degradacji danych oraz niekompletnych danych - Efektywny dostęp do danych tworzyć z zasadami sztuki; na końcu optymalizacja - Rozszerzalność nie zablokować rozbudowy bazy danych oraz tabel Ireneusz Tarnowski, Relacyjne Bazy Danych 26.02.2011 11

Projektowanie bazy danych (2) - Zbieranie informacji - Projekt logiczny - Określanie encji - Konwersja encji na tabele - Określanie relacji i liczebności - Diagram związkow encji - Konwersja do modelu fizycznego - Tworzenie kluczy głównych - Tworzneie kluczy obcych - Ustalanie typów danych - Dokończenie definicji tabel - Sprawdzenie projektu - Normalizacja (zmiana postaci normalnej 1 2 3) - Wzorce projektowe (relacja wiele-do-wielu, hierarchia, rekurencja) Ireneusz Tarnowski, Relacyjne Bazy Danych 26.02.2011 12

MySQL jako SZBD MySQL jest szybkim, wielowątkowym serwerem relacyjnych baz danych obsługującym język zapytań baz danych - SQL. Pracuje z wieloma użytkownikami jednocześnie, jest szybki, wydajny, ma wbudowane wydajne i bezpieczne mechanizmy transakcji i widoków. Działa na niemal wszystkich systemach operacyjnych, tj. Microsoft Windows, Oracle (Sun) Solaris, FreeBSD, IBM i5/os, IBM AIX, Mac OS X HP-UX, Red Hat Enterprise Linux, SuSE Linux Enterprise Server, Linux - Generic (Ubuntu, Fedora, Debian, CentOS,...). Mechanizmy HA: replikacja, klaster Ireneusz Tarnowski, Relacyjne Bazy Danych 26.02.2011 13

MySQL - licencjonowanie, ograniczenia Dwa modele licencyjne 1. GNU General Public License (Community Edition) 2. komercyjne (Enterprise Edition) Ograniczenia związane są z możliwością przetworzenia rekordów oraz wielkościami plików bazy danych (ograniczenie wynikające z systemu plików OS). Otwarte źródła (Open Source) Uznaje się, że: doskonale pracuje do 1 000 0000 rekordów, producent zaleca nie więcej niż 50 000 0000 rekordów, pracujące sa instalacje z 60 000 tabel i 5 000 000 000 rekordów. Ireneusz Tarnowski, Relacyjne Bazy Danych 26.02.2011 14

MySQL w praktyce (1) > mysql -u root -p Enter password: ******* Welcome to the MySQL monitor. Commands end with ; or g. Your MySQL connection id is 456 to server version 5.1.2 Type help for help. mysql> use - polecenie służące do wyboru interesującej nas bazy danych (nie podaliśmy nazwy bazy danych w sposób jawny lub chcemy zmienić bazę danych, z którą do tej pory interaktywnie pracowaliśmy). show databases; - wyświetla nazwy baz danych na serwerze (do których mamy dostęp). show tables; - wyświetla listę wszystkich tabel wybranej bazy danych. Ireneusz Tarnowski, Relacyjne Bazy Danych 26.02.2011 15

MySQL w praktyce (2) describe nazwa tabeli; - wyświetla informacje o strukturze tabeli (nazwy kolumn wybranej tabeli, typy danych kolumn, domyślne wartościach pól danych, które znajdą się w rekordach). source - polecenia SQL w zebrane pliku tekstowym, który jako parametr polecenia source (wykonamy polecenia zebrane w pliku). pager - polecenie pager nazwa programu możemy uruchomić odpowiedni program nazwa programu aby włączyć odpowiedni mechanizm przeglądania wyników przez formatowanie ich na ekranie zewnętrznym programem. Takim programem może być albo program less albo more. Kiedy chcemy wyłączyć mechanizm stronicowania można wydać polecenie nopager. tee - polecenie używane do zapisu sesji pracy z bazą danych (podając jednocześnie nazwę pliku jako parametr wywołania). Od momentu wydania tego polecenia wszystkie polecenia będą zapisywane do pliku. Aby zakończy zapisywanie do pliku wystarczy wydać polecenie notee. Ireneusz Tarnowski, Relacyjne Bazy Danych 26.02.2011 16

Oracle Database Oracle Enterprise Edition, Oracle Standard Edition, Oracle Standard Edition One bazy komercyjne o różnej funkcjonalności, najnowszy wydanie Oracle Database 11g, Oracle Database Express Edition (Oracle Database XE) wersja darmowa, ograniczona (m.in. jeden procesor, obsługa maksymalnie 4 GB danych użytkownika, etc.), udostępniona od wersji 10g. Ireneusz Tarnowski, Relacyjne Bazy Danych 26.02.2011 17

Oracle Database - architektura Ireneusz Tarnowski, Relacyjne Bazy Danych 26.02.2011 18

PL/SQL - co to jest? Proceduralne rozszerzenie programistyczne języka SQL, stworzone, udostępnione przez Oracle i przeznaczone do obsługi narzędzi tej firmy, Wywodzi się z języka ADA, wiele pomysłów jest zapożyczonych z tego języka, PL w nazwie to skrót od procedural language (z ang.), czyli języka proceduralnego, Jest chroniony prawami autorskimi, Jest językiem trzeciej generacji 3GL, Początkowo jedynie proceduralny, obecnie możemy go traktować jako obiektowy, Powstał jako odpowiedź na zapotrzebowanie samych pracowników firmy Oracle oraz zewnętrznych użytkowników jej produktów. Ireneusz Tarnowski, Relacyjne Bazy Danych 26.02.2011 19

PL/SQL zalety Łączy SQL z konstrukcjami proceduralnymi SQL jest prosty, ale ma ograniczone możliwości, Poprawia wydajność pozwala przetwarzać bloki instrukcji, a nie pojedyncze zapytania SQL, Modularyzacja pozwala na tworzenie bloków, które mogą skupiać logicznie powiązane wyrażenia, zagnieżdżać bloki, dzielić program na mniejsze logiczne jednostki, to pozwala na łatwiejsze utrzymywanie i debugowanie kodu, Jest zintegrowany z innymi narzędziami Oracle (Reprots, Forms), dzięki temu kod przetwarzany jest przez lokalny silnik a do bazy danych przesyłane są tylko zapytania SQL, Jest przenośny działa tak samo na różnych platformach i w różnych systemach operacyjnych, Posiada obsługę wyjątków Ireneusz Tarnowski, Relacyjne Bazy Danych 26.02.2011 20

Oracle SQL*Plus Podstawowy interfejs bazy danych niezależnie od wersji, Dołączany do wszystkich wersji serwera bazodanowego, Dostępny z poziomu serwera i klienta, Wykorzystywane poprzez wiersz poleceń, graficzny interfejs bądź przeglądarkę, Jest zawsze dostępny i niezmienny. Ireneusz Tarnowski, Relacyjne Bazy Danych 26.02.2011 21

Oracle SQL Developer Darmowe, graficzne narzędzie dla programistów Oracle, Wspomaga i ułatwia pracę z bazą danych, Ułatwia przeglądanie obiektów bazy i zarządzanie nimi, wykonywanie zapytań i skryptów, edycję i debugowanie poleceń PL/SQL, kreowanie raportów, Posiada udogodnienia typu: podpowiedzi, kolorowanie kodu, etc. Ireneusz Tarnowski, Relacyjne Bazy Danych 26.02.2011 22

Oracle JDeveloper Wymaga licencji w przypadku zastosowań komercyjnych, darmowy w przypadku gdy używany w celach niekomercyjnych, Od wersji 9i umożliwia tworzenie, pielęgnację i diagnozowanie kodu PL/SQL, JDeveloper 10g pozwala na: wyświetlanie wszystkich obiektów bazodanowych, edycję kodu PL/SQL oraz dostarcza szablony kodu, porady w sprawie optymalizacji SQL i mechanizmy diagnostyczne. Ireneusz Tarnowski, Relacyjne Bazy Danych 26.02.2011 23

Język SQL SQL (ang. Structured Query Language) strukturalny język zapytań używany do tworzenia, modyfikowania baz danych oraz do umieszczania i pobierania danych z baz danych. SQL - standard w komunikacji z serwerami relacyjnych baz danych; W 1986 roku SQL stał się oficjalnym standardem, wspieranym przez Międzynarodową Organizację Normalizacyjną (ISO) oraz Amerykański Narodowy Instytut Normalizacji (ANSI). Język SQL pozwala wprowadzać zmiany w strukturze bazy danych, jak również zmiany danych w bazie i wybieranie informacji z bazy danych. Język ten opiera się na silniku bazy danych, który pozwala zadawać w języku SQL pewnego rodzaju pytania (kwerendy) i wyświetlać dane, które spełniają warunki zapytania. Zapytania SQL mogą także wykonywać operacje wstawiania danych, usuwania danych i ich aktualizacji. Język SQL zapewnia również zarządzanie bazą danych. Informacja o samej bazie przechowywana jest w postaci relacji (tabel) wewnątrz bazy danych. Ireneusz Tarnowski, Relacyjne Bazy Danych 26.02.2011 24

Język SQL - typy danych Typ danej - rodzaj danej, czyli forma zapisu informacji: - znakowy (ang.character) - dana może przybierać tylko wartości znaków pisarskich, - liczbowy (ang.number) - dana może przechowywać tylko liczby, - logiczny (ang.logical) - dana może przybierać tylko dwie wartości: prawda, fałsz (tak, nie), - data (ang.date) - dana może przyjmować postać daty i czasu np. rok.miesiąc.dzień godz:min:sek, - alfanumeryczny (ang.alphanumeric) - dana może przybierać wartości znaków ASCII oraz cyfry, - numeryczny (ang.numeric) - wartościami danej mogą być tylko cyfry i znaki: + (plus), - (minus), - walutowy (ang.currency) - dana może przyjmować wartości liczbowe razem z symbolem waluty, - notatnikowy (ang.memo) - dana może być oddzielnym zbiorem tekstowym służącym do przechowywania dowolnych opisów, - binarny (ang.binary) - dana może być np. plikiem dźwiękowym lub filmowym, - graficzny (ang.graphic) - dana przechowuje grafikę np. rysunki, - obiektowy (ang.ole) - dana przechowuje obiekty. Ireneusz Tarnowski, Relacyjne Bazy Danych 26.02.2011 25

Język SQL - tworzenie bazy danych CREATE {DATABASE SCHEMA} [IF NOT EXISTS] db_name [create_specification...] create_specification: [DEFAULT] CHARACTER SET [=] charset_name [DEFAULT] COLLATE [=] collation_name Ireneusz Tarnowski, Relacyjne Bazy Danych 26.02.2011 26

Język SQL - tworzenie tabel CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name (create_definition,...) [table_option]... create_definition: col_name column_definition [CONSTRAINT [symbol]] PRIMARY KEY [index_type] (index_col_name,...) {INDEX KEY} [index_name] [index_type] (index_col_name,...) column_definition: data_type [NOT NULL NULL] [DEFAULT default_value] [AUTO_INCREMENT] [UNIQUE [KEY] [PRIMARY] KEY] [COMMENT string ] [reference_definition] Ireneusz Tarnowski, Relacyjne Bazy Danych 26.02.2011 27

Język SQL - tworzenie tabel data_type: BIT[(length)] TINYINT[(length)] [UNSIGNED] [ZEROFILL] SMALLINT[(length)] [UNSIGNED] [ZEROFILL] MEDIUMINT[(length)] [UNSIGNED] [ZEROFILL] INT[(length)] [UNSIGNED] [ZEROFILL] INTEGER[(length)] [UNSIGNED] [ZEROFILL] BIGINT[(length)] [UNSIGNED] [ZEROFILL] REAL[(length,decimals)] [UNSIGNED] [ZEROFILL] DOUBLE[(length,decimals)] [UNSIGNED] [ZEROFILL] FLOAT[(length,decimals)] [UNSIGNED] [ZEROFILL] DECIMAL[(length[,decimals])] [UNSIGNED] [ZEROFILL] NUMERIC[(length[,decimals])] [UNSIGNED] [ZEROFILL] DATE TIME TIMESTAMP DATETIME YEAR CHAR[(length)][CHARACTER SET charset_name] [COLLATE collation_name] VARCHAR(length) [CHARACTER SET charset_name] [COLLATE collation_name] BINARY[(length)] VARBINARY(length) TINYBLOB MEDIUMBLOB LONGBLOB TINYTEXT [BINARY][CHARACTER SET charset_name] [COLLATE collation_name] TEXT [BINARY][CHARACTER SET charset_name] [COLLATE collation_name] MEDIUMTEXT [BINARY][CHARACTER SET charset_name] [COLLATE collation_name] LONGTEXT [BINARY][CHARACTER SET charset_name] [COLLATE collation_name] ENUM(value1,value2,value3,...) [CHARACTER SET charset_name] [COLLATE collation_name] SET(value1,value2,value3,...) [CHARACTER SET charset_name] [COLLATE collation_name] Ireneusz Tarnowski, Relacyjne Bazy Danych 26.02.2011 28

Język SQL - zmiana struktury tabeli ALTER TABLE tbl_name alter_specification [, alter_specification]... alter_specification: ADD [COLUMN] col_name column_definition [FIRST AFTER col_name ] ADD [COLUMN] (col_name column_definition,...) ADD {INDEX KEY} [index_name] [index_type] (index_col_name,...) [index_type] ADD [CONSTRAINT [symbol]] PRIMARY KEY [index_type] (index_col_name,...) [index_type] ADD [CONSTRAINT [symbol]] UNIQUE [INDEX KEY] [index_name] [index_type] (index_col_name,...) [index_type] ADD [FULLTEXT SPATIAL] [INDEX KEY] [index_name] (index_col_name,...) [index_type] ADD [CONSTRAINT [symbol]] FOREIGN KEY [index_name] (index_col_name,...) ALTER [COLUMN] col_name {SET DEFAULT literal DROP DEFAULT} CHANGE [COLUMN] old_col_name new_col_name column_definition [FIRST AFTER col_name] MODIFY [COLUMN] col_name column_definition [FIRST AFTER col_name] DROP [COLUMN] col_name DROP PRIMARY KEY DROP {INDEX KEY} index_name DROP FOREIGN KEY fk_symbol RENAME [TO] new_tbl_name ORDER BY col_name [, col_name]... CONVERT TO CHARACTER SET charset_name [COLLATE collation_name] [DEFAULT] CHARACTER SET [=] charset_name [COLLATE [=] collation_name] Ireneusz Tarnowski, Relacyjne Bazy Danych 26.02.2011 29

Język SQL - wstawianie danych INSERT [LOW_PRIORITY DELAYED HIGH_PRIORITY] [IGNORE] [INTO] tbl_name [(col_name,...)] VALUES ({expr DEFAULT},...),(...),... Ireneusz Tarnowski, Relacyjne Bazy Danych 26.02.2011 30

Język SQL - modyfikacja danych UPDATE [LOW_PRIORITY] [IGNORE] tbl_name SET col_name1=expr1 [, col_name2=expr2...] [WHERE where_condition] [ORDER BY...] [LIMIT row_count] Ireneusz Tarnowski, Relacyjne Bazy Danych 26.02.2011 31

Język SQL - usuwanie danych DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name [WHERE where_condition] [ORDER BY...] [LIMIT row_count] DELETE [LOW_PRIORITY] [QUICK] [IGNORE] tbl_name[.*] [, tbl_name[.*]]... FROM table_references [WHERE where_condition] Ireneusz Tarnowski, Relacyjne Bazy Danych 26.02.2011 32

Język SQL - usuwanie tabeli i bazy danych DROP [TEMPORARY] TABLE [IF EXISTS] tbl_name [, tbl_name]... [RESTRICT CASCADE] DROP {DATABASE SCHEMA} [IF EXISTS] db_name Ireneusz Tarnowski, Relacyjne Bazy Danych 26.02.2011 33

Język SQL - wydobywanie danych SELECT [ALL DISTINCT DISTINCTROW ] [HIGH_PRIORITY] [STRAIGHT_JOIN] [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT] [SQL_CACHE SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS] select_expr,... [FROM table_references [WHERE where_condition] [GROUP BY {col_name expr position} [ASC DESC],... [WITH ROLLUP]] [HAVING where_condition] [ORDER BY {col_name expr position} [ASC DESC],...] [LIMIT {[offset,] row_count row_count OFFSET offset}] [PROCEDURE procedure_name(argument_list)] [INTO OUTFILE file_name export_options INTO DUMPFILE file_name INTO var_name [, var_name]] [FOR UPDATE LOCK IN SHARE MODE]] Ireneusz Tarnowski, Relacyjne Bazy Danych 26.02.2011 34

Język SQL - uprawneinia GRANT priv_type [(column_list)] ON [object_type] { * *.* db_name.* db_name.tbl_name tbl_name db_name.routine_name } TO user [IDENTIFIED BY [PASSWORD] password ] [WITH with_option [with_option]...] object_type = TABLE FUNCTION PROCEDURE with_option = GRANT OPTION MAX_QUERIES_PER_HOUR count MAX_UPDATES_PER_HOUR count MAX_CONNECTIONS_PER_HOUR count MAX_USER_CONNECTIONS count Ireneusz Tarnowski, Relacyjne Bazy Danych 26.02.2011 35

Język SQL - uprawneinia REVOKE priv_type [(column_list)] ON [object_type] { * *.* db_name.* db_name.tbl_name tbl_name db_name.routine_name } FROM user [, user]... REVOKE ALL PRIVILEGES, GRANT OPTION FROM user [, user]... CREATE USER DROP USER SET PASSWORD RENAME USER Ireneusz Tarnowski, Relacyjne Bazy Danych 26.02.2011 36

Język SQL - złączenia tabel Model relacyjny zakłada, że dane, zawarte w bazie danych, podzielone są na tabele. W pewnych sytuacjach konieczne będzie połączenie danych, zawartych w kilku tabelach, w celu uzyskania tabeli wynikowej. Proces taki nazywamy złączeniem (ang. join), ze względu na sposób łączenia dzieli się operacje złączeń na trzy grupy: - złączenia wewnętrzne - złączenia zewnętrzne - samozłączenia SELECT * FROM tabela1, tabela2 SELECT * FROM tabela1, tabela2 WHERE tabela1.klucz_główny = tabela2.klucz_obcy SELECT * FROM tabela1 JOIN tabela2 ON warunek_złączenia_tabel SELECT * FROM tabela1 LEFT OUTER JOIN tabela2... SELECT * FROM tabela1 RIGHT OUTER JOIN tabela2... SELECT * FROM tabela1 FULL OUTER JOIN tabela2... Ireneusz Tarnowski, Relacyjne Bazy Danych 26.02.2011 37

Język SQL - podzapytania Podzapytanie, to instrukcja SELECT zagnieżdżona w innej instrukcji SQL, która dostarcza dla tej drugiej danych wejściowych. Podzapytanie jest zapytaniem zagnieżdżonym. Język SQL nie wprowadza ograniczeń na ilość zagnieżdżeń, w związku z czym zapytanie otaczające też może być podzapytaniem. SELECT * FROM t1 WHERE column1 = (SELECT column1 FROM t2); Ireneusz Tarnowski, Relacyjne Bazy Danych 26.02.2011 38

Język SQL - transakcje Transakcja wykonuje się albo w całości, albo wcale. Jeżeli w trakcie wykonywania transakcji wystąpi jakiś błąd, całą sekwencję operacji można odwołać, przywracając bazę do stanu sprzed rozpoczęcia tej sekwencji. START TRANSACTION [WITH CONSISTENT SNAPSHOT] BEGIN [WORK] COMMIT [WORK] [AND [NO] CHAIN] [[NO] RELEASE] ROLLBACK [WORK] [AND [NO] CHAIN] [[NO] RELEASE] SET AUTOCOMMIT = {0 1} START TRANSACTION; SELECT @A:=SUM(salary) FROM table1 WHERE type=1; UPDATE table2 SET summary=@a WHERE type=1; COMMIT; Ireneusz Tarnowski, Relacyjne Bazy Danych 26.02.2011 39

Język SQL - wyzwalacze (ang. triggers) Trigger jest obiektem związanym z tablicą, który aktywuje się gdy do tablicy następuje odpowiednie zapytanie. Dzięki triggerom można: - sprawdzać i zapobiegać dostawaniu się do bazy danych nieodpowiednich danych. - zmieniać polecenia INSERT, UPDATE i DELETE lub w ogóle ich zaniechać w zależności od tego, jakie informacje dostarczy nam trigger. - monitorować aktywność działań na danych w bazie danych w czasie sesji z bazą danych. CREATE [DEFINER = { user CURRENT_USER }] TRIGGER trigger_name trigger_time trigger_event ON tbl_name FOR EACH ROW trigger_stmt CREATE TABLE konto (numer INT, ile DECIMAL(10,2)); CREATE TRIGGER konto_bi BEFORE INSERT ON konto FOR EACH ROW SET @sum = @sum + NEW.ile; Ireneusz Tarnowski, Relacyjne Bazy Danych 26.02.2011 40

Język SQL - funckje i operatory Duża grupa wewnętrznych funkcji: SUM, RAND, CONCAT, AVG, COUNT, MAX, MIN, SQRT ROUND, DATE, DATE_FORMAT, TIME_FORMAT, TIME, SUBDATE, FLOOR, EXP, MOD, PI, SIN, RADIANS, UPPER, LOWER, ASCII, ORD, QUOTE operatory: BINARY, COLLATE! - (unary minus), ~ (unary bit inversion) ^ *, /, DIV, %, MOD -, +, <<, >> &,, =, <=>, >=, >, <=, <, <>,!=, IS, LIKE, REGEXP, IN BETWEEN, CASE, WHEN, THEN, ELSE NOT, &&, AND, XOR,, OR, := Ireneusz Tarnowski, Relacyjne Bazy Danych 26.02.2011 41

Aplikacja bazodanowa Program komputerowy pośredniczący w wymianie danych między użytkownikiem a bazą danych (za pośrednictwem SZBD). 1. Aplikacja stanowi najwyższy element systemu bazodanowego. 2. Nie należy do SZBD ani do samej bazy danych. 3. Apliakcja musi się składać z interfejsu komunikacji z użytkownikiem (GUI lub CLI), w którego skład wchodzą: formularze, raportów, mechanizm kwerend. Ireneusz Tarnowski, Relacyjne Bazy Danych 26.02.2011 42

Więcej na temat... [ 1 ] Ramez Elmasri, Shamkant B. Navathe, Wprowadzenie do systemów baz danych, Helion, 2005 [ 2 ] Richard Stones, Neil Matthew, Bazy danych i MySQL. Od podstaw, Helion, 2003 [ 3 ] Mark Whitehorn, Bill Marklyn, Relacyjne bazy danych, Helion, 2003 [ 4 ] Luke Welling, Laura Thomson, MySQL. Podstawy, oficjalny podręcznik, Helion, 2004 [ 5 ] Michael Abbey, Michael Corey, Ian Abramson, Oracle9i. Przewodnik dla początkujących, Helion, 2003 [ 6 ] Scott Urman, Oracle9i. Programowanie w języku PL/SQL, Helion, 2003 [ 7 ] www.mysql.com, MySQL, podręcznik użytkownika, dokumentacja producenta oprogramowania [ 8 ] www.oracle.com, Oracle 11g, podręcznik użytkownika, dokumentacja producenta oprogramowania Ireneusz Tarnowski, Relacyjne Bazy Danych 26.02.2011 43

POLITECHNIKA WROCŁAWSKA WROCŁAWSKIE CENTRUM SIECIOWO-SUPERKOMPUTEROWE Relacyjne Bazy Danych mgr inż. Ireneusz Tarnowski e-mail: ireneusz.tarnowski@pwr.wroc.pl Ireneusz Tarnowski, Relacyjne Bazy Danych 26.02.2011 44