lekcja 2 - podstawowe pojęcia i podstawowe zapytania sql

33

Upload: robert-krol

Post on 26-Jun-2015

489 views

Category:

Education


0 download

TRANSCRIPT

Page 1: Lekcja 2 - podstawowe pojęcia i podstawowe zapytania SQL
Page 2: Lekcja 2 - podstawowe pojęcia i podstawowe zapytania SQL

Repeta

Page 3: Lekcja 2 - podstawowe pojęcia i podstawowe zapytania SQL

Modelowanie rzeczywistości

Page 4: Lekcja 2 - podstawowe pojęcia i podstawowe zapytania SQL

Modelowanie i normalizacja

• Normalizacja to bezstratny proces organizowania danych w tabelach mający na celu zmniejszenie ilości danych składowanych w bazie oraz wyeliminowanie potencjalnych anomalii.

http://www.sqlpedia.pl/projektowanie-i-normalizacja-bazy-danych/

Page 5: Lekcja 2 - podstawowe pojęcia i podstawowe zapytania SQL

Różne modele baz danych

• hierarchiczny model danych,

• relacyjny model danych,

• obiektowy model danych, obiektowo-relacyjny.

Page 6: Lekcja 2 - podstawowe pojęcia i podstawowe zapytania SQL

Hierarhiczny

• W modelu hierarchicznym dane są przechowywane na zasadzie rekordów nadrzędnych-podrzędnych, tzn. rekordy przypominają strukturę drzewa. Każdy rekord (z wyjątkiem głównego) jest związany z dokładnie jednym rekordem nadrzędnym.

Page 7: Lekcja 2 - podstawowe pojęcia i podstawowe zapytania SQL

Obiektowa baza danych

• Zbiór obiektów, których zachowanie się, stan oraz związki są określone zgodnie z obiektowym modelem danych. Obiektowy system zarządzania bazą danych jest systemem wspomagającym definiowanie, zarządzanie, utrzymywanie, zabezpieczanie i udostępnianie obiektowej bazy danych.

Page 8: Lekcja 2 - podstawowe pojęcia i podstawowe zapytania SQL

Relacyjne

Page 9: Lekcja 2 - podstawowe pojęcia i podstawowe zapytania SQL

Relacyjne Bazy Danych

Nazewnictwo

Page 10: Lekcja 2 - podstawowe pojęcia i podstawowe zapytania SQL

Atrybut

Page 11: Lekcja 2 - podstawowe pojęcia i podstawowe zapytania SQL

Krotka

Page 12: Lekcja 2 - podstawowe pojęcia i podstawowe zapytania SQL

Encja

Page 13: Lekcja 2 - podstawowe pojęcia i podstawowe zapytania SQL

Relacje

Page 14: Lekcja 2 - podstawowe pojęcia i podstawowe zapytania SQL

Relacje

• Typ relacji jeden-do-jednego występuje wtedy, gdy pojedynczy rekord w jednej tabeli jest powiązany z pojedynczym rekordem w innej tabeli i odwrotnie. Na przykład do jednego wyspecjalizowanego serwera plików może być przydzielony jeden technik.

• Typ relacji jeden-do-wielu występuje wtedy, gdy jeden rekord w tabeli jest powiązany z wieloma rekordami w innej tabeli. Na przykład jeden pracownik może korzystać z kilku składników majątku, takich jak komputer, krzesło i biurko.

• Typ relacji wiele-do-wielu występuje wtedy, gdy kilka rekordów w jednej tabeli jest powiązanych z kilkoma rekordami w innej tabeli. Na przykład w firmie może się znajdować wiele komputerów obsługiwanych przez kilku techników. Wielu techników może być odpowiedzialnych za wiele komputerów.

Page 15: Lekcja 2 - podstawowe pojęcia i podstawowe zapytania SQL

Relacje: klucz główny i klucz obcyAng: Primary key, foreign key

Jeden

wiele

Page 16: Lekcja 2 - podstawowe pojęcia i podstawowe zapytania SQL

Plan

1. Teoria: poważnie o bazach danych, typy danych

2. Sprawdzenie MySQL - logowanie

3. Model danych – faktury i płace

1. Uwzględnia typy, relacje

4. Przeniesienie modelu do systemu bazy danych

5. Wykonywanie poleceń – CREATE TABLE, ALTER, SELECT itd.

6. Koniec – ok. 12:30

Page 17: Lekcja 2 - podstawowe pojęcia i podstawowe zapytania SQL

Definicja bazy danych

Baza danych (ang. database, DB) to zbiór danych zapisanych w ściśle określony sposób w strukturach odpowiadających założonemu modelowi danych.Źródło: Wikiperdia

