sql – structured query language (1)

29
SQL – Structured Query Language (1) Wykład 5 Prowadzący: dr Paweł Drozda

Upload: rowdy

Post on 19-Mar-2016

52 views

Category:

Documents


0 download

DESCRIPTION

SQL – Structured Query Language (1). Wykład 5 Prowadzący: dr Paweł Drozda. Zadania SQL. definiowanie danych definiowanie perspektyw przetwarzanie danych (interaktywne i programowe) definiowanie reguł integralności danych autoryzacja - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: SQL – Structured Query Language (1)

SQL – Structured Query Language (1)

Wykład 5Prowadzący: dr Paweł Drozda

Page 2: SQL – Structured Query Language (1)

dr P. Drozda

Zadania SQL definiowanie danych definiowanie perspektyw przetwarzanie danych (interaktywne i

programowe) definiowanie reguł integralności danych autoryzacja określanie początku transakcji,

potwierdzenie i wycofywanie transakcji

Page 3: SQL – Structured Query Language (1)

dr P. Drozda

Cechy SQL-a „podjęzyk danych” Trójwartościowa logika (TRUE, FALSE,

UNKNOWN) 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: „Zanurzony” SQL Modułowy SQL

Dynamiczny SQL – kod generowany przez aplikacje w zależności od wyborów użytkownika

Page 4: SQL – Structured Query Language (1)

dr P. Drozda

Grupy instrukcji Język definicji danych (DDL): CREATE,

ALTER, DROP Język manipulowania danymi (DML):

SELECT, INSERT, UPDATE i DELETE Instrukcje Sterowania Danymi: GRANT

i REVOKE

Page 5: SQL – Structured Query Language (1)

dr P. Drozda

Data Definition Language (DDL) Tworzenie tabel, baz danych, itd.

CREATE Modyfikacja schematu bazy danych –

ALTER Usuwanie tabel, baz danych itd. -

DROP

Page 6: SQL – Structured Query Language (1)

dr P. Drozda

Polecenie CREATE Tworzenie bazy danych

CREATE database nazwa_bazy; Przykład: CREATE database restauracja;

Tworzenie tabeliCREATE table nazwa(pole1 typ_danych1 ograniczenia1, pole2 typ_danych2 ograniczenia2, …, poleN typ_danychN ograniczeniaN, ograniczeniaOgólne);

Page 7: SQL – Structured Query Language (1)

dr P. Drozda

Typy Danych (1) 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

Page 8: SQL – Structured Query Language (1)

dr P. Drozda

Typy Danych (2) 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);

Page 9: SQL – Structured Query Language (1)

dr P. Drozda

Typy Danych (3)

Liczbowe Całkowite

Ograniczenia nakładane na liczby całkowite ZEROFILL – wstawia zera w niewykorzystane

pola UNSIGNED – dozwolone liczby nieujemne AUTO_INCREMENT – przy wstawieniu 0 lub

null automatycznie wstawiana kolejna liczba

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

INT 4 -231/0 231-1/232-1

BIGINT 8 -263/0 263-1/264-1

Page 10: SQL – Structured Query Language (1)

dr P. Drozda

Typy Danych (4) Przykład:

CREATE table Pracownicy(id_prac Smallint(3) zerofill auto_increment, Nazwisko Char(20), Zarobki Mediumint unsigned);

Id_prac Nazwisko ZarobkiPRACOWNICY

Page 11: SQL – Structured Query Language (1)

dr P. Drozda

Typy Danych (5) Liczbowe

Zmiennoprzecinkowe FLOAT(D,M) – typ pojedynczej precyzji (4 bajty), D

- liczba wyświetlanych cyfr M - ilość wyświetlanych cyfr po przecinku

DOUBLE(D,M), REAL(D,M) – typ podwójnej precyzji (8 bajtów)D, M – jw.

NUMERIC(D,M), DECIMAL(D,M) – dokładna precyzja, gdzie D – ilość cyfr znaczących, M – ilość cyfr znaczących po przecinku

Page 12: SQL – Structured Query Language (1)

dr P. Drozda

Typy danych (6)Typy daty i czasu Formaty dla Timestamp

Typ Format

DATE RRRR-MM-DD.

TIME GG:MM:SS.

DATETIME RRRR-MM-DD GG:MM:SS

TIMESTAMP[(M)] W zależności od M

YEAR[(2|4)] RR lub RRRR

Podany typ Format wyświetlania

TIMESTAMP RRRRMMDDGGMMSS

TIMESTAMP(14) RRRRMMDDGGMMSS

TIMESTAMP(12) RRMMDDGGMMSS

TIMESTAMP(10) RRMMDDGGMM

TIMESTAMP(8) RRRRMMDD

TIMESTAMP(6) RRMMDD

TIMESTAMP(4) RRMM

TIMESTAMP(2) RR

Page 13: SQL – Structured Query Language (1)

dr P. Drozda

Typy danych (7) 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))

Page 14: SQL – Structured Query Language (1)

dr P. Drozda

Ograniczenia(1) NOT NULL – wymusza wpisanie wartości dla

danego pola UNIQUE – wartości w danym polu nie mogą się

powtarzać CHECK (warunek) – nakłada warunek na relację DEFAULT wartość – domyślnie wartość 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))

Page 15: SQL – Structured Query Language (1)

dr P. Drozda

Ograniczenia(2) PRIMARY KEY – definicja klucza

głównego; może być definiowany przy polu które jest kluczem, bądź na koniec relacji – gdy więcej pól niż jedno

