> back <  > home <

zeszyt_bazy_danych.txt

__        _         _        ___  
|  |   ___| |_ ___  |_|___   |_  |  
|  |__| -_| '_|  _| | | .'|   _| |_
|_____|___|_,_|___|_| |__,|  |_____|
                  |___|            
(czcionka: Rectangles)
T: Czym są bazy danych

Baza danych - uporządkowany zbiór informacji, zwykle na wcześniej określony temat.

Rodzaje baz danych:
- proste
  - kartotypowe (kazdy element jest niezalezny)
  - hierarhiczne
- złożone
  - relacyjna (SQL)
  - nierelacyjna (noSQL)
  - obiektowa

Warunki bazy relacyjnej:
- Wszystkie dane oparte są na prostych typach danych
- Wszystkie dane przedstawiane są w formie dwuwymiarowych tabel
- Tabela może składać się z 0 lub większej ilości wierszy, wiersz nazywa się "krotka"
- Tabela może składać się z 1 lub większej ilości kolumn, kolumna nazywa się "atrybut"
- Możliwe jest w niej porównywanie zawartości w poszczególnych kolumnach w obrębie jendej lub większej ilości tabel
- Wiersze przechowywane są w dowolnym porządku i nie musi on odzwierciedlać kolejności ich wprowadzania
- Każda tabela musi posiadać kolumnę, która jednoznacznie identyfikuje dany wiersz (PRIMARY KEY)

__        _         _        ___
|  |   ___| |_ ___  |_|___   |_  |
|  |__| -_| '_|  _| | | .'|  |  _|
|_____|___|_,_|___|_| |__,|  |___|
                  |___|      
T: DBMS

DBMS (Database Managment System) - Oprogramowanie służące do zarządzania bazą danych.

W skład DBMS wchodzą:
- Mechanizmy administrowania danymi
- Środki zapewniające integralność i bezpieczeństwo danych
- Środki pozwalające na odtworzenie danych po awarii
- Dostp do danych przez język SQL
- Wielodostępność do danych przez tzw. transakcje
- Środki optymalizujące czas dostępu do danych tzw. indexy

__        _         _        ___
|  |   ___| |_ ___  |_|___   |_  |
|  |__| -_| '_|  _| | | .'|  |_  |
|_____|___|_,_|___|_| |__,|  |___|
                  |___|          
T: Microsoft Access.

Typy danych:
- Tekst (max. 255 znaków)
- Nota (max. 65535 znaków)
- Bajt (0 - 255)
- Liczba całkowita (-32768 - 32767)
- Liczba całkowita długa (-2147000 - 2147000)
- Pojedyńcza precyzja (-3.4 * 10^38 - 3.4 * 10^38)
- Podwójna precyzja (-1.7 * 10^308 - 1.7 * 10^308)
- Waluta
- Tak / nie
- Obiekt OLE
- Hiperłącze
- Załącznik
- Autonumerowanie

Jedną z właściwości kolumn jest format jej wyświetlania. Dla typów "liczba", "waluta", "data", "godzina" oraz "tak / nie"
możemy korzystać z gotowych do użycia formatów Accessa, jednak istnieje też możliwość stworzenia własnego.

Wybrane symbole używane do tworzenia formatów w Accessie:
Typ danych       Symbol    Znaczenie
---------------------------------------------------------------
Dowolny          "tekst"   dodatkowy tekst
                 \znak     dodatkowy znak
                 [kolor]   kolor tekstu w tabeli (czarny, niebieski, zielony, czerwony, żółty, biały lub błękitny)
---------------------------------------------------------------
Tekst            @         wyświetla zawartość pola
                 >         zamienia małe litery na duże
                 <         zamienia duże litery na małe
---------------------------------------------------------------
Data / godzina   d         dzień miesiąca 1 - 31
                 dd        dzień miesiąca 01 - 31
                 ddd       dzień tygodnia np. pon
                 dddd      dzień tygodnia np. poniedziałek
                 m         miesiąc roku 1 - 12
                 mm        miesiąc roku 01 - 12
                 mmm       miesiąc roku np. cze
                 mmmm      miesiąc roku np. czerwiec
                 r         dzień roku 0-366
                 rr        dwie ostatnie cyfry roku
                 rrrr      rok