Zbiór danych reprezentujący wybrany fragmentrzeczywistości.źródło:Banachowski

Zbiór danych trwałych wykorzystywanych przez system aplikacji danej organizacji (firma, bank, szpital, etc.)źródło: Date

Page 18: Lekcja 2 - podstawowe pojęcia i podstawowe zapytania SQL

Główne cechy bazy danych

• Trwałość — najczęściej dane są przechowywaneprzez długi okres czasu, zazwyczaj nieokreślony,

• Duże wolumeny — duża liczba danych wymagainnych metod dostępu niż liniowe,

• Zgodność z rzeczywistością — w związku z tym, iżbaza stanowi odzwierciedlenie fragmenturzeczywistości, to niezbędne jest zapewnieniezgodności danych z bazy z tymi rzeczywistymi,które ulegają zmianom. Model danych.

Page 19: Lekcja 2 - podstawowe pojęcia i podstawowe zapytania SQL

Właściwości bazy danych

• Spójność danych — poprawność danych z punktuwidzenia kryteriów: wiernego odzwierciedleniadanych rzeczywistych, spełnienie ograniczeńnałożonych przez użytkowników, odporności naanomalie dostępu, awarie sprzętowo-program oweoraz błędy użytkowników,

• Współdzielenie danych — dane przechowywane wbazie powinny być dostępne dla wielu osób w tymsamym czasie, należy zapewnić rozwiazywaniekonfliktów typu zapis-zapis,

• Integracja danych — baza danych powinna byćzbiorem nie posiadającym danych redundancyjnych;dane redundancyjne to dane powtarzające się,

Page 20: Lekcja 2 - podstawowe pojęcia i podstawowe zapytania SQL

Właściwości bazy danych cd

• Integralność danych — baza powinna zapewniaćaktualizację danych po obu stronach związkówbędących odzwierciedleniem rzeczywistości,zapobiegnie to sprzeczności pomiędzy dwomapozycjami reprezentującymi ten sam fakt, powinnaistnieć możliwość nakładania ograniczeńintegralnościowych,

• Bezpieczeństwo danych — aby zapewnić integralnośćdanych należy zabezpieczyć dostęp do bazy,wprowadzenie autoryzacji dostępu: dostęp tylko dlaużytkowników identyfikowanych unikalną nazwą ihasłem, a także przydzielanie określonych uprawnieńdo określonych części bazy danych,

Page 21: Lekcja 2 - podstawowe pojęcia i podstawowe zapytania SQL

System zarządzania bazą danych (SZBD)

• Zarządza, organizuje, umożliwia dostęp

Oracle, IBM, Microsoft,Sybase,Access,MySQL, PostgreSQL,FireBird

I inne

Page 22: Lekcja 2 - podstawowe pojęcia i podstawowe zapytania SQL

Dostęp do bazy MySQL

http://hostownik.pl/phpmyadmin/

Login: netcamp_maius(pozycja_dziennik)

Hasło: maius

Page 23: Lekcja 2 - podstawowe pojęcia i podstawowe zapytania SQL

Podstawowe typy danych

Typ Opis

VARCHAR[Length] Pole tekstowe o zmiennej długości

TINYTEXT Łańcuch o maksymalnej długości 255 znaków

TEXT Łańcuch o maksymalnej długości 65535 znaków

MEDIUMTEXT Łańcuch o maksymalnej długości 16777215 znaków

INT[Length]Liczby z zakresu od -2147483648 do 2147483647 lub liczby dodatnie od 0 do 4294967295

DECIMAL[Length, Decimals]Liczba typu DOUBLE przechowywana w postaci łańcucha co pozwala na zastosowanie stałej liczby miejsc po przecinku

DATE Data w formacie YYYY-MM-DD

DATETIME Data w formacie YYYY-MM-DD HH:MM:SS

ENUMEnumeracja (wyliczenie). W kolumnie może się znaleźć jedna z podanych wartości

Page 24: Lekcja 2 - podstawowe pojęcia i podstawowe zapytania SQL

Modelowanie rzeczywistościBaza danych księgowo-płacowych.

Page 25: Lekcja 2 - podstawowe pojęcia i podstawowe zapytania SQL

Zadanie

• Firma handlująca częściami do samochodów rozwija się, zatrudnia nowych pracowników, liczba kontrahentów rośnie. Właściciel firmy chce zorganizować sferę księgowości i płac pracowników. Zleca Tobie utworzenie bazy danych w której przechowywać będzie informacje o pracownikach, stanowiskach, płacach i działach. Dodatkowo, chce mieć bazę faktur kosztowych (otrzymanych przez firmę) -chce by każda faktura przypisana była do pracownika, który dokonał zakupu. Poniżej opisał sposób w jaki weryfikował będzie, że baza danych zaprojektowana została poprawnie.