FOREIGN KEY (nazwa_pola) REFERENCES nazwa_tabeli(nazwa_pola1) – klucz obcy

Page 16: SQL – Structured Query Language (1)

dr P. Drozda

Ograniczenia(3) Przykład definicji kluczy

1) CREATE table Pracownicy(id_prac Smallint(3) auto_increment, Nazwisko Varchar(25) Unique, zarobki Decimal(7,2), PRIMARY KEY(id_prac));2) CREATE table Projekty(nr_projektu Smallint Primary Key, nazwa char(20),kierownik Smallint, Foreign key(kierownik) References Pracownicy(id_prac));

Page 17: SQL – Structured Query Language (1)

dr P. Drozda

Ograniczenia(4) Wymuszanie więzi integralności

usuwaniea) FOREIGN KEY(pole1) REFERENCES tabela(pole2) ON DELETE SET NULLb) FOREIGN KEY(pole1) REFERENCES tabela(pole2) ON DELETE CASCADEc) FOREIGN KEY(pole1) REFERENCES tabela(pole2) ON DELETE SET DEFAULT d) FOREIGN KEY(pole1) REFERENCES tabela(pole2) ON DELETE RESTRICT

Page 18: SQL – Structured Query Language (1)

dr P. Drozda

Ograniczenia(5) Modyfikacja – analogicznie (zamiast ON DELETE – ON

UPDATE) Uwaga do MySQL 5.0 – engine = INNODB 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;

Page 19: SQL – Structured Query Language (1)

Silniki składowania danych MyISAM – domyślny silnik

Przechowywana na dysku w trzech plikach Format tabeli – rozszerzenie .frm Dane – rozszerzenie .myd Indeks – rozszerzenie .myi

Tworzenie tabeli MyISAMCREATE TABLE t (i INT) ENGINE/TYPE = MYISAM;

Zapewnia możliwość jednoczesnego wstawiania danych Możliwość indeksowania kolumn typu TEXT i BLOB Dopuszczalny null dla indeksowanych kolumn Używane indeksy typu B-drzewo

dr P. Drozda

Page 20: SQL – Structured Query Language (1)

MyISAM engine Trzy typy składowania danych

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 Łatwe w rekonstrukcji po awarii Przykład

CREATE TABLE t(int i) ENGINE = MyISAM, ROW_FORMAT=FIXED; 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; Spakowany – za pomocą komendy myisampack

dr P. Drozda

Page 21: SQL – Structured Query Language (1)

InnoDB engine Pozwala na wywołanie transakcji Zapewnia referencyjne więzi integralności Długi czas przetwarzania tabel Przykład:

CREATE TABLE t(int i) ENGINE = InnoDB;

dr P. Drozda

Page 22: SQL – Structured Query Language (1)

dr P. Drozda

Modyfikacja schematu relacji ALTER TABLE – dodawanie, usuwanie

atrybutów oraz ograniczeń integralnościowych, modyfikacja definicji atrybutuPrzykład:ALTER TABLE Pracownicy ADD Primary Key(Id_prac);

Page 23: SQL – Structured Query Language (1)

dr P. Drozda

ALTER TABLE - dodawanie Dodawanie kolumny

ALTER TABLE nazwa_tabeli ADD COLUMN pole typ_pola;

Przykład: ALTER TABLE Pracownicy ADD COLUMN

stanowisko VARCHAR(20) AFTER NAZWISKO; Dodawanie ograniczenia

ALTER TABLE nazwa ADD CONSTRAINT nazwa i rodzaj ograniczenia

Page 24: SQL – Structured Query Language (1)

dr P. Drozda

ALTER TABLE - usuwanie Usuwanie kolumny

ALTER TABLE nazwa DROP COLUMN pole Usuwanie ograniczenia

ALTER TABLE nazwa DROP CONSTRAINT nazwa_ograniczenia;

PrzykładALTER TABLE Pracownicy DROP

CONSTRAINT Klucz;

Page 25: SQL – Structured Query Language (1)

dr P. Drozda

ALTER TABLE - modyfikowanie Tylko do atrybutów

ALTER TABLE nazwa MODIFY pole typ ograniczenia;

Przykład ALTER TABLE Pracownicy MODIFY Nazwisko

Char(30) not null; Zmiana nazwy i typu atrybutu

ALTER TABLE nazwa CHANGE starepole nowepole typ ograniczenia

Page 26: SQL – Structured Query Language (1)

ALTER TABLE - modyfikacja Silnika

ALTER TABLE t ENGINE = InnoDB; Wartość pola auto_increment

ALTER TABLE t AUTO_INCREMENT = value;

dr P. Drozda

Page 27: SQL – Structured Query Language (1)

dr P. Drozda

Usuwanie, kontrola integralności Usunięcie tabeli

DROP TABLE nazwa_tabeli; Usunięcie bazy danych

DROP DATABASE nazwa_bazy; Stosowanie ograniczeń - klucze

ALTER TABLE nazwa ENABLE KEYS; Wyłączanie ograniczeń - klucze

ALTER TABLE nazwa DISABLE KEYS;

Page 28: SQL – Structured Query Language (1)

dr P. Drozda

Zmiana nazwy RENAME TABLE tabela TO tabela1;

PrzykładRENAME TABLE Pracownicy TO naukowcy;

Page 29: SQL – Structured Query Language (1)

Uwaga żart

Two MySQL DBAs walk to a NoSQL bar, but they had to leave because they

couldn't find any tables!