SQL 4 Structured Query Lenguage



Podobne dokumenty
Bazy danych 11. SQL Procedury składowane, kursory i wyzwalacze

Składowane procedury i funkcje

CREATE USER

Bazy danych 8. Procedury składowane i kursory. P. F. Góra

Zarządzanie bazą danych. Bazy Danych i Systemy informacyjne Wykład 4. Piotr Syga

Wprowadzenie do BD Operacje na bazie i tabelach Co poza zapytaniami? Algebra relacji. Bazy Danych i Systemy informacyjne Wykład 2.

Zaawansowane bazy danych i hurtownie danych studia zaoczne II stopnia, sem. I

Przykład 3 Zdefiniuj w bazie danych hurtownia_nazwisko przykładową funkcję użytkownika fn_rok;

E.14 Bazy Danych cz. 18 SQL Funkcje, procedury składowane i wyzwalacze

PODSTAWY BAZ DANYCH 13. PL/SQL

PLAN WYKŁADU BAZY DANYCH PODSTAWOWE KWESTIE BEZPIECZEŃSTWA OGRANICZENIA DOSTĘPU DO DANYCH

BAZA DANYCH SIECI HOTELI

Wyzwalacze (triggery) Przykład

w PL/SQL bloki nazwane to: funkcje, procedury, pakiety, wyzwalacze

Wykład 5 funkcje i procedury pamiętane widoki (perspektywy) wyzwalacze

strukturalny język zapytań używany do tworzenia i modyfikowania baz danych oraz do umieszczania i pobierania danych z baz danych

Systemowe aspekty baz danych

Trigger jest obiektem związanym z tablicą, który aktywuje się gdy do tablicy następuje odpowiednie zapytanie.

Programowanie w SQL procedury i funkcje. UWAGA: Proszę nie zapominać o prefiksowaniu nazw obiektów ciągiem [OLIMP\{nr indeksu}] Funkcje użytkownika

Bazy danych. Wykład IV SQL - wprowadzenie. Copyrights by Arkadiusz Rzucidło 1

KOLEKCJE - to typy masowe,zawierające pewną liczbę jednorodnych elementów

Plan ćwiczenia. Rozdział 16 Uwierzytelnianie i autoryzacja w bazie danych. Użytkownicy i schematy (1) Użytkownicy i schematy (2) baza danych: ZESP99

Bazy Danych i Usługi Sieciowe

Język PL/SQL Procedury i funkcje składowane

Bazy danych wykład dwunasty PL/SQL, c.d. Konrad Zdanowski ( Uniwersytet Kardynała Stefana Bazy danych Wyszyńskiego, wykładwarszawa)

Plan bazy: Kod zakładający bazę danych: DROP TABLE noclegi CASCADE; CREATE TABLE noclegi( id_noclegu SERIAL NOT NULL,

Wykład 2. SQL 1 Structured Query Lenguage

Wyzwalacz - procedura wyzwalana, składowana fizycznie w bazie, uruchamiana automatycznie po nastąpieniu określonego w definicji zdarzenia

15. Funkcje i procedury składowane PL/SQL

Po instalacji serwera MYSQL dostępne jest konto o nazwie root. Domyślnie nie ma ono przypisanego hasła, aczkolwiek podczas procesu konfiguracji jest

mysql> UPDATE user SET Password=PASSWORD('pass') WHERE user='root'; Query OK, 2 rows affected (0.05 sec) Rows matched: 2 Changed: 2 Warnings: 0

Procedury wyzwalane. (c) Instytut Informatyki Politechniki Poznańskiej 1

Bazy danych i usługi sieciowe

Ćwiczenia 2 IBM DB2 Data Studio

Zaawansowane bazy danych i hurtownie danych semestr I

Programowanie po stronie serwera w SZBD. Robert A. Kłopotek Wydział Matematyczno-Przyrodniczy. Szkoła Nauk Ścisłych, UKSW

Blaski i cienie wyzwalaczy w relacyjnych bazach danych. Mgr inż. Andrzej Ptasznik

Procedury i funkcje składowane

Systemowe aspekty baz

Instalacja MySQL.

Hurtownia Świętego Mikołaja projekt bazy danych

Wykład 5. SQL praca z tabelami 2

DECLARE VARIABLE zmienna1 typ danych; BEGIN

050 SQL ELEMENTY ZAAWANSOWANE. Prof. dr hab. Marek Wisła

Używany kiedy pełna treść instrukcji SQL jest nieznana przed uruchomieniem programu.

W SQL Serwerze 2008 wprowadzono parametry tablicowe (Table Valued Parameters - TVP).

Administrowanie serwerami baz danych ZADANIA ADMINISTRATORA BAZ DANYCH

Bazy danych 10. SQL Widoki, procedury składowane, kursory i wyzwalacze

Bazy danych 6. Klucze obce. P. F. Góra

Język PL/SQL. Rozdział 5. Pakiety podprogramów. Dynamiczny SQL

Bazy danych 10. SQL Widoki

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

SQL w języku PL/SQL. 2) Instrukcje języka definicji danych DDL DROP, CREATE, ALTER, GRANT, REVOKE