Page 26: Lekcja 2 - podstawowe pojęcia i podstawowe zapytania SQL

Zadanie Utwórz bazę danych księgowo-płacowych.

Firma handlująca częściami do samochodów rozwija się, zatrudnia nowych pracowników, liczba kontrahentów rośnie. Właściciel firmychce zorganizować sferę księgowości i płac pracowników. Zleca Tobie utworzenie bazy danych w której przechowywać będzie informacje

o pracownikach, stanowiskach, płacach i działach. Dodatkowo, chce mieć bazę faktur kosztowych (otrzymanych przez firmę) - chce by każda faktura przypisana była do pracownika, który dokonał zakupu. Poniżej opisał sposób w jaki weryfikował będzie, że baza danych

zaprojektowana została poprawnie.

Przygotowanie - wszyscy te same dane

Dodaj 4 stanowiska, w tym mechanik (3 500 zł), sprzedawca (2000), starszy sprzedawca (3500).Dodaj działy: naprawy, magazyn, sklepDodaj 10 pracowników, w tym Jana (mechanika), Marka (sprzedawce) i Konrada (sprzedawce)Dodaj 10 faktur w tym 3 zakupy Marka, 2 Konrada i 5 Jana

Działanie Co chce wiedzieć? PodpowiedźKto pracuje na stanowisku starszego sprzedawcy? Charakterystykę osób SELECTIlu jest "normalnych" sprzedawców? Liczba sprzedawców COUNT

