SIECI KOPMPUTEROWE I TECHNOLOGIE INTERNETOWE (SKiTI)

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

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

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

Projektowanie systemów baz danych

Wykład 2. SQL 1 Structured Query Lenguage

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

Bazy danych. Polecenia SQL

Bazy danych 7. SQL podstawy

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

CREATE DATABASE ksiegarnia_internetowa DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

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

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

Podstawy języka SQL. SQL Structured Query Languagestrukturalny

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

Po prawidłowym podłączeniu do serwera MySQL należy wybrać bazę, na której będziesz pracować:

2 Przygotował: mgr inż. Maciej Lasota

Język SQL, zajęcia nr 1

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

Dr Michał Tanaś(

SQL 4 Structured Query Lenguage

Literatura: SQL Ćwiczenia praktyczne Autor: Marcin Lis Wydawnictwo: Helion. Autor: Joanna Karwowska

Wykład 4. SQL praca z tabelami 1

MySQL. Darmowa baza danych. Æwiczenia praktyczne

Bazy danych 5. Samozłaczenie SQL podstawy

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

Paweł Rajba

1. Sprawdzenie ustawień konfiguracyjnych. Uruchomienie wiersza poleceń:..\ścieżka\bin>mysqladmin variables

SQL - DDL. 1 Tabele systemowe. 2 Typy danych

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

Wykład 5. SQL praca z tabelami 2

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

Krzysztof Kadowski. PL-E3579, PL-EA0312,

Relacyjne bazy danych. Podstawy SQL

Bazy danych. Dr inż. Paweł Kasprowski

Instalacja MySQL.

Bazy danych - wykład wstępny

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

Instrukcja CREATE TABLE

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

Bazy Danych - Instrukcja do Ćwiczenia laboratoryjnego nr 8

Składowane procedury i funkcje

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

Bazy danych 4. SQL podstawy. P. F. Góra

SQL (ang. Structured Query Language)

Przestrzenne bazy danych Podstawy języka SQL

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

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

Systemy GIS Tworzenie zapytań w bazach danych

Relacyjne bazy danych. Podstawy SQL

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

Podstawowe informacje o bazach danych. Technologie Informacyjne

SQL DDL DML TECHNOLOGIE BAZ DANYCH. Wykład 5: Język DDL i DML. Małgorzata Krętowska

SIECI KOMPUTEROWE I BAZY DANYCH

Odnawialne Źródła Energii I rok. Tutorial PostgreSQL

Autor: Joanna Karwowska

Laboratorium nr 1. Temat: Wprowadzenie do MySQL-a

SQL w praktyce. Miłej i owocnej nauki!!!

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny Technologiczny Politechnika Śląska

Wykład 8. SQL praca z tabelami 5

Język SQL, zajęcia nr 2

8.9. Język SQL Kwerenda wybierająca w języku SQL

Widok Connections po utworzeniu połączenia. Obszar roboczy

korzyści finansowe przewaga pomysłu nad kapitałem tworzenie nowych branż tworzenie mechanizmów pochodnych (np. serwis snip).

Bazy danych 4. SQL- podstawy

Komunikacja z bazą danych psql

Tworzenie tabel. Bazy danych - laboratorium, Hanna Kleban 1

Aplikacje bazodanowe. Laboratorium 1. Dawid Poªap Aplikacje bazodanowe - laboratorium 1 Luty, 22, / 37

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

Bazy danych 6. Klucze obce. P. F. Góra

SQL/MySQL. Rafał Kern

Kurs. Podstawy MySQL

Projektowanie bazy danych. Jarosław Kuchta Projektowanie Aplikacji Internetowych

Wykład 5: PHP: praca z bazą danych MySQL

Bazy danych Ćwiczenia projektowe

MySQL. Leksykon kieszonkowy. II wydanie

Wykład 05 Bazy danych

Język SQL. Rozdział 9. Język definiowania danych DDL, cześć 1. Tworzenie relacji, typy danych, wartości domyślne atrybutów, słownik bazy danych.

Bazy Danych i Usługi Sieciowe

Bazy danych SQL Server 2005

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

Język baz danych SQL cz.1

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

Wprowadzenie do baz danych

Systemy internetowe. Wykład 4 mysql. West Pomeranian University of Technology, Szczecin; Faculty of Computer Science

SIECI KOMPUTEROWE I BAZY DANYCH

Informatyka (5) SQL. dr inż. Katarzyna Palikowska Katedra Transportu Szynowego p. 4 Hydro

Aspekty aktywne baz danych

Bazy danych i usługi sieciowe

Bazy danych 10. SQL Widoki

Oracle11g: Wprowadzenie do SQL

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

Bazy danych. dr inż. Arkadiusz Mirakowski

Bazy danych. dr Radosław Matusik. radmat

Bloki anonimowe w PL/SQL

Integracja Systemów Sterowania. MySQL/SQL

Język SQL podstawy zapytań

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

ACESS- zadania z wykorzystaniem poleceń SQL

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

Transkrypt:

SIECI KOPMPUTEROWE I TECHNOLOGIE INTERNETOWE (SKiTI) Wykład 14: Relacyjne bazy danych, PHP + MySQL Opracował: dr inż. Dariusz Trawicki Politechnika Gdańska Wydział Elektrotechniki i Automatyki Kierunek: Automatyka i Robotyka Studia stacjonarne I stopnia: rok I, semestr II 1

Wstęp do baz danych Aplikacje bazodanowe to specjalistyczne aplikacje, których głównym celem jest przechowywanie złożonych informacji, zarządzanie nimi oraz ich udostępnianie. Baza danych to zbiór danych zapisanych w ściśle określony sposób w strukturach odpowiadających założonemu modelowi danych. Bazy danych wykorzystywane są wszędzie tam, gdzie mamy do czynienia ze złożoną organizacją informacji. 2

Wstęp do baz danych c.d. Serwer baz danych program zarządzający bazami danych. Relacyjne bazy danych bazy, w których wiele tablic danych może współpracować ze sobą (są między sobą powiązane relacjami). Bazy relacyjne posiadają wewnętrzne języki programowania, wykorzystujące zwykle SQL do operowania na danych, za pomocą których tworzone są zaawansowane funkcje obsługi danych. 3

Wstęp do baz danych c.d. 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. MySQL szybki, wielowątkowy serwer baz danych obsługującym język zapytań SQL. Pracuje z wieloma użytkownikami i doskonale nadaje się do wykorzystania razem z PHP jako darmowa platforma aplikacji internetowych. 4

Wstęp do baz danych c.d. 5

Wstęp do baz danych c.d. Tabela zbiór rekordów opisujących obiekty np. pracownicy zawierających informacje o tych obiektach w sposób ujednolicony. Rekord pojedynczy wiersz w tabeli. Pole najmniejsza część rekordu, która przechowuje jedną daną. 6

Wstęp do baz danych c.d. KlientID Imie_i_Nazwisko Adres Miejscowosc 1 Jan Nowak Polna 2 Gdańsk 2 Jan Kowalski Leśna 3/21 Sopot 3 Jan Iksiński Skiti 21 Gdynia Rys.1. Przykład tabeli - tabela Klienci 7

Wstęp do baz danych c.d. Kolumna każda kolumna tabeli posiada wyróżniającą ją nazwę (np. Adres) i zawiera inny rodzaj danych. Każdej kolumnie przypisany jest typ danych. W przykładzie (rys.1) kolumna KlientID jest typu całkowitoliczbowego, pozostałe zawierają ciągi znaków. 8

Wstęp do baz danych c.d. Klucz podstawowy (ang. 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. W przykładzie (rys.1) kluczem podstawowym może być pole KlientID. 9

Wstęp do baz danych c.d. KlientID Imie_i_Nazwisko Adres Miejscowosc 1 Jan Nowak Polna 2 Gdańsk 2 Jan Kowalski Leśna 3/21 Sopot 3 Jan Iksiński Skiti 21 Gdynia ZamówienieID KlientID Wartosc Data 1 1 100 000.00 2008-05-01 2 2 125.50 2008-05-25 Rys.2. Klucze w tabelach: Klienci i Zamowienia 10

Wstęp do baz danych c.d. W przykładzie z rys.2 pole KlientID jest kluczem podstawowym w tabeli Klienci. W tabeli Zamowienia pole ZamowienieID jest kluczem podstawowym, pole KlientID jest kluczem obcym. 11

Wstęp do baz danych c.d. Zapytanie, czyli kwerenda to taka konstrukcja językowa, która pozwala na wyszukiwanie danych z bazy danych za pomocą zadawania pytań. Kwerenda wybierająca jest najczęściej używanym rodzajem kwerendy. Służy do otrzymywania danych z tabeli lub tabel i wyświetlania wyników w arkuszu danych, w którym można je następnie przeglądać. Kwerendy wybierające mogą być również używane do grupowania rekordów i obliczania sum, zliczeń, wyliczania średnich i przeprowadzania innych obliczeń. 12

Wstęp do baz danych c.d. Sortowaniem rekordów nazywamy ich porządkowanie według jakiegoś kryterium. Kryterium to nazwa lub nazwy pól według których odbywa się sortowanie. Sortowanie może być rosnące (sortuje wartości w porządku rosnącym (od A do Z, od 0 do 9) lub sortowanie malejące (sortuje wartości w porządku malejącym od Z do A, od 9 do 0). 13

Wstęp do baz danych c.d. Relacje 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. Wyróżniamy trzy typy relacji: jeden do jednego, jeden do wielu, wiele do wielu. 14

Wstęp do baz danych c.d. Relacja jeden do jednego oznacza, iż po każdej stronie może występować tylko jedna wartość. Na przykład wydzielając z tabeli Klienci odrębna tabelę (Adresy) zawierającą adresy, tabele Klienci i Adresy byłyby powiązane relacją jeden do jednego. Tabela Klienci mogłaby więc posiadać klucz obcy z tabeli Adresy lub odwrotnie. 15

Wstęp do baz danych c.d. W relacji jeden do wielu jeden wiersz tabeli jest połączony z jednym wierszem lub wieloma wierszami z drugiej tabeli. W rozważanym przykładzie jeden klient może złożyć kilka zamówień. W przypadku tego typu relacji tabela z wieloma wierszami bezie zawierać kolumnę z kluczem obcym pochodzącym z tabeli z jednym wierszem. W celu zastosowania tej relacji, w tabeli Zamowienia została umieszczona kolumna KlientID. 16

Wstęp do baz danych c.d. KlientID ImieNazwisko Adres Miejscowosc 1 Jan Nowak Polna 2 Gdańsk 2 Jan Kowalski Leśna 3/21 Sopot 3 Jan Iksiński Skiti 21 Gdynia ZamówienieID KlientID Wartosc Data 1 1 100 000.00 2008-05-01 2 2 125.50 2008-05-15 3 1 2 000.00 2008-05-25 Rys.3. Relacja jeden do wielu 17

Wstęp do baz danych c.d. W przypadku relacji wiele do wielu, wiele wierszy jednej tabeli jest związanych z wieloma wierszami innej. Jako przykład mogą posłużyć tabele: Przedmioty - zawierająca dane o przedmiotach realizowanych w programie studiów (nazwa, liczba godzin, itp.) Prowadzący - dane osób prowadzących zajęcia z poszczególnych przedmiotów. Mogłaby zaistnieć sytuacja, w której jeden przedmiot miałby kilku prowadzących, przy czym każdy z nich mógłby prowadzić zajęcia z innych przedmiotów. Tego typu relacje są zazwyczaj realizowane poprzez utworzenie dodatkowej, trzeciej tabeli. Tabele Przedmioty i Prowadzacy łączyłaby, np. tabela Prowadzący_Przedmioty, zawierająca tylko pary kluczy obcych pochodzących z dwóch pierwszych tabel. 18

Architektura internetowej baz danych Przeglądarka Serwer www Interpreter PHP Serwer MySQL Rys.4. Architektura internetowej bazy danych 19

Architektura internetowej baz danych Etapy typowej transakcji bazodanowej: 1. Przeglądarka (użytkownik) wysyła żądanie udostępnienia określonej strony www. 2. Serwer WWW przyjmuje żądanie, odnajduje właściwy plik i przekazuje go do interpretera PHP. 3. Interpreter PHP rozpoczyna przetwarzanie skryptu i realizuje zawarte w skrypcie polecenie połączenia z bazą danych i wykonania określonych zapytań SQL. Następuje otwarcie połączenia z serwerem MySQL i przesyłanie zapytania. 4. Serwer MySQL przejmuje zapytanie i przetwarza je, po czym rezultat odsyła do interpretera PHP. 5. Interpreter kończy wykonywanie skryptu, który zazwyczaj formatuje otrzymane wyniki zgodnie ze standardami HTML, po czym wysyła wynikowy kod HTML do serwera WWW. 6. Serwer WWW przesyła kod HTML do przeglądarki. 20

Język SQL Składnię języka SQL można podzielić na trzy części: język definiowania struktur danych - DDL (ang. Data Definition Language, język do wybierania i manipulowania danymi - DML (ang. Data Manipulation Language), język do zapewnienia bezpieczeństwa dostępu do danych - DCL (ang. Data Control Language). 21

SQL c.d. DDL jest wykorzystywany do utrzymywania struktury bazy danych. Dotyczy więc obiektów i poleceń jakie można na nich wykonywać. Najbardziej popularnymi poleceniami tego języka są: CREATE TABLE - tworzy nową tabelę, ALTER TABLE - zmienia istniejącą definicję tabeli, DROP TABLE - kasuje istniejącą tabelę, CREATE INDEX - tworzy indeks w tabeli, DROP INDEX - usuwa indeks w tabeli. 22

SQL c.d. DML jest językiem stosowanym przez wszystkich użytkowników bazy danych. Służy do wybierania danych i manipulowania danymi znajdującymi się w bazie. Za jego pomocą, można dodawać, usuwać, wybierać i uaktualniać dane. Wszystkie te czynności można wykonać za pomocą następujących, podstawowych komend SQL: SELECT - wydobywanie danych z tabel, UPDATE - uaktualnianie danych w tabeli, DELETE - kasowanie danych w tabeli, INSERT - wprowadzanie danych do tabeli. 23

SQL c.d. DCL jest częścią języka SQL stosowaną przez administratorów bazy danych. Służy do zapewnienia bezpieczeństwa dostępu do danych znajdujących się w bazie. Za jego pomocą można na przykład nadawać i odbierać uprawnienia poszczególnym użytkownikom lub całym grupom. 24

SQL c.d. Polecenie SQL składa się z dwóch rodzajów słów: zarezerwowanych, zdefiniowanych przez użytkownika. Słowa zarezerwowane są integralną częścią języka i nie mogą być zmieniane ani dzielone pomiędzy wierszami. Słowa zdefiniowane przez użytkownika reprezentują nazwy różnych obiektów bazy danych takich jak: indeksy, widoki, tabele, kolumny, relacje. Każde polecenie powinno być zakończone średnikiem. SELECT * FROM moja_tabela; 25

SQL c.d. Słowa zarezerwowane ADD ALL ALTER ANALYZE AND AS ASC ASENSITIVE AUTO_INCREMENT BDB BEFORE BERKELEYDB BETWEEN BIGINT BINARY BLOB BOTH BY CALL CASCADE CASE CHANGE CHAR CHARACTER CHECK COLLATE COLUMN COLUMNS CONDITION CONNECTION CONSTRAINT CONTINUE CREATE CROSS CURRENT_DATE CURREN T_TIME CURRENT_TIMESTAMP CURSOR DATABASE DATABASES DAY_HOUR DAY_MICROSECOND DAY_MINUTE DAY_SECOND DEC DECIMAL DECLARE DEFAULT DELAYED DELETE DESC DESCRIBE DETERMINISTIC DISTINCT DISTINCTROW DIV DOUBLE DROP ELSE ELSEIF ENCLOSED ESCAPED EXISTS EXIT EXPLAIN FALSE FETCH FIELDS FLOAT FOR FORCE FOREIGN FOUND FRAC_SECOND FROM FULLTEXT GRANT GROUP HAVING HIGH_PRIORITY HOUR_MICROSECOND HOUR_MINUTE HOUR_SECOND IF IGNORE IN INDEX INFILE INNER INNODB INOUT INSENSITIVE INSERT INT INTEGER INTERVAL INTO IO_THREAD IS ITERATE JOIN KEY KEYS KILL LEADING LEAVE LEFT LIKE LIMIT LINES LOAD LOCALTIME LOCALTIMESTAMP LOCK LONG LONGBLOB LONGTEXT LOOP LOW_PRIORITY MASTER_SERVER_ID MATCH MEDIUMBLOB MEDIUMINT MEDIUMTEXT MIDDLEINT MINUTE_MICROSECOND MINUTE_SECOND MOD NATURAL NOT NO_WRITE_TO_BINLOG NULL NUMERIC ON OPTIMIZE OPTION OPTIONALLY OR ORDER OUT OUTER OUTFILE PRECISION PRIMARY PRIVILEGES PROCEDURE PURGE READ REAL REFERENCES REGEXP RENAME REPEAT REPLACE REQUIRE RESTRICT RETURN REVOKE RIGHT RLIKE SECOND_MICROSECOND SELECT SENSITIVE SEPARATOR SET SHOW SMALLINT SOME SONAME SPATIAL SPECIFIC SQL SQLEXCEPTION SQLSTATE SQLWARNING SQL_BIG_RESULT SQL_CALC_FOUND_ROWS SQL_SMALL_RESULT SQL_TSI_DAY SQL_TSI_FRAC_SECOND SQL_TSI_HOUR SQL_TSI_MINUTE SQL_TSI_MONTH SQL_TSI_QUARTER SQL_TSI_SECOND SQL_TSI_WEEK SQL_TSI_YEAR SSL STARTING STRAIGHT_JOIN STRIPED TABLE TABLES TERMINATED THEN TIMESTAMPADD TIMESTAMPDIFF TINYBLOB TINYINT TINYTEXT TO TRAILING TRUE UNDO UNION UNIQUE UNLOCK UNSIGNED UPDATE USAGE USE USER_RESOURCES USING UTC_DATE UTC_TIME UTC_TIMESTAMP VALUES VARBINARY VAR CHAR VARCHARACTER VARYING WHEN WHERE WHILE WITH WRITE XOR YEAR_MONTH ZEROFILL 26

SQL c.d. Komentarze MySQL toleruje następujące trzy sposoby wstawiania komentarzy: od znaczka `#' do końca linii, od znaczka `--' do końca linii. Uwaga! Użycie `--' (ang. double-dash) wymaga, aby za drugim myślnikiem stała co najmniej jedna spacja lub znak nowej linii. Od sekwencji `/*' (otwierającej komentarz) do najbliższej sekwencji `*/'. (zamykającej komentarz). Sekwencja otwierająca nie musi być w tej samej linii co zamykająca, co pozwala na pisanie komentarzy wielolinijkowych. 27

SQL c.d. SELECT 1 + 1; #Ten komentarz jest aż do końca linii. SELECT 1 + 1; -- Ten komentarz jest aż do końca linii. SELECT 1 /* To jest komentarz jednolinijkowy */ + 1; SELECT 1 + /* To jest komentarz wielolinijkowy */ 1; 28

SQL c.d. Typy kolumn tabel MySQL umożliwia tworzenie kolumn z danymi typu: numerycznego, data i czas, znakowego. 29

SQL c.d. MySQL umożliwia tworzenie kolumn numerycznych o następujących typach (poniżej parametr M oznacza największy możliwy rozmiar podczas wyświetlania liczby, natomiast D oznacza liczbę cyfr po kropce dziesiętnej): 1. TINYINT[(M)] [UNSIGNED] [ZEROFILL] Bardzo mały integer. Zakres dla liczb ze znakiem od -128 do 127, natomiast dla liczb bez znaku od 0 do 255. 2. BIT - synonim TINYINT 3. BOOL - synonim TINYINT 4. BOOLEAN - synonim TINYINT 5. SMALLINT[(M)] [UNSIGNED] [ZEROFILL] Mały integer. Zakres dla liczb ze znakiem od -32768 do 32767, natomiast dla liczb bez znaku od 0 do 65535. 6. MEDIUMINT[(M)] [UNSIGNED] [ZEROFILL] Średniej wielkości integer. Zakres dla liczb ze znakiem od -8388608 do 8388607, dla liczb bez znaku od 0 do 16777215. 7. INT[(M)] [UNSIGNED] [ZEROFILL] Normalnej wielkości integer. Zakres dla liczb ze znakiem od -2147483648 do 2147483647, natomiast dla liczb bez znaku od 0 do 4294967295. 8. INTEGER[(M)] [UNSIGNED] [ZEROFILL] - synonim INT. 30

SQL c.d. 9. BIGINT[(M)] [UNSIGNED] [ZEROFILL] Duży integer. Zakres dla liczb ze znakiem od -9223372036854775808 do 9223372036854775807, natomiast dla liczb bez znaku od 0 do 18446744073709551615. 10. FLOAT(p) [UNSIGNED] [ZEROFILL] Liczba zmiennoprzecinkowa. P oznacza precyzję i może przyjąć wartości od 0 do 24 dla liczb pojedynczej precyzji oraz od 25 do 53 dla liczb podwójnej precyzji. Te typy odpowiadają tradycyjnie zapisywanym typom FLOAT i DOUBLE FLOAT(p) 11. FLOAT[(M,D)] [UNSIGNED] [ZEROFILL] Liczba zmiennoprzecinkowa pojedynczej precyzji. Możliwe wartości są następujące: od -3.402823466E+38 do -1.175494351E-38, 0, oraz od 1.175494351E-38 do 3.402823466E+38. Jeśli podano parametr UNSIGNED wartości mniejsze od zera są niedozwolonea. M jest "szerokością" wypisywanej liczby natomiast D jest liczbą cyfr po przecinku. 12. DOUBLE[(M,D)] [UNSIGNED] [ZEROFILL] Liczba zmiennoprzecinkowa podwójnej precyzji. Możliwe zakresy są następujące od -1.7976931348623157E+308 do - 2.2250738585072014E-308, dla liczb ze znakiem, 0, oraz od 2.2250738585072014E-308 do 1.7976931348623157E+308 dla liczb bez znaku. 13. DOUBLE PRECISION[(M,D)] [UNSIGNED] [ZEROFILL] - synonim DOUBLE. 14. REAL[(M,D)] [UNSIGNED] [ZEROFILL] - synonim DOUBLE. 15. DECIMAL[(M[,D])] [UNSIGNED] [ZEROFILL] "Niespakowana" liczba stałoprzecinkowa. Zachowuje się tak, jak dana typu CHAR. "Niespakowana" oznacza, że liczba jest przechowywana tak jak znaki, tzn. jeden znak na każdą cyfrę. M jest maksymalną liczbą cyfr a D jest liczbą dziesiątek. 16. DEC[(M[,D])] [UNSIGNED] [ZEROFILL] - synonim DECIMAL 17. NUMERIC[(M[,D])] [UNSIGNED] [ZEROFILL] - synonim DECIMAL 18. FIXED[(M[,D])] [UNSIGNED] [ZEROFILL] - synonim DECIMAL 31

SQL c.d. MySQL umożliwia tworzenie następujących kolumn typu: data i czas: 1. DATE - data z zakresu od '1000-01-01' do '9999-12-31'. MySQL wyświetla datę w formacie 'YYYY-MM-DD', ale możliwe jest wprowadzanie wartości do pól typu DATE zarówno w postaci znakowej jak też numerycznej. 2. DATETIME - data i czas z zakresu od '1000-01-01 00:00:00' do '9999-12-31 23:59:59'. MySQL wyświetla DATETIME w formacie 'YYYY-MM-DD HH:MM:SS', ale możliwe jest wprowadzanie wartości zarówno w postaci znakowej jak też numerycznej. 3. TIMESTAMP[(M)] - data i czas z zakresu '1970-01-01 00:00:00' aż do roku 2037. Pierwsza kolumna typu TIMESTAMP jest automatycznie ustawiana na datę i czas ostatnio wykonywanej operacji, jeśli nie ustawimy wartości samodzielnie. To samo można osiągnąć ustawiając explicite wartość NULL. Od wersji 4.1 MySQL-a TIMESTAMP jest wyświetlany jako string w formacie 'YYYY-MM-DD HH:MM:SS', ale jeśli chcemy otrzymać liczby powinniśmy dodać +0 do kolumny TIMESTAMP. W wersji 4.0 MySQL (i niższych) wartości z pól typu TIMESTAMP są wyświetlane w formacie 'YYYYMMDDHHMMSS', 'YYMMDDHHMMSS', 'YYYYMMDD', 'YYMMDD' w zależności od tego, czy M było odpowiednio równe 14 (albo zostało opuszczone), 12, 8, lub 6. Argument M definiuje tylko sposób wyświetlania wartości kolumn typu TIMESTAMP, nie działa natomiast na sposób przechowywania danych tego typu; każda dana typu TIMESTAMP jest przechowywana w 4 bajtach. 4. TIME - czas z zakresu od '-838:59:59' do '838:59:59'. MySQL wyświetla czas w formacie 'HH:MM:SS' ale możliwe jest wprowadzanie wartości zarówno w postaci znakowej jak też numerycznej. 5. YEAR[(2 4)] - rok w formacie dwu- lub czterocyfrowym. Domyślnym formatem jest format czterocyfrowy. W formacie czterocyfrowym można wprowadzać wartości z zakresu od 1901 do 2155, oraz 0000. W formacie dwucyfrowym można wprowadzać wartości z zakresu od 70 do 69, co oznacza lata od 1970 do 2069. MySQL wyświetla rok w formacie 'YYYY', ale możliwe jest wprowadzanie wartości zarówno w postaci znakowej jak też numerycznej. 32

SQL c.d. MySQL umożliwia tworzenie następujących kolumn typu znakowego : 1. [NATIONAL] CHAR(M) [BINARY ASCII UNICODE] - string o długości M. Jeśli wartość jest krótsza niż wyspecyfikowana w definicji typu kolumny tablicy, wtedy brakujące znaki są uzupełnione znakami spacji. M może przybierać wartości od 0 do 255. Kolumny typu M z M większym od 255 są zamieniane na kolumny typu TEXT, które mogą przechowywać dane o długości takiej jak wyspecyfikowano, np. kolumna typu CHAR(500) jest zamieniana do kolumny typu TEXT, a kolumna typu CHAR(200000) jest zamieniana do kolumny typu MEDIUMTEXT. CHAR jest skrótem od CHARACTER. NATIONAL CHAR (lub jeszcze krócej NCHAR) jest skrótem od standardowego sposobu definiowania typu kolumn w języku SQL, używając domyślnego sposobu kodowania (latin2, utf8, itp). Atrybut BINARY powoduje, że takie funkcje jak sortowanie czy porównywanie będzie wrażliwe na wielkość liter danych kolumn typu CHAR. Atrybut ASCII przypisuje automatycznie kodowanie typu latin1 do typu kolumny. Atrybut UNICODE przypisuje automatycznie kodowanie typu ucs2 do kolumny typu CHAR. Można utworzyć kolumnę typu CHAR(0), co przydaje się czasem do starszych wersji definicji danych, które wymagały istnienia kolumny ale tak naprawdę nigdy danych z tej kolumny nie używały. Kolumny typu CHAR(0) nie zdefiniowane jako NOT NULL zajmują tylko 1 bit pamięci i mogą przyjmować tylko wartości NULL lub ''. 2. CHAR - synonim typu CHAR(M) 3. [NATIONAL] VARCHAR(M) [BINARY] - string zmiennej długości. Parametr M reprezentuje maksymalną długość stringu, nie większą niż 255 znaków. VARCHAR jest skrótem od CHARACTER VARYING. Atrybut BINARY powoduje, że takie funkcje jak sortowanie czy porównywanie będzie wrażliwe na wielkość liter 4. TINYBLOB - typ danych kolumny typu BLOB o maksymalnej długości 255 (2^8-1) znaków. 5. TINYTEXT typ danych kolumny typu TEXT o maksymalnej długości 255 (2^8-1) znaków. 6. BLOB typ danych kolumny typu BLOB o maksymalnej długości 65,535 (2^16-1) znaków. 33

SQL c.d. 7. TEXT typ danych kolumny typu TEXT o maksymalnej długości 65,535 (2^16-1) znaków. 8. MEDIUMBLOB typ danych kolumny typu BLOB o maksymalnej długości 16,777,215 (2^24-1) znaków. 9. MEDIUMTEXT typ danych kolumny typu TEXT o maksymalnej długości 16,777,215 (2^24-1) znaków. 10. LONGBLOB typ danych kolumny typu BLOB o maksymalnej długości 4,294,967,295 lub 4GB (2^32-1) znaków. 11. LONGTEXT typ danych kolumny typu TEXT o maksymalnej długości 4,294,967,295 lub 4GB (2^32-1) znaków. 12. ENUM('wart1','wart2',...) - Typ wyliczeniowy. String, który może mieć tylko jedną z wartości 'wart1','wart2',... przedstawionych na liście, lub wartość pustą NULL, lub specjalną wartość błędu ''. Kolumna typu ENUM może mieć tylko 65,535 różnych wartości. Wewnętrznie (w pamięci) dane kolumny typu ENUM są reprezentowane jak liczby całkowite. 13. SET('wart1','wart2',...) Zestaw. String, który może mieć zero lub więcej wartości, wybranych z listy: 'wart1','wart2',... Kolumna typu SET może mieć najwyżej 64 różnych wartości. Wewnętrznie (w pamięci) dane kolumny typu SET są reprezentowane jak liczby całkowite. 34

MySQL - operacje na bazie danych Tworzenie bazy danych -- Zapytanie utworzy nową bazę danych o nazwie produkty: CREATE DATABASE produkty; -- Polecenie przełączy użytkownika do bazy o nazwie produkty: USE produkty; 35

MySQL - operacje na bazie danych c.d. Tworzenie tabeli -- Zapytanie utworzy nową bazę danych o nazwie klienci: CREATE TABLE klienci ( klientid INT NOT NULL AUTO_INCREMENT PRIMARY KEY, imie_i_nazwisko VARCHAR(60) NOT NULL, adres VARCHAR(50) NOT NULL, miejscowosc VARCHAR(30) NOT NULL, ) TYPE = MYISAM; 36

MySQL - zarządzanie rekordami Zapisywanie do bazy wiersza danych umożliwia polecenie INSERT. Składnia polecenia jest następująca: INSERT [INTO] nazwa_tabeli [(nazwa_kol1, nazwa_kol2, )] VALUES (wartosc1, wartosc2, ); -- Przykłady wstawiania rekordu do tabeli klienci: INSERT INTO klienci VALUES (NULL, Jan Kowalski, Leśna 3/21, Sopot ); INSERT INTO klienci (imie_i_nazwisko, adres, miejscowosc) VALUES ( Jan Nowak, Polna 2, Gdańsk ); 37

MySQL - zarządzanie rekordami Modyfikowanie rekordów umożliwia polecenie UPDATE. Składnia polecenia jest następująca: UPDATE [LOW_PRIORITY] [IGNORE] nazwa_tab SET nazwa_kol1=wyr1 [, nazwa_kol2=wyr2...] [WHERE definicja_where] [ORDER BY...] [LIMIT liczba_wierszy] ; -- Przykłady modyfikacji rekordów: UPDATE tabela SET pole1 = 'Nowa wartość', pole2 = 'Nowa wartość'; UPDATE klienci SET imie_i_nazwisko = 'Jan Serce', adres = 'Leśna 3/21 WHERE klientid = 1; UPDATE produkty SET cena = (cena + 0.5) WHERE jakosc = 4; 38

MySQL - zarządzanie rekordami Usuwanie rekordów umożliwia polecenie DELETE. Składnia polecenia jest następująca: DELETE [FROM] {nazwa_tabeli} [WHERE warunki_wyszukiwania] DELETE FROM produkty WHERE `id` = 3; 39

MySQL wyszukiwanie danych Do wyszukiwania danych w bazie służy polecenie SELECT. Składnia polecenia jest następująca: SELECT [ALL DISTINCT] [TOP n [PERCENT] [WITH TIES]] lista_wyboru [INTO nowa_tabela] FROM tabele_zrodlowe [WHERE warunki_wyszukiwania] [ [GROUP BY [ALL] grupuj_wedlug_wyrazenia [,...n] ] [HAVING warunki_wyszukiwania] [WITH { CUBE ROLLUP }] ] [ORDER BY { nazwy_kolumn [ASC DESC] } [,...n] ] [ COMPUTE { { AVG COUNT MAX MIN SUM } (wyrazenie) } [,...n] [ BY wyrazenie [,...n] ] ] [ FOR BROWSE ] 40

MySQL - wyszukiwanie danych SELECT klientid, imie_i_nazwisko FROM klienci; +----------+-------------------+ klientid imie_i_nazwisko +----------+-------------------+ 1 Jan Nowak 2 Jan Serce +----------+-------------------+ # pobiera wartości wszystkich pól SELECT * FROM produkty; SELECT klientid, imie_i_nazwisko FROM klienci WHERE klientid = 2; +----------+-------------------+ klientid imie_i_nazwisko +----------+-------------------+ 2 Jan Serce +----------+-------------------+ 41

MySQL - wyszukiwanie danych -- łączenie dwóch tabel: SELECT zamowienia.zamowieniaid, zamowienia.wartosc, zamowienia.data FROM klienci, zamowienia WHERE klienci.imie_i_nazwisko = Jan Nowak AND klienci.klientid = zamowienia.klientid; -- sortowanie (domyslnie od najmniejszego do najwiekszego): SELECT imie_i_nazwisko, adres FROM klienci ORDER BY imie_i_nazwisko; -- DESC (od najwiekszego do najmniejszego): SELECT imie_i_nazwisko, adres FROM klienci ORDER BY imie_i_nazwisko DESC; 42

phpmyadmin phpmyadmin - darmowy, napisany w PHP, menedżer bazy danych MySQL. Aplikacja w wygodny sposób pozwala na edycję zawartości i struktury bazy danych oraz wydawanie zapytań SQL i przygotowywanie zrzutu bazy danych. 43

Rys.5. phpmyadmin - panel logowania 44

Rys.6. Ekran startowy phpmyadmina 45

Rys.7. phpmyadmin tworzymy nową bazę danych 46

Rys.8. phpmyadmin tworzymy nową bazę c.d. 47

Rys.9. phpmyadmin - podgląd bazy danych 48

Rys.10. phpmyadmin tworzymy nową tabelę 49

Rys.11. phpmyadmin definicja kolumn 50

Rys.12. phpmyadmin struktura nowej tabeli 51

Rys.13. phpmyadmin dodaj rekord 52

Rys.14. phpmyadmina dodaj rekord 53

Rys.15. phpmyadmina widok tabeli 54

Architektura internetowej baz danych Przeglądarka Serwer www Interpreter PHP Serwer MySQL Rys.1. Architektura internetowej bazy danych 55

Obsługa baz danych w PHP na przykładzie MySQL PHP obsługuje bazy danych poprzez zestaw różnych funkcji. Każda baza posiada swój zestaw, np. dla bazy MySQL funkcje zaczynają się od mysql_. Dostęp do bazy danych z poziomu PHP prezentuje schemat: <?php połącz_z_bazą(); wybierz_bazę(); wyślij_zapytanie(); pobierz_wyniki(); while(isnieje_wiersz) pobierz_wiersz(); zamknij_połączenie();?> 56

Obsługa baz danych w PHP na przykładzie MySQL <?php mysql_connect('localhost', 'użytkownik', 'haslo'); // 1 mysql_select_db('produkty'); // 2 $query = 'SELECT `id`, `nazwa`, `ilosc` FROM `produkty` ORDER BY `ilosc`'; $result = mysql_query($query); // 3 echo '<ul>'; while($row = mysql_fetch_assoc($result)) // 4 { echo '<li> '. $row['id']. ' -. $row['nazwa']. ' -. $row['ilosc']. '</li>'; } echo '</ul>'; mysql_close() (); // 5?> 57

Obsługa baz danych w PHP na przykładzie MySQL 1. Funkcja mysql_connect()- przyjmuje parametry: serwer, nazwa użytkownika, hasło, powoduje nawiązanie połączenia z bazą danych. 2. Funkcja mysql_select_db()- wybiera bazę danych, na której będziemy pracować. 3. Funkcja mysql_query()- wysyła zapytanie do bazy. W zależności od jego rodzaju generuje: zbiór wyników - dla zapytań SELECT, true - dla zapytań typu INSERT jeśli wykonanie zapytania się powiodło, false - w przypadku jakiegokolwiek błędu w zapytaniu. 4. mysql_fetch_assoc() pobiera kolejny rekord ze zbioru wyników $result jako tablicę asocjacyjną. Istnieją jeszcze mysql_fetch_num() (numeryczne indeksy tablicy) oraz mysql_fetch_array() (połączenie obu tych sposobów). 5. mysql_close() zamyka połączenie z bazą. 58

Dziękuję za uwagę!!! 59