Administracja i programowanie pod Microsoft SQL Server 2000

Uprawnienia, role, synonimy

Programowanie w SQL. definicja bloku instrukcji BEGIN...END, warunkowe wykonanie instrukcji IF...ELSE, wyrażenie CASE,

Aspekty aktywne baz danych

Bazy danych. Bazy danych. Zapytania SELECT. Dr inż. Paweł Kasprowski.

Bazy danych 10. Widoki, procedury składowane, kursory i wyzwalacze. P. F. Góra

Kolekcje Zbiory obiektów, rodzaje: tablica o zmiennym rozmiarze (ang. varray) (1) (2) (3) (4) (5) Rozszerzenie obiektowe w SZBD Oracle

Bazy danych Język SQL część 2 Wykład dla studentów matem

Materiały. Technologie baz danych. Plan wykładu Kursory. Wykład 5: Kursory jawne. Podprogramy. Kursory jawne. Kursory niejawne

BAZY DANYCH Cz III. Transakcje, Triggery

Baza danych inside. Biologiczne Aplikacje Baz Danych

1. Połączenie z bazą danych. W wybranym edytorze tworzymy plik sqltest.py i umieszczamy w nim poniższy kod. #!/usr/bin/python3 import sqlite3

Cheatsheet PL/SQL Andrzej Klusiewicz 1/9

Paweł Rajba

Administracja i programowanie pod Microsoft SQL Server 2000

1. Wyzwalacze BD (ang. triggers)

Oracle PL/SQL. Paweł Rajba.

Zaawansowane bazy danych i hurtownie danych studia zaoczne II stopnia, sem. I

Cele. Definiowanie wyzwalaczy

PL/SQL. Zaawansowane tematy PL/SQL

Tabele wykorzystywane w przykładach

DECLARE <nazwa_zmiennej> typ [(<rozmiar> )] [ NOT NULL ] [ { := DEFAULT } <wartość> ];

Relacyjne bazy danych. Podstawy SQL

Literatura: SQL Ćwiczenia praktyczne Autor: Marcin Lis Wydawnictwo: Helion. Autor: Joanna Karwowska

SQL :: Data Definition Language

Bazy danych 7. SQL podstawy

CREATE TABLE autorzy ( id_autora SERIAL PRIMARY KEY, imie TEXT, nazwisko TEXT );

Sprawdzenie poziomu izolacji transakcji (w aktualnym połączeniu):

Bloki anonimowe w PL/SQL

UPDATE Studenci SET Rok = Rok + 1 WHERE Rodzaj_studiow =' INŻ_ST'; UPDATE Studenci SET Rok = Rok 1 WHERE Nr_albumu IN ( '111345','100678');

Oracle PL/SQL. Paweł Rajba.

PL/SQL. Zaawansowane tematy PL/SQL. Piotr Medoń

LAB 6 BEGIN TRANSACTION, COMMIT, ROLLBACK, SET TRANSACTION ISOLATION LEVEL,

Comarch ERP XL Business Intelligence Start. Migracja do wersji 2018

Struktura bazy danych

Bazy Danych - Instrukcja do Ćwiczenia laboratoryjnego nr 8

Wykład 8. SQL praca z tabelami 5

Relacyjne bazy danych. Podstawy SQL

Bazy danych 8. Widoki i wyzwalacze. P. F. Góra

Laboratorium nr 4. Temat: SQL część II. Polecenia DML

Wykład 05 Bazy danych

Języki programowania wysokiego poziomu. PHP cz.4. Bazy danych