Ilu jest sprzedawców ogółem (uwzględnij również "starszych" sprzedawców") Liczba sprzedawców oraz starszych sprzedawcówIN bądź OR, COUNT

Czy pracuje u nas jakiś "jan"? Jeśli pracuje - informacje o nim / nich LCASESuma premii dla poszczególnych pracowników Suma premii, user id GROUP BYSuma premii dla poszczególnych pracowników Suma premii, dane pracownika JOIN

Kto pracuje w jakich działach?Charakterystykę osób (tylko imie, nazwisko), nazwę działu JOIN

Kto zarabia więcej niż 3000 zł (tylko podstawa)? Nie było wcześniej w wymaganiach. Co teraz? JOINDodaj premię dla Marka (300zł), Konrada (800zł) za zeszły miesiąc Charakterystyka osób, kwoty premie BETWEEN

Ile zostało wypłacone w ostatnim miesiacu? Suma wypłat (również premie)SUM, JOIN, BETWEEN

Jakie i komu zostały przyznane premie w zeszłym miesiącu? Charakterystykę osób

Kto dokonał największej liczby zakupów? JOIN

Dodaj premię dla Jana - 300 zł za dobrze wykonaną robotę za aktualny miesiąc INSERTIle zarobili poszczególni pracownicy w zeszłym miesiącu (licząc premie)? Imie, zarobekKto zarobił w ostatnim miesiącu więcej niż 3 000 zł licząc premie?Korekta faktury: wybierz 1 fakture i zmień nip wystawcy na 851213333 UPDATE

Page 27: Lekcja 2 - podstawowe pojęcia i podstawowe zapytania SQL

Podsumowanie

Page 28: Lekcja 2 - podstawowe pojęcia i podstawowe zapytania SQL

Typy danych

Typ Opis

CHAR[Length] Pole o stałej długości, przechowuje od 0 do 255 znaków

VARCHAR[Length] Pole tekstowe o zmiennej długości

TINYTEXT Łańcuch o maksymalnej długości 255 znaków

TEXT Łańcuch o maksymalnej długości 65535 znaków

MEDIUMTEXT Łańcuch o maksymalnej długości 16777215 znaków

LONGTEXT Łańcuch o maksymalnej długości 4294967295 znaków

TINYINT[Length] Liczby z zakresu od -128 do 127 lub liczby dodatnie od 0 do 255

SMALLINT[Length] Liczby z zakresu od -32768 do 32767 lub liczby dodatnie od 0 do 65535

MEDIUMINT[Length]Liczby z zakresu od -8388608 do 8388607 lub liczby dodatnie od 0 do 16777215

INT[Length]Liczby z zakresu od -2147483648 do 2147483647 lub liczby dodatnie od 0 do 4294967295

Page 29: Lekcja 2 - podstawowe pojęcia i podstawowe zapytania SQL

Typy danych cd.

BIGINT[Length]Liczby z zakresu od -9223372036854775808 do 9223372036854775807 lub liczby dodatnie od 0 do 18446744073709551615

FLOAT Mała liczba rzeczywista, zmiennoprzecinkowa

DOUBLE[Length, Decimals]

Duża liczba rzeczywista, zmiennoprzecinkowa

DECIMAL[Length, Decimals]

Liczba typu DOUBLE przechowywana w postaci łańcucha co pozwala na zastosowanie stałej liczby miejsc po przecinku

DATE Data w formacie YYYY-MM-DD

DATETIME Data w formacie YYYY-MM-DD HH:MM:SS

TIMESTAMPData w formacie YYYYMMDDHHMMSS; dopuszczalny zakres kończy się na rok 2037

TIME Data w formacie HH:MM:SS

ENUMEnumeracja (wyliczenie). W kolumnie może się znaleźć jedna z podanych wartości

Page 30: Lekcja 2 - podstawowe pojęcia i podstawowe zapytania SQL

Operatory

OPERATOR FUNKCJA PRZYKŁAD

NOT Służy do sprawdzania wartości przeciwnych. Można go używać przed dowolnym operatorem porównania, z wyjątkiem operatora IS NOT NULL.

NOT > 10 (to samo co<=10).

IN Służy do sprawdzania, czy wartości są równe istniejącym elementom listy. Porównywaną wartością musi być lista rozdzielana przecinkami ujęta w nawiasy.

IN ("Tokio","Paryż","Moskwa")

BETWEEN Służy do sprawdzania, czy wartość należy do zakresu. Należy użyć dwóch wartości do porównania —minimalnej i maksymalnej — i rozdzielić te wartości separatorem AND.

BETWEEN 100 AND 1000(to samo co >=100 AND <=1000)

LIKE Służy do porównywania wartości z ciągami wzorcowymi w polach typu Tekst lub Nota.

LIKE "Geo*"

Page 31: Lekcja 2 - podstawowe pojęcia i podstawowe zapytania SQL

Operatory cd.

IS NOT NULL Wymusza na użytkownikach wprowadzanie wartości w danym polu. Działa tak samo jak ustawienie właściwości pola Wymagane na Tak. Jeśli jednak właściwość Wymagane jest włączona, a użytkownik nie wprowadzi wartości, program Access wyświetli nieco niezrozumiały komunikat o błędzie. Zwykle korzystanie z bazy danych jest łatwiejsze w przypadku użycia wyrażenia IS NOT NULL i wprowadzenia łatwego do zrozumienia komunikatu we właściwości Tekst reguły spr. poprawności.

IS NOT NULL

AND Służy do określania, że wszystkie wprowadzane dane muszą być prawdziwe lub mieścić się w określonych granicach.

>= #2007-01-01# AND <=#2008-03-06#

UWAGA Operatora ANDmożnaużyć także w celu połączenia reguł sprawdzania poprawności. Na przykład: NOT "UK" AND LIKE "U*".

OR Służy do określania, że jedna lub więcej wartości może być prawdziwych.

styczeń OR luty

<</b> Mniejsze niż.<= Mniejsze lub

równe.> Większe niż.>= Większe lub

równe.= Równe.<> Różne od.

Page 32: Lekcja 2 - podstawowe pojęcia i podstawowe zapytania SQL

Przykłady reguł sprawdzania poprawności

REGUŁA SPRAWDZANIA POPRAWNOŚCI

TEKST REGUŁY SPRAWDZANIA POPRAWNOŚCI

<>0 Wprowadź wartość różną od zera.

>=0 Wartość musi być równa lub większa niż zero.— lub —Musisz wprowadzić liczbę dodatnią.

0 or >100 Wartość musi być równa 0 lub większa niż 100.

BETWEEN 0 AND 1 Wprowadź wartość ze znakiem procentu. (Do użycia w przypadku pól, w których wartości liczbowe są przechowywane w postaci wartości procentowych).

<”2007-01-01” Wprowadź datę sprzed 2007 roku.

>=”2007-01-01” AND <”2008-01-01”

Data musi przypadać w 2007 roku.

<Date() Data urodzenia nie może być datą w przyszłości.

M Or K Wprowadź M w przypadku mężczyzny lub K w przypadku kobiety.

LIKE "[A-Z]*@[A-Z].com" OR "[A-Z]*@[A-Z].net" OR "[A-Z]*@[A-Z].org"

Wprowadź prawidłowy adres e-mail w domenie com, net lub org.

[DataDostawy]<=[DataZamówienia]+30

Wprowadź datę dostawy przypadającą najwyżej 30 dni po dacie zamówienia.

[DataKońcowa]>=[DataPoczątkowa]

Wprowadź datę końcową równą dacie początkowej lub późniejszą.

StrComp(UCase([Nazwisko]),[Nazwisko],0) = 0

Dane w polu Nazwisko muszą być wpisane wielkimi literami.

>=Int(Now()) Wprowadź dzisiejszą datę.

Page 33: Lekcja 2 - podstawowe pojęcia i podstawowe zapytania SQL