Projektowanie bazy danych

advertisement
Projektowanie bazy danych
 identyfikator
 imię i nazwisko
 adres
 nr tel.
 numer zamówienia
 kto zamówił
 co zamówił i ile
 data
zamowienia
klienci
id_klient
Relacja 1- n
id_klient
ulica
miejscowosc
Klienci
ksiazkiklienci
zamowienia
zamowienia
1
Jankowski
P-456-22
Ch. Petzold
ksiazki
1
1
P-456-22
1
1
2008-03-04
2
Adamska
P-456-22
Ch. Petzold
3
P-567-33
2
3
2008-03-08
P-567-33
S.C. Perry
1
P-345-22
3 Kowalski
3
1
2008-03-12
P-345-22 S.C.
L. Ullman
P-567-33
Perry
P-345-22
L. Ullman
ksiazki
nr_zam
nazwisko
 ISBN
 autor i tytuł
 cena
 opis
Relacja 1- n
isbn
zam_pozycje
autor
data
isbn
nr_zam
tytul
ilosc
isbn
cena
data
id_opis
ilosc
opis
id_opis
opis
opisy
Relacja 1 - 1
książki
zam_pozycje
ksiazki
klienci
Boczna
10
Jankowo
MS
105
To
kolejne
wydanie znakomitego podręcznika
Charlesa Petzolda
3Programowanie
2008-03-04
opisy
1
P-456-22
3
Windows
Programowanie
C#.
Ch.Windows
Petzold - tym
… razem w
1 języku
Jankowski
…
Sportowa
5 MS 105
Adamowo
1P-456-22
1Programowanie
2008-03-08
1
To
kolejne
wydanie
znakomitego
podręcznika
Charlesa
2
P-567-33
1
Windows
i .NET
99
P-567-33 Petzolda
S.C. Perry
…
Programowanie
Windows
– tym …
2 Adamska
…
1C#
2008-03-12
Sosnowa
2/24
Wrocław
2
P-345-22
1
zamówienia
MySQL.
MySQL
P-345-22
to
L. Ullman
zarządzania
…zarządzania
bazami danych,
dostępny
na
C#
i .NETSzybki start. 57
99
0
2 system
MySQL
to system
danych,
3 bazami
Kowalski
…
licencji open-source. Swoimi możliwościami nie ustępuje w niczym
dostępny na licencji open-source. Swoimi …
MySQL. Szybki start. 57
2
potężnym komercyjnym systemom.
NIE WYDAJNE
zamowienia
1
∞
ksiazki
id_klient
1
data
klienci
id_klient
nr_zam
1
isbn
autor
nazwisko
tytul
ulica
cena
miejscowosc
id_opis
zam_pozycje
nr_zam
isbn
ilosc
∞
∞
1
opisy
1
id_opis
opis
klienci
zamowienia
ksiazki
1
id_klient
nazwisko
1
∞
ulica
1
nr_zam
id_klient
data
isbn
autor
zam_pozycje
miejscowosc
nr_zam
isbn
tytul
∞
∞
cena
opisy
1
id_opis
1
id_opis
ilosc
opis
opisy
zamowienia
1
To kolejne wydanie znakomitego podręcznika
Charlesa Petzolda Programowanie Windows …
2
MySQL to system zarządzania bazami danych,
dostępny na licencji open-source. Swoimi …
ksiazki
1
1
2008-03-04
2
3
2008-03-08
3
1
2008-03-12
klienci
zam_pozycje
P-456-22
Ch. Petzold
…
1
1
P-456-22
3
1
Jankowski
…
P-567-33
S.C. Perry
…
0
2
P-567-33
1
2
Adamska
…
P-345-22
L. Ullman
…
2
2
P-345-22
1
3
Kowalski
…
MySQL jest jednym z najpopularniejszych z wolnodostępnych
silników relacyjnych baz danych.
Przed przystąpieniem do pracy :
• pobierz z internetu i zainstaluj najnowszą wersję MySQL
• określ hasło administratora
• uruchom serwer MySQL
Po zalogowaniu się do serwera możemy przystąpić do pracy.
SQL – strukturalny język zapytań.
Jest najbardziej rozpowszechniony standaryzowany język
dostępu do systemów zarządzania relacyjnymi bazami danych (RDBMS)
 Tworzenie bazy danych