---------------------------------------------------------------
Liczba, waluta,  #         zastępuje cyfrę, która może być wprowadzona
autonumeroanie   0         zastępuje cyfrę, która MUSI być wprowadzona
                 %         wyświetla liczbę w formacie procentowym

Zasady tworzenia własnych formatów:
- Format dla tekstu i noty składa się z dwóch części. Pierwsza część formatuje pole z zawartością, druga formatuje pole puste.
- Format dla liczby i waluty składa się z czterech części oddzielonych od siebie średnikiem. Pierwsza część formatuje wartość dodatnią,
druga część wartości ujemne, trzecia część odpowiada za formatowanie zera, a czwarta za formatowanie pola pustego.
- Format dla "tak / nie" rozpoczyna się od średnika i składa się z dwóch części oddzielonych od siebie średnikiem.
Pierwsza część formatuje prawdę, druga część formatuje fałsz.

Przykłady:
>@[Żółty]" kek"
     Powiększy tekst, dopisze "kek" na końcu i wyświetli to wszystko na żółto.
>@[Żółty]" kek";[Czerwony]"Podaj nazwisko"
     Zadziała tak samo, jak poprzedni format, ale w przypadku niepodania nazwiska, wyświetli czerwony tekst "Podaj nazwisko".
rrrr\ r
     Wyświetli rok i dzień roku z podanej daty.
000;[Czerwony]"na minusie!";;[Czerwony]"nie podano"
     Wyświetli liczbę i w razie konieczności doda zera z przodu tak, aby była ona trzycyfrowa.
     W przypadku pustej wartości, wyświetli się czerwony tekst "nie podano", a w przypadku podania wartości mniejszej od 0,
     czerwony tekst "na minusie!".
;"owszem";"nie za bardzo"
     W przypadku wartości "tak" wyświetli napis "owszem", w przeciwnym wypadku - "nie za bardzo".

Maska wprowadzania to właściwość komulny, która określa, w jaki sposób dane są wprowadzane do kolumny w tabeli.
Aby ją stworzyć, należy użyć następujących symboli wieloznacznych:

0 - Cyfra, która musi być wprowadzona. Znaki + i - są niedozwolone.
9 - Cyfra, która może być wprowadzona. Znaki + i - są niedozwolone.
# - Cyfra lub spacja, która może być wprowadzona. Znaki + i - są dozwolone.
L - Litera, która musi być wprowadzona.
? - Litera, która może być wprowadzona.
A - Litera lub cyfra, która musi być wprowadzona.
a - Litera lub cyfra, która może być wprowadzona.
& - Spacja lub dowolny znak, który musi być wprowadzony.
C - Spacja lub dowolny znak, który może być wprowadzony.
> - Zamienia małe litery na duże.
> - Zamienia duże litery na małe.
\ - Zamienia znak specjalny na zwykły symbol.

Przykłady:
Dla kodu pocztowego, użyjemy formatu 00\-000 i maski wprowadzania 00\-000.
Dla nazwiska o długości 3-10 liter i pierwszej z nich dużej użyjemy maski >L<LL???????.

Wartość domyślna to dane wprowadzane automatycznie do danej kolumny podczas wprowadzania rekordu.

Reguła sprawdzania poprawności pozwala zdefiniować warunki, jakie muszą spełnić wprowadzone dane. W przypadku wprowadzenia
danych niezgodnych z regułą, wyświetlony zostanie odpowiedni komunikat. W regule poprawności można stosować operatory logiczne
AND, OR, NOT itp. oraz operatory matematyczne >, <, >=, <=, <> (różny) itp.

Przykład:
>=15 And <65 pozwoli na wprowadzenie tylko liczb z przedziału <15;65).
<=Date() pozwoli tylko na wprowadzenie daty z przeszłości lub dzisiejszej.

Wymagane określa, czy pole może pozostać puste prz tworzeniu nowego rekordu.

Indeksowanie ma za zadanie przyspieszyć proces wyszukiwania danych. Indeksujemy tylko te kolumny, według których
zamierzany wyszukiwać dane. Ideksowanie może przyjąć jedną z trzech wartości:
- TAK (bez duplikatów) - Wartości w kolumnie nie mogą się powtarzać.
- TAK (duplikatami OK) - Wartości w kolumnie mogą się powtarzać.
- NIE