Wyzwalacze. Anna Fiedorowicz Bazy danych 2

Język PL/SQL. Rozdział 4. Procedury i funkcje składowane

SQL> startup pfile=./admin/pfile/initdbx.ora. SQL> create spfile from pfile='$home/admin/pfile/initdbx.ora' create user bolek identified by bolek;

Elementy. języka SQL

Transkrypt:

Wykład 5 SQL 4 Structured Query Lenguage Instrukcje sterowania danymi Bazy Danych - A. Dawid 2011 1

CREATE USER Tworzy nowego użytkownika Składnia CREATE USER specyfikacja użytkownika [, specyfikacja użytkownika]... user_specification: użytkownik [IDENTIFIED BY [PASSWORD] hasło'] mysql> CREATE USER 'adam'@'localhost' IDENTIFIED BY 'hasło'; Query OK, 0 rows affected (0.03 sec) mysql> CREATE USER 'adam'@ %' IDENTIFIED BY 'hasło'; Bazy Danych - A. Dawid 2011 2

DROP USER Usuwa użytkownika Składnia DROP USER specyfikacja użytkownika mysql> DROP USER 'adam'@'localhost''; Query OK, 0 rows affected (0.0 sec) Bazy Danych - A. Dawid 2011 3

RENAME USER Zmienia nazwę użytkownika Składnia RENAME USER stara_nazwa TO now_nazwa mysql> RENAME USER 'adam'@'localhost TO marek @ localhost ; Query OK, 0 rows affected (0.0 sec) Bazy Danych - A. Dawid 2011 4

SET PASSWORD Zmienia hasło użytkownika Składnia SET PASSWORD [FOR user] = { PASSWORD( haslo') OLD_PASSWORD( haslo') 'encrypted password' } mysql> SET PASSWORD FOR 'adam'@'localhost = PASSWORD( adam11 ); Query OK, 0 rows affected (0.0 sec) Bazy Danych - A. Dawid 2011 5

GRANT Nadaje uprawnienia użytkownikom Składnia GRANT uprawnienie.,.. ON nazwa obiektu TO {użytkownik.,..} [REQUIRE {NONE opcje_ssl [AND] opcje_ssl]...} PUBLIC [ opcje grant]; uprawnienie::= {ALL PRIVILAGES} { SELECT DELETE INSERT UPDATE [ ( nazwa kolumny.,..)]} REFERENCES [ (nazwa kolumny.,..)]} USAGE } Bazy Danych - A. Dawid 2011 6

Nazwa obiektu::= [TABLE] nazwa tablicy DOMAIN nazwa domeny COLLATION nazwa porównania CHARACTER SET nazwa zbioru znakowego TRANSLATION nazwa translacji opcje_ssl: SSL X509 CIPHER 'cipher' ISSUER 'issuer' SUBJECT 'subject' opcje grant::= WITH GRANT OPTION MAX_QUERIES_PER_HOUR liczba MAX_UPDATES_PER_HOUR liczba MAX_CONNECTIONS_PER_HOUR liczba MAX_USER_CONNECTIONS liczba Bazy Danych - A. Dawid 2011 7

Przykłady Tworzymy nowego użytkownika CREATE USER 'adam'@'localhost' IDENTIFIED BY 'hasło'; Nowy użytkownik nie ma żadnych przywilejów Nadajemy uprawnienia administratora GRANT ALL PRIVILEGES ON *.* TO 'adam'@'localhost' WITH GRANT OPTION; Nadajemy uprawnienia tylko do korzystania z bazy Magazyn. GRANT USAGE ON magazyn.* TO 'adam'@'localhost' WITH GRANT OPTION; Bazy Danych - A. Dawid 2011 8

Przykłady Nadajemy uprawnienia do tworzenia nowych obiektów GRANT CREATE ON *.* TO 'adam'@'localhost' WITH MAX_QUERIES_PER_HOUR 90 ; Nadajemy uprawnienia tylko do ogladania tabeli dokumenty w bazie magazyn GRANT SELECT ON magazyn.dokumenty TO 'adam'@'localhost' WITH GRANT OPTION; GRANT UPDATE(NrDok,cena),INSERT(cena,NrTow) ON magazyn.dokumenty TO 'adam'@'localhost' REQUIRE SSL WITH GRANT OPTION; Bazy Danych - A. Dawid 2011 9