CREATE DATABASE nazwa_bazy
 Definiowanie użytkowników i przywilejów
GRANT przywileje [kolumny]
ON obiekt
TO identyfikator użytkownika [IDENTIFIED BY ‘haslo’]
[WITH [GRANT OPTION | ograniczenia]]
Przywileje:
SELECT, INSERT, UPDATE, DELETE, INDEX, ALTER, CREATE, DROP, ALL
 Odbieranie przywilejów użytkownikom
REVOKE przywileje [kolumny]
ON obiekt
FROM identyfikator użytkownika
 Tworzenie bazy danych
CREATE DATABASE ksiegarnia
 Definiowanie użytkowników i przywilejów
GRANT SELECT, INSERT, UPDATE, DELETE, INDEX, ALTER, CREATE, DROP
ON ksiegarnia.*
TO Janek IDENTIFIED BY ‘Jan75B’
 Odbieranie przywilejów użytkownikom
REVOKE ALTER, CREATE, DROP
ON ksiegarnia.*
FROM Janek
 Używanie odpowiedniej bazy danych
USE nazwa_bazy
 Tworzenie tabel bazy danych
CREATE TABLE nazwa_tabeli(kolumny)
dodarkowe atrybuty kolumn:
NOT NULL, AUTO_INCREMENT, PRIMARY KEY, UNSIGNED
Typy kolumn:
INT, TINYINT, CHAR(n), FLOAT(m,d), DATE, TEXT
 Używanie odpowiedniej bazy danych
USE ksiegarnia
 Tworzenie tabel bazy danych
CREATE TABLE klienci
( id_klient 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
( nr_zam int unsigned not null auto_increment primary key,
id_klient int unsigned not null ,
data date not null );
CREATE TABLE zam_pozycje
( nr_zam int unsigned not null,
isbn char(8) not null ,
ilosc tinyint unsigned ,
Primary key(nr_zam, isbn) );
 Przeglądanie istniejących baz
SHOW DATABASES;
 Przeglądanie tabel w wybranej bazie
SHOW TABLES;
 Szczegółowe informcje o tabeli
DESCRIBE nazwa_tabeli
 Zapisywanie danych do bazy
INSERT [INTO] nazwa_tabeli [ (kolumna1, kolumna2,…) ]
VALUES (wartosc1,wartosc2,…);
Dopiszmy nowego klienta:
INSERT INTO klienci VALUES (NULL,’Jan Nowak’,’Sportowa 5’,’Janków’);
lub:
INSERT INTO klienci (nazwisko,miejscowosc,adres)
VALUES (’Jan Nowak’, ’Janków’,’Sportowa 5’);
lub:
INSERT INTO klienci
set nazwisko= ’Jan Nowak’, adres= ’Sportowa 5’,miejscowosc= ’Janków’;
 Wyszukiwanie danych w bazie
SELECT [opcje] pozycje
[ INTO plik ]
FROM nazwy_tabel
[WHERE warunek ]
[GROUP BY rodzaj_grupowania ]
[HAVING wartosc_funkcji ]
[ORDER BY porządek_sortowania]
[LIMIT limit]
Wyświetlmy wszystkich klientów:
SELECT * FROM klienci;
SELECT nazwisko, miejscowosc FROM klienci;
Wyszukiwanie danych spełniających określone kryteria
SELECT * FROM klienci WHERE id_klient = 3;
SELECT * FROM zamowienia
WHERE id_klient = 3 or id_klient = 2;
SELECT nazwisko FROM klienci
WHERE nazwisko LIKE ‘%Now%’;
 Wyszukiwanie danych w wielu tabelech
Wyszukaj zamówienie Jana Nowaka i wyświetl jego numer i datę.
SELECT zamowienia.nr_zam, zamowienia.data
FROM klienci, zamowienia
WHERE klienci.nazwisko= ‘Jan Nowak’
AND klienci.id_klient = zamowienia.id_klient;
Wyświetl isbn ksiązek jakie zostały zakupione przez klientów z Koszalina.
SELECT zam_pozycje.isbn
FROM klienci, zamowienia, zam_pozycje.
WHERE klienci.miejscowosc= ‘Koszalin’
AND klienci.id_klient = zamowienia.id_klient;
AND zamowienia.nr_zam = zam_pozycje. nr_zam ;
Download