__        _         _        ___
|  |   ___| |_ ___  |_|___   | | |
|  |__| -_| '_|  _| | | .'|  |_  |
|_____|___|_,_|___|_| |__,|    |_|
                  |___|          
T: Relacje w bazie danych.

Typy relacji:
- Relacja 1:1 - jednemu rekordowi z tabeli A odpowiada jeden rekord z tabeli B i vice versa.
- Relacja 1:wiele - jednemu rekordowi z tabeli A odpowiada wiele rekordów z tabeli B oraz jednemu rekordowi z tabeli B odpowiada jeden rekord z tabeli A.
- Relacja wiele:wiele - jednemu rekordowi z tabeli A odpowiada wiele rekordów z tabeli A oraz jednemu rekordowi z tabeli B odpowiada wiele rekordów z tabeli A.

Zasady tworzenia relacji:
- W 1:1 łączymy relacją dwa klucze podstawowe - z tabeli A i B.
- W 1:wiele łączymy kolumnę z kluczem z tabeli A z kolumną bez klucza z tabeli B.
- W wiele:wiele używamy trzeciej dodatkowej tabeli, która łączy tabelę A i tabelę B.
- Łączone kolumny muszą posiadać takie same lub pokrewne typy danych.
- Rozmiary pola typu liczbowego w obu kolumnach muszą być identyczne.
- Kolumny muszą przechowywać takie same informacje.

Przed tworzeniem relacji należy zamknąć tryb edycji na obu tabelach.
Tylko jedna tabela (nadrzędna) może zawierać autonumerowanie.
                                  
__        _         _        ___
|  |   ___| |_ ___  |_|___   |  _|
|  |__| -_| '_|  _| | | .'|  |_  |
|_____|___|_,_|___|_| |__,|  |___|
                  |___|          
T: SQL

http://localhost/phpmyadmin - Panel administratora mySQL

Instrukcje SQL:
SELECT - Wybierz i wyświetl rekordy
INSERT - Wprowadź rekordy
UPDATE - Aktualizuj rekordy
DELETE - Usuń rekordy
CREATE TABLE - Utwórz tabelę
ALTER TABLE - Zmodyfikuj strukturę tabeli

SELECT * FROM `dane_k` WHERE 1
Wyświetli wszystkie rekordy tabeli "dane_k"

SELECT * FROM `dane_k` WHERE 1 LIMIT 5,5
Wyświetli rekordy 6-10 tabeli "dane_k"

SELECT * FROM `dane_k` WHERE `wzrost`<170 LIMIT 0,50
Wyświetli 50 pierwszych osób z "dane_k" niższych niż 170 cm

SELECT * FROM `dane_k` WHERE wiek<=30 AND wiek>= 20
Wyświetli wszystkie osoby z "dane_k" między 20 a 30 rokiem życia włącznie

SELECT * FROM `dane_k` WHERE `nazwisko` LIKE "S%"
Wyświetli wszystkie osoby z nazwiskiem zaczynającym się na literę 'S'

SELECT `imie`,`wzrost` FROM `dane_k` WHERE `nazwisko`="Żukowska"
Wyświetli imiona i wzrost osób z "dane_k", których nazwisko to "Żukowska"

SELECT imie,count(imie) FROM dane_k GROUP BY imie
Wyświetli liczbe osób z "dane_k" noszących dane imie

SELECT `imie`,`wzrost`,`wiek` FROM `dane_k` WHERE `nazwisko`="Sienkiewicz" ORDER BY `wiek` DESC
Wyświetli imiona, wzrost i wiek osób z "dane_k", których nazwisko to Sienkiewicz i posortuje wyświetlane dane malejąco według wieku.

SELECT symbol_woj,count(imie) AS ile FROM dane_k GROUP BY symbol_woj
Wyświetli liczbe osób z "dane_k" zamieszkałych w danym województwie pokaże ją w tabelce "ile"

SELECT symbol_woj,count(symbol_woj) AS "liczba" FROM dane_k GROUP BY symbol_woj HAVING liczba > 20 ORDER BY count(symbol_woj) DESC

SELECT wojewodztwo,count(imie) AS ile FROM dane_k,wojewodztwo WHERE dane_k.symbol_woj=wojewodztwo.symbol_woj GROUP BY dane_k.symbol_woj