REVOKE Odwołuje uprawnienia użytkownikom Składnia REVOKE [GRANT OPTION] {ALL PRIVILAGES } {uprawnienie.,..} ON nazwa obiektu FROM PUBLIC {użytkownik.,..} CASCADE RESTRICT uprawnienie::= {ALL PRIVILAGES} { SELECT DELETE INSERT UPDATE [ ( nazwa kolumny.,..)]} REFERENCES [ (nazwa kolumny.,..)]} USAGE } Bazy Danych - A. Dawid 2011 10

Przykłady Odwołujemy wszystkie uprawnienia REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'adam'@'localhost'; mysql> REVOKE SELECT ON magazyn.* FROM 'adam'@'localhost'; ERROR 1141 (42000): There is no such grant defined for user 'adam' on host 'localhost mysql> REVOKE CREATE ON *.* FROM 'adam'@'localhost'; Query OK, 0 rows affected (0.00 sec) Można tylko odwołać te przywileje które wcześniej były utworzone przez instrukcje GRANT. Bazy Danych - A. Dawid 2011 11

PROGRAMOWANIE PROCEDURY i FUNKCJE SQL pozwala na pisanie krótkich programów wykonywanych przez System Zarządzania Bazami Danych Składnia CREATE [DEFINER = { użytkownik CURRENT_USER }] PROCEDURE sp_name ([proc_parameter[,...]]) [characteristic...] routine_body CREATE [DEFINER = {użytkownik CURRENT_USER }] FUNCTION sp_name ([func_parameter[,...]]) RETURNS type [characteristic...] routine_body Bazy Danych - A. Dawid 2011 12

Przykład Funkcji CREATE FUNCTION hello (s CHAR(20)) RETURNS CHAR(50) DETERMINISTIC RETURN CONCAT('Hello, ',s,'!'); >source func.sql; >mysql> SELECT hello('witam'); +----------------+ hello('witam') +----------------+ Hello, Witam! +----------------+ 1 row in set (0.00 sec) Bazy Danych - A. Dawid 2011 13

Przykłady Procedur USE magazyn delimiter // CREATE PROCEDURE myproc (OUT par INT) BEGIN SELECT COUNT(*) INTO par FROM osoba; END// CREATE PROCEDURE ZnajdzNazwisko( IN zimie CHAR(32), OUT znazwisko CHAR(32) ) BEGIN SELECT Nazwisko FROM osoba WHERE Imie = zimie INTO znazwisko; END// delimiter ; Bazy Danych - A. Dawid 2011 14

Wywołanie procedur mysql> CALL myproc(@i); Query OK, 1 row affected (0.00 sec) mysql> SELECT @i AS Rozmiar; +---------+ Rozmiar +---------+ 2 +---------+ mysql> CALL ZnajdzNazwisko('Jan',@out); Query OK, 1 row affected (0.00 sec) mysql> SELECT @out AS Nazwiska; +----------+ Nazwiska +----------+ Nowak +----------+ Bazy Danych - A. Dawid 2011 15

Wywołanie procedur mysql> SELECT hello('witam'); +----------------+ hello('witam') +----------------+ Hello, Witam! +----------------+ 1 row in set (0.00 sec) mysql> CALL myproc(@i); Query OK, 1 row affected (0.00 sec) mysql> SELECT @i AS Rozmiar; +---------+ Rozmiar +---------+ 2 +---------+ 1 row in set (0.00 sec) Bazy Danych - A. Dawid 2011 16

KURSORY Kursor obiekt używany w aplikacjach do przechowywania wyniku zapytania i do modyfikacji tablic wykorzystywanych w zapytaniu. Pozwala na dostęp do obszaru pamięci w którym przechowywane są wyniki zapytania. Pozwala to na modyfikacje standardowego sposobu wyświetlania informacji w postaci tabel na pojedyncze wiersze. Instrukcje DECLARE, OPEN, FETCH, CLOSE Kursory najczęście wykorzystwane są wewnątrz procedur i funkcji Bazy Danych - A. Dawid 2011 17

DECLARE CURSOR Tworzy kursor Składnia DECLARE nazwa kursora [INSENSITIVE] [SCROLL] CURSOR FOR { instrukcja SELECT [klauzula modyfikowalności]} { przygotwana instrukcja}; klauzula modyfikowalności::= FOR{ READ ONLY UPDATE [OF nazwa kolumny.,..]}] Przykład DECLARE klient CURSOR FOR SELECT Nr,Imie FROM magazyn.osoba; Bazy Danych - A. Dawid 2011 18

