Bazy danych

advertisement
Bazy danych
Wykład IV
SQL - wprowadzenie
Copyrights by Arkadiusz Rzucidło
1
Czym jest SQL
„
„
„
Język zapytań – deklaratywny dostęp do danych
Składnia łatwa i naturalna
Standardowe narzędzie dostępu do wielu różnych SZRBD
{
{
{
{
{
„
Dostęp do bazy danych
Wyszukiwanie danych
Wprowadzanie danych
Usuwanie danych
Modyfikacja danych
Łatwy do nauki
Copyrights by Arkadiusz Rzucidło
2
Części języka SQL
„
DDL (Data Definition Language)
{
{
Pozwala tworzyć, modyfikować i usuwać tabele w bazie danych
Zawiera polecenia tworzenia struktury bazy danych
„
„
„
„
DQL (Data Query Language)
{
Wykonywanie zapytań w bazie danych
„
„
„
tworzenie indeksów,
połączeń pomiędzy tabelami
zależności w bazie danych
Wyszukiwanie danych
Porządkowanie danych
DML (Data Manipulation Language)
{
Składnia związana z manipulowaniem danymi w bazie danych
„
„
„
Dodawaniem nowych danych
Modyfikowanie
Usuwanie danych z tabel
Copyrights by Arkadiusz Rzucidło
3
Tworzenie bazy danych
„
„
„
„
Opracowanie struktury bazy danych
Utworzenie tabel
Rejestrowanie użytkowników
Przykłady działania poleceń w języku SQL będą
przedstawiane na przykładzie bazy danych MySQL
Copyrights by Arkadiusz Rzucidło
4
Tworzenie bazy danych
„
Składnia polecenia:
{
create database nazwa_bazy_danych
Copyrights by Arkadiusz Rzucidło
5
Rejestrowanie użytkowników
„
„
System MySQL może obsługiwać wielu użytkowników
Użytkownik root
{
{
„
Uprzywilejowany
Tylko cele administracyjne
Użytkowników posiadać konto w systemie
{
{
{
Nazwa
Hasło
Przywileje do bazy danych (obiektów bazy danych)
„
„
„
Prawo do wykonywania określonego działania na wskazanym
obiekcie
Idea zbliżona do koncepcji praw dostępu do plików
Zasada najmniejszego przywileju
Copyrights by Arkadiusz Rzucidło
6
Rejestrowanie użytkowników
„
„
„
Przydzielanie przywilejów – GRANT
Odbieranie przywilejów – REVOKE
Cztery poziomy uprzywilejowania:
{
{
{
{
Globalny
Baza danych
Tabela
Kolumna
Copyrights by Arkadiusz Rzucidło
7
Polecenie GRANT
„
Składania:
GRANT przywileje [ kolumny]
ON obiekt
TO identyfikatro_użytkownika [IDENTIFIED BY ‘hasło’]
[WITH GRANT OPTINS]
„
„
„
„
„
„
Przywileje – postać listy przywilejów oddzielonych przecinkami
Kolumny – wskazuje kolumny do jakich przywileje mają zastosowanie (pojedyncza
nazwa kolumny lub lista oddzielona przecinkami)
Obiekt – wskazuje bazę lub tabelę, do której zostaną zastosowane przywileje. ‘*.*’ lub ‘*’
określa wszystkie obiekty w systemie (przywilej na poziomie globalnym). Częstszy zapis
to nazwa_bazy.*
Identyfikator_użytkownika – identyfikator logowania się do systemu MySQL. Wartość
może zawierać nazwę komputera np. laura@localhost, [email protected]
Hasło – hasło dostępu do serwera.
With grant option – wskazanie, że użytkownik będzie mógł nadawać równoważne sobie
uprawnienia do obiektów, którymi administruje
Copyrights by Arkadiusz Rzucidło
8
Typy i poziomy przewilejów
„
Trzy typy przywilejów
{
Zwykłych użytkowników
„
„
„
{
Administratorów
„
{
Tylko najbardziej konieczne
Dotyczące konkretnych poleceń SQL
Nie wpływające na poziom bezpieczeństwa bazy danych
Administrowanie bazą danych
Specjalne
„
Opcje dodatkowe
Copyrights by Arkadiusz Rzucidło
9
Przywileje
Przywileje użytkownika
Przywilej
Zastosowanie
Opis
SELECT
Tabele, kolumny
Pozwala na wyszukiwanie wierszy i rekordów z tabel
INSERT
Tabele, kolumny
Pozwala na wstawienie nowych wierszy do tabel
UPDATE
Tabele, kolumny
Pozwala na zmianę wartości wierszy zapisanych w
tabelach
DELETE
Tabele
Pozawala na usuwanie wierszy z tabel
INDEX
Tabele
Pozwala na tworzenie i usuwanie indeksów w
poszczególnych tabelach
ALTER
Tabele
Pozwala na dokonywanie zmian w strukturze istniejących
tabel: dodawanie, usuwanie kolumn, zmiana nazwy
kolumn
CREATE
Baza danych, tabele
Tworzenie nowych baz danych oraz tabel
DROP
Bazy danych, tabele
Pozwala na usuwanie tabel oraz baz danych
Copyrights by Arkadiusz Rzucidło
10
Przywileje
Przywileje administratorskie
Przywilej
Opis
RELOAD
Pozwala na powtórne załadowanie tabel zawierających metadane
SHUTDOWN
Umożliwia zakończenie pracy serwera MySQL
PROCESS
Pozwala na śledzenie procesów wykonywanych przez serwer i ich przerywanie
FILE
Pozwala na wczytywanie danych z plików do tabel i odwrotnie
Przywileje specjalne
Przywilej
Opis
ALL
Nadaje wszystkie przywileje z poprzednich tabel
USAGE
Nie nadaje żadnych przywilejów. Powoduje zarejestrowanie użytkownika i pozwala na
na zalogowanie się do serwera. Pozostałe czynności nie są udostępniane.
Copyrights by Arkadiusz Rzucidło
11
Przykłady
„
Wszystkie przywileje do bazy danych dla Kasi z hasłem ‘acl123’.
Kasia może nadawać prawa do bazy danych
grant all on * to kasia identyfied by ‘acl123’ with grant option;
„
Zabranie praw Kasi
revoke all on * from kasia;
„
Nadanie ograniczonych przywilejów do bazy danych książki
Jurkowi
grant select, insert, update, delete on ksiazki.* to jurek;
„
Ograniczenie praw dostępu do bazy danych książki
revoke alter, create,drop on ksiazki.* from Zosia
Copyrights by Arkadiusz Rzucidło
12
Tworzenie tabel bazy danych
„
„
Wskazanie bazy danych z której użytkownik chce korzystać
Uzyskanie listy dostępnych baz danych:
show batabases;
„
Wybranie konkretnej bazy danych:
use nazwa_bazy danych
Przykład:
mysql> use biblioteka;
„
Tworzenie tabel
CREATE TABLE nazwa_tabeli struktura_tabeli;
Przykład:
mysql> create table klienci (id_klienta int unsigned not null
auto_increment primary key, imie varchar(15), nazwisko varchar(30),
d_ur date);
Query OK, 0 rows affected (0.01 sec)
{
Copyrights by Arkadiusz Rzucidło
13
Tworzenie tabel
„
Sprawdzenie wykonania operacji tworzenia tabeli
„
Wyświetlenie opisu tabeli
Copyrights by Arkadiusz Rzucidło
14
Automatyczne tworzenie tabel
„
„
Możliwość automatycznego tworzenia struktury bazy danych za
pomocą skryptów
Przykład:
create table klienci (id_klienta int unsigned not null auto_increment
promatry key, imie varchar(15), nazwisko varchar(30), d_ur date);
create table ksiazki (id_ksiazki int unsigned not null auto_increment
promatry key, tytul varchar(60) autor varchar(30), kategoria int);
create table zdarzenia (id_zdarzenia int unsigned not null
auto_increment promatry key, id_klietna int not null, id_ksiazki int not
null, data_wyp date not null, data_odd date);
create table kategoria (kategoria varchar(30) not null primary key);
„
Zawartość skryptu „biblioteka.sql” uruchamia się za pomocą
komendy
mysql < biblioteka.sql
Copyrights by Arkadiusz Rzucidło
15
Dodatkowe atrybuty kolumn
„
„
„
„
„
Not null – oznacza, że pole musi posiadać wartość.
Pominięcie oznacza zgodę na wartości puste w polu.
Auto_increment - specjalny atrybut nadający wartości
całkowitoliczbowe. Serwer nadaje automatycznie w kolumnie
nowego wpisu wartość będącą maksymalną wartością w tej
kolumnie powiększoną o 1. Kolumny takie muszą być
indeksowane.
Primary key – kolumna oznaczona tym atrybutem jest
kluczem podstawowym tabeli a wartości zawarte w niej muszą
być unikatowe
Unsigned – tylko wartości nieujemne
Default - określa wartość domyślną dla kolumny
Copyrights by Arkadiusz Rzucidło
16
Typy kolumn
Copyrights by Arkadiusz Rzucidło
17
Typy kolumn
Copyrights by Arkadiusz Rzucidło
18
Wstawianie danych do tabeli
„
Wypełnienie tabeli danymi może być realizowane:
{
{
{
„
„
Bezpośrednio – poleceniem SQL – z powłoki systemu
Za pomocą zaprojektowanego interfejsu (np. strony WWW)
Korzystając z dedykowanych interfejsów aplikacyjnych (Krasnal,
WAMP)
Składnia polecenia INSERT:
INSERT [INTO] nazwa_tabeli [(kolumna1, kolumna2, ...)]
VALUES
(wartość1, wartość2, …);
INSERT [INTO] nazwa_tabeli SET kolumna1=wartość1,
kolumna2=wartość2, … ;
Przykład:
insert into klienci values ('','Jan','Kowalski','1975-12-10');
Copyrights by Arkadiusz Rzucidło
19
Automatyczne wypełnianie
danymi
use biblioteka;
insert into ksiazki values
(‘’,’A.Mickiewicz’,’Pan Tadeusz’,’1’),
(‘’,’H.Sienkiewicz,’Potop’,’1’),
(‘’,’L.Welling’,’PHP i MySQL’,’2’);
Uruchomienie skryptu
Mysql < wypelnienie.sql
„
Copyrights by Arkadiusz Rzucidło
20
Modyfikacja danych w
tabelach
„
Składnia polecenia UPDATE:
UPDATE nazwa_tabeli SET nazwa_pola='nowa_wartość';
„
Przykład:
mysql> update ksiazki set kategoria=‘1’;
{
ustawienie dla wszystkich pozycji książkowych kategorii 1
mysql > update ksiazki set kategoria=2 where id_ksiazki=1;
Copyrights by Arkadiusz Rzucidło
21
Copyrights by Arkadiusz Rzucidło
22
Koniec
Źródła:
• L.Welling, L.Thomson; „PHP i MySQL. Tworzenie stron WWW”,
Helion 2002.
• http://home.pl/support/
• J.D.Ullman, J.Widom; „Podstawowy Wykład z Systemów Baz
Danych”, WNT 2003.
Copyrights by Arkadiusz Rzucidło
23
Download