Zestaw ćwiczeń1 Dzięki DDL (Data Definition Language) można operować na strukturach, w których dane są przechowywane czyli np. dodawać, zmieniać i kasować tabele lub bazy. Najważniejsze polecenia tej grupy to: CREATE (np. CREATE TABLE, CREATE DATABASE,...) utworzenie struktury (bazy, tabeli, indeksu itp.), DROP (np. DROP TABLE, DROP DATABASE,...) usunięcie struktury, ALTER (np. ALTER TABLE ADD COLUMN...) zmiana struktury (dodanie kolumny do tabeli, zmiana typu danych w kolumnie tabeli). Utworzenie bazy danych ksiegarnia_internetowa 1. CREATE DATABASE ksiegarnia_internetowa; 2. ROZDUDOWANE POLECENIE: CREATE DATABASE ksiegarnia_internetowa DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci; zagwarantuje nam poprawne wyświetlanie polskich liter. Usunięcie bazy danych ksiegarnia_internetowa 1. DROP DATABASE ksiegarnia_internetowa; Tworzenie przykładowych tabel bazy ksiegarnia_internetowa CREATE TABLE klienci ( klient_id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, nazwisko CHAR(50) NOT NULL, adres CHAR(100) NOT NULL, miejscowosc CHAR(30) NOT NULL ); CREATE TABLE zamowienia ( zamowienie_id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, klient_id INT UNSIGNED NOT NULL, wartosc FLOAT(6,2), data DATE NOT NULL ); Atrybuty kolumn NOT NULL AUTO_INCREMENT - dosłownie automatyczny przyrost 1
Indeksy, to struktury danych umożliwiające szybkie wyszukiwanie danych w bazie danych. Mówiąc krótko - bez indeksów, baza danych działałaby bardzo powoli. Dobra wiadomość - w kolumnach, które zostały wskazane jako klucze, indeksy są tworzone automatyczne. Jest co prawda polecenie SQL CREATE INDEX, ale na naszym poziomie nie będziemy go stosować. PRIMARY KEY - kolumna jest kluczem głównym tabeli. Omówienie podstawowych wiadomości o typach kolumn Podczas tworzenia nowej tabeli, należy każdej kolumnie przypisać odpowiedni typ danych. klient_id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, W pierwszej kolumnie klient_id mogą znajdować się tylko liczby całkowite nieujemne. Wynika to z zastosowania opisanych wcześniej atrybutów AUTO_INCREMENT oraz PRIMARY KEY. Liczby całkowite określa się mianem INT, natomiast UNSIGNED wyklucza zastosowanie liczb ujemnych. wartosc FLOAT(6,2), Kolumna wartosc jest deklarowana, jako FLOAT(6,2). Są to liczby zmiennoprzecinkowe znane Ci z matematyki jako liczby rzeczywiste. Na przykład liczby 6.23, 24.455 są przykładami liczb zmiennoprzecinkowych. Przy czym piszemy kropki, nie przecinki. Pierwsza liczba w nawiasach oznacza maksymalną liczbę cyfr jaka może być wyświetlona, natomiast liczba druga - ilość cyfr pokazywanych po przecinku. Złotówka ma 100 groszy, więc kwoty będą pokazywane z dokładnością do 2 miejsc po przecinku. Typ TINYINT UNSIGNED oznacza liczby całkowite z zakresu 0..255. Typ TEXT jest stosowany w przypadku długich tekstów. Polecenia SHOW i DESCRIBE Polecenia SHOW i DESCRIBE powodują wyświetlenie informacji o bazie danych oraz poszczególnych tabelach. Działanie przetestujemy wykonując ćwiczenia. Wpisz polecenie SQL SHOW TABLES i wciśnij Wykonaj. Pokazanie informacji na temat wskazanej tabeli Wpisz polecenie SQL DESCRIBE ksiazki i wciśnij Wykonaj. Zapisywanie danych w bazie Polecenie języka SQL, służące do wstawiania wiersza danych do tabeli, to INSERT. Składnia tego polecenia jest następująca: 2
INSERT INTO nazwa_tabeli [(kolumna1, kolumna2, kolumna3...)] VALUES(wartosc1, wartosc2, wartosc3...); Do tabeli: CREATE TABLE klienci ( klient_id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, nazwisko CHAR(50) NOT NULL, adres CHAR(100) NOT NULL, miejscowosc CHAR(30) NOT NULL ); Przykłady a wstawianie rekordów: 1. INSERT INTO klienci VALUES(NULL, 'Anna Kowalska', 'Piłsudskiego 24/5', 'Krasnystaw'); 2. INSERT INTO klienci (adres, nazwisko, miejscowosc) VALUES('Lubelska 8/12', 'Zdzisław Bęben', 'Warszawa'); 3. INSERT INTO klienci SET adres='lwowska 10/22', nazwisko='mirosław Mróz', miejscowosc='lublin'; Zwróć uwagę, że tym razem zastosowaliśmy inny sposób wypełniania pól. 4. Wstawianie kilku wierszy do tabeli INSERT INTO klienci VALUES (NULL, 'Jan Prędki', 'Kwiatowa 8', 'Zabrze'), (NULL, 'Józef Koń', 'Zatybrze 23', 'Rzym'), (NULL, 'Ferdynand Kiepski', 'Piwna 13/13', 'Wrocław'); Wyszukiwanie danych Do wyszukiwania w bazie wierszy tabel spełniających zadane kryteria służy polecenie SELECT. Może być ono wykonywane na różne sposoby z wielu opcjami. Można śmiało powiedzieć, że jest to najważniejsze polecenie SQL. SELECT [opcje] pozycje [INTO plik] FROM nazwy_tabel [WHERE warunek] [GROUP BY rodzaj_grupowania] [HAVING wartość_funkcji] [ORDER BY porządek_sortowania] [LIMIT limit] [PROCEDURE nazwa_procedury(argumenty)] [opcje_zamka]; 3
Operatory porównania, najczęściej stosowane w klauzuli WHERE Operator Nazwa, jeżeli jest stosowana = równy klient_id=5 Przykład > większy od wartosc>70.00 < mniejszy od wartosc<70.00 >= większy lub równy wartosc>=66.30 <= mniejszy lub równy wartosc<=66.30!= lub <> różny wartosc!=66.30 IS NOT NULL adres IS NOT NULL Opis sprawdza, czy obie wartości są sobie równe wartość, jest większa od drugiej wartość, jest mniejsza od drugiej wartość, jest większa lub równa drugiej wartość, jest mniejsza lub równa drugiej sprawdza, czy dwie wartości są różne sprawdza, czy pole posiada wartość IS NULL adres IS NULL sprawdza, czy pole jest puste BETWEEN IN NOT NOT IN LIKE NOT LIKE wyszukiwanie wzorca wyszukiwanie wzorca cena BETWEEN 25.30 AND 90.20 miejscowosc IN('Krasnystaw', 'Warszawa') miejscowosc NOT IN('Krasnystaw', 'Warszawa') nazwisko LIKE 'Józef %' nazwisko NOT LIKE 'Józef %' Sprawdza czy wartość należy do podanego przedziału wartości sprawdza, czy wartość należy do podanego zbioru wartości sprawdza, czy wartość nie należy do podanego zbioru wartości sprawdza, czy wartość pasuje do określonego wzorca sprawdza, czy wartość nie pasuje do określonego wzorca Zadanie: Utwórz bazę danych o nazwie biblioteka_4ag1. Utwórz odpowiednio tabele: W bazie danych znajduje się sześć tabel: 4
czytelnik - posiada informacje o czytelnikach zarejestrowanych w programie (Tabela 1.); zamowienie - posiada informacje o zamówionych, wypożyczonych czy oddanych książkach w bibliotece (Tabela 2.); kategoria - tabela zawierająca wszystkie kategorie książek w systemie (Tabela 3.); ksiazka - wszystkie książki dodane do bazy danych (Tabela 4.); bibliotekarz - posiada informacje o bibliotekarzach zarejestrowanych w programie (Tabela 5.); admin - posiada informacje o administratorach zarejestrowanych w programie (Tabela 6.). Tabele 1-6 prezentują strukturę tabel. Tabela 1. czytelnik id_czytelnik Klucz główny przydzielony automatycznie 5
login Nazwa czytelnika potrzeba przy logowaniu haslo Hasło niezaszyfrowane imie Imię nazwisko Nazwisko adres Adres zamieszkania np.: ul. Przykład 3/12 miasto Miasto wojewodztwo Nazwa województwa telefon Telefony kod_pocztowy Kod pocztowy email Adres e-mail Tabela 2. zamowienie id_zamowienie Klucz główny przydzielony automatycznie id_czytelnik Klucz obcy z tabeli "czytelnik" id_ksiazka Klucz obcy z tabeli "ksiazka" data_zamowienia Data złożenia zamówienia w bibliotece data_odbioru Data odbioru książki z biblioteki data_zwrotu Data zwrotu książki do biblioteki Tabela 3. kategoria id_kategoria Klucz główny przydzielony automatycznie nazwa Nazwa kategorii Tabela 4. ksiazka id_ksiazka Klucz główny przydzielony automatycznie id_kategoria Klucz obcy z tabeli "kategoria" isbn Niepowtarzalny 13-cyfrowy identyfikator książki tytul Tytuł książki autor Imię i Nazwisko autora książki stron Liczba stron książki wydawnictwo Nazwa wydawnictwa, w którym wydano książkę rok_wydania Rok wydania książki opis Opis książki 6
Tabela 5. bibliotekarz id_bibliotekarz Klucz główny przydzielony automatycznie login Nazwa bibliotekarza potrzebna przy logowaniu haslo Hasło niezaszyfrowane Tabela 6. admin id_admin Klucz główny przydzielony automatycznie login Nazwa administratora potrzebna przy logowaniu haslo Hasło niezaszyfrowane Za pomocą wzoru utwórz relacje między tabelami: 7