OPEN CURSOR Przygotowanie kursora do użycia Składnia OPEN nazwa kursora Przykład OPEN klient; CLOSE CURSOR Zamyka aktualnie otwarty kursor Składnia CLOSE nazwa kursora Przykład CLOSE klient; Bazy Danych - A. Dawid 2011 19

FETCH CURSOR Pobiera wiersze z otwartego kursora Składnia FETCH [ [orientacja] FROM ] nazwa kursora INTO specyfikacja docelowa.,.. ; orientacja ::= NEXT PRIOR FIRST LAST { ABSOLUTE RELATIVE specyfikacja wartości } Instrukcja ta pobiera wartości z jednego wiersza kursora i umieszcza je w liście specyfikacja docelowa. Orientacja określa sposób przesuwania wskaźnika pozycji kursora Bazy Danych - A. Dawid 2011 20

Przykład: Procedura wyliczania towaru delimiter // CREATE PROCEDURE WartoscTow () BEGIN DECLARE done INT DEFAULT 0; DECLARE a,b FLOAT; DECLARE c CHAR(64); DECLARE cur1 CURSOR FOR SELECT Nazwa,ilosc FROM towary; DECLARE cur2 CURSOR FOR SELECT cena1 FROM dokumenty; DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1; OPEN cur1; OPEN cur2; DROP TEMPORARY TABLE IF EXISTS WartoscTowaru; CREATE TEMPORARY TABLE WartoscTowaru (NazwaTowaru char(64), Status CHAR(8), WartoscTowaru FLOAT); Bazy Danych - A. Dawid 2011 21

Przykład: Procedura wyliczania towaru read_loop: LOOP FETCH cur1 INTO c,a; FETCH cur2 INTO b; IF done THEN LEAVE read_loop; END IF; IF a > 0 THEN INSERT INTO WartoscTowaru VALUES (c,'jest',a*b); ELSE INSERT INTO WartoscTowaru VALUES (a,'brak',0); END IF; END LOOP; CLOSE cur1; CLOSE cur2; END// delimiter ; Bazy Danych - A. Dawid 2011 22

Przykład: Wywołanie procedury mysql> SELECT cena1 FROM dokumenty; +-------+ cena1 +-------+ 5.1 5.6 +-------+ 2 rows in set (0.02 sec) mysql> SELECT * FROM towary; +-------+-----------+---------+-------+ NrTow Nazwa J_miary ilosc +-------+-----------+---------+-------+ 1 Banany kg 18.5 2 Winogrona kg 15.5 +-------+-----------+---------+-------+ 2 rows in set (0.00 sec) Bazy Danych - A. Dawid 2011 23

Przykład: Wywołanie procedury mysql> CALL WartoscTow (); Query OK, 0 rows affected, 1 warning (0.63 sec) mysql> SELECT * FROM WartoscTowaru; +-------------+--------+---------------+ NazwaTowaru Status WartoscTowaru +-------------+--------+---------------+ Banany Jest 94.35 Winogrona Jest 86.8 +-------------+--------+---------------+ 2 rows in set (0.00 sec) Bazy Danych - A. Dawid 2011 24

WYZWALACZE (triggers) Wyzwalacze zestaw instrukcji wykonywany po zmianie zawartości tabeli. Instrukcje CREATE, DROP Składnia CREATE TRIGGER nazwa wyzwalacza {BEFORE AFTER } {INSERT UPDATE DELETE } ON nazwa tabeli FOR EACH ROW Bazy Danych - A. Dawid 2011 25

Przykład: Procedura wyliczania towaru DROP TRIGGER IF EXISTS testwar; delimiter CREATE TRIGGER testwar BEFORE INSERT ON towary FOR EACH ROW BEGIN INSERT INTO towary SET cena2 = NEW.ilosc; END; delimiter ; Bazy Danych - A. Dawid 2011 26

ROLLBACK Kończy transakcje bez zachowania zmian Składnia ROLLBACK [WORK] Gdy użyjemy tej instrukcji, transakcja zakończy się niepowodzeniem i wszystkie zmiany podczas niej dokonane nie zostaną zachowane Bazy Danych - A. Dawid 2011 27