wyk5


SQL  Structured Query
Language (1)
Wykład 5
Prowadzący: dr Paweł Drozda
Zadania SQL
oðdefiniowanie danych
oðdefiniowanie perspektyw
oðprzetwarzanie danych (interaktywne i
programowe)
oðdefiniowanie reguÅ‚ integralnoÅ›ci danych
oðautoryzacja
oðokreÅ›lanie poczÄ…tku transakcji,
potwierdzenie i wycofywanie transakcji
dr P. Drozda
Cechy SQL-a
oð  podjÄ™zyk danych
oð TrójwartoÅ›ciowa logika (TRUE, FALSE,
UNKNOWN)
oð Trzy sposoby użycia:
Interaktywny lub samodzielny SQL  do
wprowadzania lub wyszukiwania informacji
Statyczny SQL  stały kod SQL napisany przed
wykonaniem programu  dwa typy:
oð  Zanurzony SQL
oð ModuÅ‚owy SQL
Dynamiczny SQL  kod generowany przez
aplikacje w zależności od wyborów użytkownika
dr P. Drozda
Grupy instrukcji
oðJÄ™zyk definicji danych (DDL):
CREATE, ALTER, DROP
oðJÄ™zyk manipulowania danymi (DML):
SELECT, INSERT, UPDATE i DELETE
oðInstrukcje Sterowania Danymi:
GRANT i REVOKE
dr P. Drozda
Data Definition Language (DDL)
oðTworzenie tabel, baz danych, itd.
CREATE
oðModyfikacja schematu bazy danych 
ALTER
oðUsuwanie tabel, baz danych itd. -
DROP
dr P. Drozda
Polecenie CREATE
oðTworzenie bazy danych
CREATE database nazwa_bazy;
Przykład: CREATE database restauracja;
oðTworzenie tabeli
CREATE table nazwa(pole1 typ_danych1
ograniczenia1, pole2 typ_danych2
ograniczenia2, & , poleN typ_danychN
ograniczeniaN, ograniczeniaOgólne);
dr P. Drozda
Typy Danych (1)
oð Znakowe
CHAR(n), CHARACTER(n)  tekst o stałej ilości
znaków
VARCHAR(n), CHARACTER VARYING(n)  tekst o
zmiennej ilości znaków  max n
BINARY(n), VARBINARY(n)  odpowiedniki CHAR i
VARCHAR tyle, że używają postaci binarnej do
zapisu ciągu znaków
TINYTEXT, TEXT, MEDIUMTEXT, LONGTEXT 
pozwalają wprowadzić dłuższy tekst
TINYBLOB, BLOB, MEDIUMBLOB, LONGBLOB 
pozwalają przechowywać duży binarny obiekt
dr P. Drozda
Typy Danych (2)
oð Znakowe
ENUM( war1 ,  war2 , war3 ,& , warN )  typ
wyliczeniowy określa dokładnie zbiór możliwych
wartości
SET( war1 ,  war2 , war3 ,& , warN )  zbiór
możliwych wartości  można wybrać więcej niż
jednÄ…
Przykład deklaracji relacji:
CREATE table Osoby(Nazwisko Varchar(20), Rasa
Enum( Biała ,  Czarna , Żółta ), opis MediumText);
dr P. Drozda
Typy Danych (3)
Typ Liczba bajtów min liczba max liczba
TINYINT 1 -27/0 27-1/28-1
SMALLINT 2 -215/0 215-1/216-1
MEDIUMINT 3 -223/0 223-1/224-1
oð Liczbowe
INT 4 -231/0 231-1/232-1
Całkowite
BIGINT 8 -263/0 263-1/264-1
Ograniczenia nakładane na liczby całkowite
oð ZEROFILL  wstawia zera w niewykorzystane
pola
oð UNSIGNED  dozwolone liczby nieujemne
oð AUTO_INCREMENT  przy wstawieniu 0 lub
null automatycznie wstawiana kolejna liczba
dr P. Drozda
Typy Danych (4)
oð PrzykÅ‚ad:
CREATE table Pracownicy(id_prac Smallint(3)
zerofill auto_increment, Nazwisko Char(20),
Zarobki Mediumint unsigned);
PRACOWNICY
Id_prac Nazwisko Zarobki
dr P. Drozda
Typy Danych (5)
oðLiczbowe
Zmiennoprzecinkowe
oðFLOAT(D,M)  typ pojedynczej precyzji (4 bajty),
D - liczba wyświetlanych cyfr
M - ilość wyświetlanych cyfr po przecinku
oðDOUBLE(D,M), REAL(D,M)  typ podwójnej
precyzji (8 bajtów)
D, M  jw.
oðNUMERIC(D,M), DECIMAL(D,M)  dokÅ‚adna
precyzja, gdzie D  ilość cyfr znaczących, M 
ilość cyfr znaczących po przecinku
dr P. Drozda
Typy danych (6)
Typy daty i czasu Formaty dla Timestamp
Podany typ Format wyświetlania
Typ Format
TIMESTAMP RRRRMMDDGGMMSS
DATE RRRR-MM-DD.
TIMESTAMP(14) RRRRMMDDGGMMSS
TIMESTAMP(12) RRMMDDGGMMSS
TIME GG:MM:SS.
TIMESTAMP(10) RRMMDDGGMM
DATETIME RRRR-MM-DD GG:MM:SS
TIMESTAMP(8) RRRRMMDD
TIMESTAMP(6) RRMMDD
TIMESTAMP[(M)] W zależności od M
TIMESTAMP(4) RRMM
YEAR[(2|4)] RR lub RRRR
TIMESTAMP(2) RR
dr P. Drozda
Typy danych (7)
oðPrzykÅ‚ad
CREATE table Osoby(id_osoby Smallint
auto_increment, Nazwisko Varchar(23),
data_ur Date, czas_maratonu Time,
rok_rozp YEAR(4), zarobki Decimal(7,2))
dr P. Drozda
Ograniczenia(1)
oð NOT NULL  wymusza wpisanie wartoÅ›ci dla
danego pola
oð UNIQUE  wartoÅ›ci w danym polu nie mogÄ… siÄ™
powtarzać
oð CHECK (warunek)  nakÅ‚ada warunek na relacjÄ™
oð DEFAULT wartość  domyÅ›lnie wartość
oð PrzykÅ‚ad
CREATE table Pracownicy(id_prac Smallint(3) zerofill
auto_increment, Nazwisko Varchar(25) Unique, zarobki
Decimal(7,2) Default 1500, Check(zarobki>0))
dr P. Drozda
Ograniczenia(2)
oðPRIMARY KEY  definicja klucza
głównego; może być definiowany przy
polu które jest kluczem, bądz na koniec
relacji  gdy więcej pól niż jedno
oðFOREIGN KEY (nazwa_pola)
REFERENCES
nazwa_tabeli(nazwa_pola1)  klucz obcy
dr P. Drozda
Ograniczenia(3)
oð PrzykÅ‚ad definicji kluczy
1) CREATE table Pracownicy(id_prac
Smallint(3) auto_increment PRIMARY KEY,
Nazwisko Varchar(25) Unique, zarobki
Decimal(7,2));
2) CREATE table Projekty(nr_projektu
Smallint Primary Key, nazwa char(20),
kierownik Smallint, Foreign key(kierownik)
References Pracownicy(id_prac));
dr P. Drozda
Ograniczenia(4)
oðWymuszanie wiÄ™zi integralnoÅ›ci
usuwanie
a) FOREIGN KEY(pole1) REFERENCES
tabela(pole2) ON DELETE SET NULL
b) FOREIGN KEY(pole1) REFERENCES
tabela(pole2) ON DELETE CASCADE
c) FOREIGN KEY(pole1) REFERENCES
tabela(pole2) ON DELETE SET DEFAULT
d) FOREIGN KEY(pole1) REFERENCES
tabela(pole2) ON DELETE RESTRICT
dr P. Drozda
Ograniczenia(5)
Modyfikacja  analogicznie (zamiast ON DELETE  ON
UPDATE)
oð Uwaga do MySQL 5.0  engine = INNODB
oð PrzykÅ‚ad
1) CREATE table Pracownicy(id_prac Smallint(3)
auto_increment PRIMARY KEY, Nazwisko Varchar(25)
Unique, zarobki Decimal(7,2));
2) CREATE table Projekty(nr_projektu Smallint Primary
Key, nazwa char(20), kierownik Smallint, Foreign
key(kierownik) References Pracownicy(id_prac) ON
DELETE CASCADE ON UPDATE SET DEFAULT) engine=
INNODB;
dr P. Drozda
Silniki składowania danych
oðMyISAM  domyÅ›lny silnik
Przechowywana na dysku w trzech plikach
oð Format tabeli  rozszerzenie .frm
oð Dane  rozszerzenie .myd
oð Indeks  rozszerzenie .myi
Tworzenie tabeli MyISAM
CREATE TABLE t (i INT) ENGINE/TYPE = MYISAM;
Zapewnia możliwość jednoczesnego wstawiania danyh
Możliwość indeksowania kolumn typu TEXT i BLOB
Dopuszczalny null dla indeksowanych kolumn
Używane indeksy typu B-drzewo
dr P. Drozda
MyISAM engine
oð Trzy typy skÅ‚adowania danych
oð Statyczny
może być użyty gdy nie ma kolumn typu TEXT, BLOB
ma ustaloną z góry liczbę bajtów na każdy wiersz danych
Bardzo szybki dostęp do danych
Aatwe w rekonstrukcji po awarii
Przykład
CREATE TABLE t(int i) ENGINE = MyISAM, ROW_FORMAT=FIXED;
oð Dynamiczny
Wielkość pól dynamiczna
Zajmuje mniej miejsca od tabel statycznych
Trudne do rekonstrukcji po awarii
Przykład:
CREATE TABLE t(int i) ENGINE = MyISAM, ROW_FORMAT=DYNAMIC;
oð Spakowany  za pomocÄ… komendy myisampack
dr P. Drozda
InnoDB engine
oð Pozwala na wywoÅ‚anie transakcji
oð Zapewnia referencyjne wiÄ™zi integralnoÅ›ci
oð DÅ‚ugi czas przetwarzania tabel
oð PrzykÅ‚ad:
CREATE TABLE t(int i) ENGINE = InnoDB;
dr P. Drozda
Modyfikacja schematu relacji
oð ALTER TABLE  dodawanie, usuwanie
atrybutów oraz ograniczeń
integralnościowych, modyfikacja definicji
atrybutu
Przykład:
ALTER TABLE Pracownicy ADD Primary
Key(Id_prac);
dr P. Drozda
ALTER TABLE - dodawanie
oðDodawanie kolumny
ALTER TABLE nazwa_tabeli ADD COLUMN pole
typ_pola;
Przykład:
ALTER TABLE Pracownicy ADD COLUMN
stanowisko VARCHAR(20) AFTER NAZWISKO;
oðDodawanie ograniczenia
ALTER TABLE nazwa ADD CONSTRAINT nazwa i
rodzaj ograniczenia (PRIMARY KEY, FOREIGN
KEY, CHECK, itd.)
dr P. Drozda
ALTER TABLE - usuwanie
oðUsuwanie kolumny
ALTER TABLE nazwa DROP COLUMN pole
oðUsuwanie ograniczenia
ALTER TABLE nazwa DROP CONSTRAINT
nazwa_ograniczenia;
Przykład
ALTER TABLE Pracownicy DROP
CONSTRAINT Klucz;
dr P. Drozda
ALTER TABLE - modyfikowanie
oðTylko do atrybutów
ALTER TABLE nazwa MODIFY pole typ
ograniczenia;
Przykład
ALTER TABLE Pracownicy MODIFY Nazwisko
Char(30) not null;
oðZmiana nazwy i typu atrybutu
ALTER TABLE nazwa CHANGE starepole
nowepole typ ograniczenia
dr P. Drozda
ALTER TABLE - modyfikacja
oðSilnika
ALTER TABLE t ENGINE = InnoDB;
oðWartość pola auto_increment
ALTER TABLE t AUTO_INCREMENT = value;
dr P. Drozda
Usuwanie, kontrola integralności
oð UsuniÄ™cie tabeli
DROP TABLE nazwa_tabeli;
oð UsuniÄ™cie bazy danych
DROP DATABASE nazwa_bazy;
oð Stosowanie ograniczeÅ„ - klucze
ALTER TABLE nazwa ENABLE KEYS;
oð WyÅ‚Ä…czanie ograniczeÅ„ - klucze
ALTER TABLE nazwa DISABLE KEYS;
dr P. Drozda
Zmiana nazwy
oðRENAME TABLE tabela TO tabela1;
Przykład
RENAME TABLE Pracownicy TO
naukowcy;
dr P. Drozda


Wyszukiwarka

Podobne podstrony:
so wyk5 prezentacja
TWN? 14 WYK5 dielektryki
Fot wyk5 int
Wyk5 tabl hash
PUP niest wyk5 VHDL[51F] v1
mutacje wyk5
wyk5
Reklama w Internecie wyk5
wyk5 budowa druk
Wyk5 term
TWN? 11 WYK5 dielektryki
Wyk5 efekty perturbacyjne
wyk5
Wyk5 KOMUNIKACJA
Wyk5

więcej podobnych podstron