Systemowe aspekty baz danych



Podobne dokumenty
Systemowe aspekty baz

SQL 4 Structured Query Lenguage

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

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

Składowane procedury i funkcje

Ćwiczenia 2 IBM DB2 Data Studio

Administracja i programowanie pod Microsoft SQL Server 2000

DECLARE VARIABLE zmienna1 typ danych; BEGIN

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

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

Projektowanie systemów baz danych

PODSTAWY BAZ DANYCH 13. PL/SQL

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

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

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

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

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

Prawa dostępu do serwera. Nadawanie i odbieranie uprawnień DCL. Użytkownicy a role

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

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

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

Bazy danych 10. SQL Widoki

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

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

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

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

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

Instrukcja podwaja zarobki osób, których imiona zaczynają się P i dalsze litery alfabetu zakładamy, że takich osbób jest kilkanaście.

BAZA DANYCH SIECI HOTELI

Hurtownia Świętego Mikołaja projekt bazy danych

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

Język SQL, zajęcia nr 1

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

Oracle PL/SQL. Paweł Rajba.

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

Funkcje w PL/SQL Funkcja to nazwany blok języka PL/SQL. Jest przechowywana w bazie i musi zwracać wynik. Z reguły, funkcji utworzonych w PL/SQL-u

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

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

SQL Server i T-SQL w mgnieniu oka : opanuj język zapytań w 10 minut dziennie / Ben Forta. Gliwice, Spis treści

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

Aspekty aktywne baz danych

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

Administracja i programowanie pod Microsoft SQL Server 2000

BAZY DANYCH Cz III. Transakcje, Triggery

Procedury i funkcje składowane

Bazy danych i usługi sieciowe

Użytkownicy, uprawnienia, role w SQL Server (W oparciu o SQL Server 2008R2 Books Online)

15. Funkcje i procedury składowane PL/SQL

T-SQL dla każdego / Alison Balter. Gliwice, cop Spis treści. O autorce 11. Dedykacja 12. Podziękowania 12. Wstęp 15

77. Modelowanie bazy danych rodzaje połączeń relacyjnych, pojęcie klucza obcego.

Elementy. języka SQL

Cele. Definiowanie wyzwalaczy

Paweł Rajba

CREATE USER

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny Technologiczny Politechnika Śląska

Bazy Danych i Usługi Sieciowe

Fizyczna struktura bazy danych w SQL Serwerze

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

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

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

Oracle PL/SQL. Paweł Rajba.

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

Oracle11g: Wprowadzenie do SQL

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

Ref. 7 - Język SQL - polecenia DDL i DML

P o d s t a w y j ę z y k a S Q L

Język PL/SQL. Rozdział 6. Procedury wyzwalane

Struktura bazy danych

Bazy danych. dr inż. Arkadiusz Mirakowski

Programowanie MSQL. show databases; - pokazanie jakie bazy danych są dostępne na koncie

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

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

Oracle PL/SQL. Paweł Rajba.

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

INFORMATOR TECHNICZNY WONDERWARE. Ograniczenie wyświetlania listy zmiennych w przeglądarce zmiennych ActiveFactory

Administracja i programowanie pod Microsoft SQL Server 2000

Wykład 5. SQL praca z tabelami 2

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

Zaawansowane bazy danych i hurtownie danych semestr I

PL/SQL. Zaawansowane tematy PL/SQL

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

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

- język zapytań służący do zapisywania wyrażeń relacji, modyfikacji relacji, tworzenia relacji

Wyzwalacze. do automatycznego generowania wartości kluczy głównych. Składnia instrukcji tworzacej wyzwalacz

Relacyjne bazy danych. Podstawy SQL

Bloki anonimowe w PL/SQL

Wyzwalacze (triggery) Przykład

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

Comarch ERP XL Business Intelligence Start. Migracja do wersji 2018

Bazy danych. Bazy danych. Podstawy języka SQL. Dr inż. Paweł Kasprowski.

Oracle PL/SQL. Paweł Rajba.

Microsoft SQL Server Podstawy T-SQL

Administracja i programowanie pod Microsoft SQL Server 2000

Bazy danych. Dr inż. Paweł Kasprowski

1 Zaznacz poprawne stwierdzenia dotyczące grup plików (filegroup) możemy określić do której grupy plików trafi

Wyzwalacze. Anna Fiedorowicz Bazy danych 2

Procedury wyzwalane. Rozdział 13. Procedury wyzwalane. Cele stosowania procedur wyzwalanych. Definiowanie procedury wyzwalanej DML

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

Tworzenie widoku CREATE OR REPLACE VIEW [nazwa_widoku] AS SELECT [nazwy_kolumn] FROM [nazwa_tablicy];

Transkrypt:

Systemowe aspekty baz danych

Deklaracja zmiennej Zmienne mogą być wejściowe i wyjściowe Zmienne w T-SQL można deklarować za pomocą @: declare @nazwisko varchar(20) Zapytanie z użyciem zmiennej: select @nazwisko = Nazwisko from Pracownik where NrPrac = 22000 Spowoduje wyświetlenie tego, co jest pod zmienną @nazwisko select @nazwisko

Zapytania sparametryzowane Deklaracja zmiennych: declare @nazwisko varchar(20) declare @NrPrac int Przypisanie wartości do zmiennej set @NrPrac = 22000 Zapytanie z parametrami select @nazwisko = Nazwisko from Pracownik where NrPrac = @NrPrac Spowoduje wyświetlenie tego, co jest pod zmienną @nazwisko: select @nazwisko

Procedury składowane Procedura składowana jest zapisywana do bazy danych Przykład: create procedure GetName @NrPrac int, @nazwisko varchar(20) output as begin select @nazwisko = Nazwisko from Pracownik where NrPrac = @NrPrac End Wywołanie powyższej procedury składowanej declare @nazwisko varchar(20) declare @NrPrac int set @NrPrac = 22000 exec GetName @NrPrac, @nazwisko output select @nazwisko

Procedury składowane Przykład: create procedure GetName @NrPrac int, @nazwisko varchar(20) output, @Zarobki int output as begin if (@NrPrac < 10000) begin select @nazwisko = Nazwisko from Pracownik where NrPrac = @NrPrac end end select @Zarobki = Zarobki from Pracownik where NrPrac = @NrPrac

Procedury składowane Wywołanie procedury: Deklaracja zmiennych: declare @nazwisko varchar(20) declare @NrPrac int declare @Zarobki int Przypisanie zmiennej: set @NrPrac = 3990 Wywołanie procedury: exec GetName @NrPrac, @nazwisko output, @Zarobki output Wyświetlenie wartości: select @nazwisko, @Zarobki

Funkcje Wyróżniamy dwa rodzaje funkcji: skalarne; tablicowe.

Funkcje skalarne Przykład funkcji skalarnej: create function GetNameFun (@NrPrac int) RETURNS nchar(20) as begin declare @nazwisko nchar(20) select @nazwisko = Nazwisko from Pracownik where NrPrac = @NrPrac return @nazwisko End Funkcja skalarna zwraca pojedynczą wartość Wywołanie funkcji: declare @nazwisko varchar(20) set @nazwisko = dbo.getnamefun(22000)

Funkcje tablicowe Przykład funkcji tablicowej: create function GetNameTable (@NrPrac int) RETURNS table as return (select Nazwisko from Pracownik where NrPrac = @NrPrac) Funkcja tablicowa zwraca tablicę Wywołanie funkcji: select * from GetNameTable(22000)

Procedury składowane (MySQL) Procedura składowana jest zapisywana do bazy danych Przykład: DELIMITER $$ create procedure GetName (Nr int) Begin //Deklaracja zmiennych declare Naz varchar(30); declare I varchar(20); // Pobieranie danych select Nazwisko,Imie INTO Naz,I from Pracownik where NrPrac = Nr; // Wypisanie danych select Naz, I; end$$ DELIMITER ; Wywołanie powyższej procedury składowanej call GetName(5111);

Procedury składowane (MySQL) Procedura z parametrem zewnętrznym: DELIMITER $$ create procedure GetName (OUT Naz varchar(20), Nr int) begin select Nazwisko INTO Naz from Pracownik where NrPrac = Nr; end$$ DELIMITER ; Wywołanie powyższej procedury składowanej set @Naz = ''; call GetName(@Naz, 5111); select @Naz;

Procedury składowane (MySQL) Procedura z parametrem zewnętrznym: DELIMITER $$ create procedure GetName (OUT Naz varchar(20), Nr int) Begin IF (Nr < 5000) THEN select Nazwisko INTO Naz from Pracownik where NrPrac = Nr; END IF; end$$ DELIMITER ; Wywołanie powyższej procedury składowanej set @Naz = ''; call GetName(@Naz, 5111); select @Naz;

Funkcje (MySQL) Funkcje są zapisywane do bazy danych. W odróżnieniu od procedur składowanych zwracają jakąś wartość. Przykład: DELIMITER $$ create function GetNameFunction (Nr int) returns varchar(50) begin declare Naz varchar(20); select Nazwisko INTO Naz from Pracownik where NrPrac = Nr; return Naz; end$$ DELIMITER ; Wywołanie powyższej funkcji set @s = GetNameFunction(3588); select @s;

Dynamiczny SQL Umożliwia dynamiczne tworzenie zapytań (na poziomie wykonywania programu); Przykład zapytania: declare @zm_zapytanie varchar(100) declare @zm_tabela varchar(100) declare @zm_kolumny varchar(100) set @zm_kolumny = 'Imie, Nazwisko' set @zm_tabela = ' Pracownik' set @zm_zapytanie = ' select '+ @zm_kolumny + ' from ' + @zm_tabela Wywołanie: execute sp_sqlexec @zm_zapytanie lub exec( @zm_zapytanie)

Dynamiczny SQL Funkcja tworząca dynamiczne zapytanie create procedure GetQuery @query nvarchar(200), @NrPrac int as begin declare @result varchar(200) set @result = @query + ' where NrPrac = ' + CAST(@NrPrac as varchar(20)) execute sp_sqlexec @result End Wywołanie execute GetQuery 'select * from Pracownik ', 22000

Procedury systemowe w SQL Server Zaczynają się od sp_ Utworzenie nowego typu za pomoca procedury systemowej exec sp_addtype PESEL,'varchar(11)', 'NOT NULL' Odczytanie tekstu procedury składowanej: exec sp_helptext 'GetName' Sprawdzanie parametrów triggera exec sp_helptrigger Osoba

declare @Nazwisko varchar(20) declare @Imie varchar(20) declare @NrPrac int Kursory declare kurplaca cursor for select Imie, Nazwisko, NrPrac from Pracownik open kurplaca fetch next from kurplaca into @Imie, @Nazwisko, @NrPrac while @@FETCH_STATUS = 0 begin select @Imie, @Nazwisko, @NrPrac if (@NrPrac = 22000) begin select @Imie = 'NewName' update Pracownik set Imie = @Imie where current of kurplaca end fetch next from kurplaca into @Imie, @Nazwisko, @NrPrac End close kurplaca deallocate kurplaca

Indeksy Indeks określony na atrybucie A pewnej relacji jest mechanizmem, który pozwala na efektywne wyszukiwanie krotek o ustalonej wartości składowej atrybutu A. Indeks składa się z uporządkowanej kolekcji: wartości atrybutu A oraz adresu fizycznego rekordu odpowiadającego temu atrybutowi. Indeksy stosuje się w dużych tabelach, nakłada się na takie atrybuty (z reguły o typie int), na których selekcja jest prowadzona szczególnie często. Przykładowo zakładamy, że taka operacja będzie wykonywana bardzo często: select * from Pracownik where NrPrac = 23000

Indeksy Tworzenie indeksu: create index IndeksNrPrac on Pracownik(NrPrac) Optymalizator zapytań najpierw sięga do indeksu IndeksNrPrac i znajduje wartości adresów fizycznych rekordów spełniających kryteria. Indeksy po wielu atrybutach: create index IndeksNrPracNazw on Pracownik(NrPrac, Nazwisko) Usuwanie indeksów (SQL3): drop index IndeksNrPracNazw Usuwanie indeksów (T-SQL): drop index Pracownik.IndeksNrPracNazw

Rodzaje indeksów na przykładzie SQL Server Indeks klastrowy: może być jeden w tabeli; dane znajdują się w liściach; utworzenie klucza głównego na kolumnę w tabeli powoduje dodanie indeksu klastrowego na tę kolumnę; create clustered index nazwa_indeksu on tabela (kolumna1, ) Indeks nieklastrowy: może być więcej niż jeden w tabeli; w liściach nie ma danych tylko są wskaźniki do danych; create nonclustered index nazwa_indeksu on tabela (kolumna1, )

Indeks klastrowy

Indeks nieklastrowy

Indeksy Wybór właściwego indeksu zależy od projektanta bazy danych. Przyspiesza wykonywanie zapytań pobierających; Operacje wstawiania, usuwania i modyfikacji bazy danych są skomplikowane przy zastosowaniu indeksów. Musi być reorganizacja indeksów.

Perspektywy (Views) Perspektywy są bytami podobnymi do tabel. Różnica jest taka, że: Tabele znajdują się fizycznie w bazie danych. Jedynie definicja perspektywy znajduje się w bazie danych. Wyliczenie (materializacja) następuje w momencie użycia perspektywy. Wynik jest konsumowany i następnie kasowany. Wada: czas ewaluacji perspektyw + czas ewaluacji zapytań używających perspektyw bez optymalizacji często nieakceptowalny

Perspektywy Przykład Create view PracLokal as SELECT lok.lokalizacja, lok.wydzial AS LokWydz, pr.imie, pr.nazwisko, pr.nrprac, pr.rokpracy, pr.wydzial AS PrWydz, pr.zarobki FROM Lokalizacja as lok INNER JOIN Pracownik AS pr ON lok.wydzial = pr.wydzial Widok można traktować jak tabelę: select * from PracLokal where Nazwisko='Zaorski'

Modyfikowanie widoków Modyfikowanie widoków polega na modyfikacji tabel źródłowych na których widok się opiera. Modyfikowanie widoków jest możliwe tylko w ściśle określonych sytuacjach: - widok musi być oparty na klauzuli SELECT bez operacji grupowania; - klauzula WHERE nie może zawierać zapytania dotyczącego modyfikowanej relacji ; - klauzula SELECT musi być na tyle duża, żeby wstawić odpowiednie wartości do relacji, która ma być zmodyfikowana. Atrybuty modyfikowanej tabeli, których nie ma w perspektywie, powinny dać się wypełnić wartościami domyślnymi albo NULL;

Modyfikowanie widoków To zadziała, bo modyfikowana jest jedna tabela: insert into PracLokal (Imie, Nazwisko, NrPrac) values ('Damian', 'Matysiak', 2490) To nie zadziała, bo jest próba modyfikacji więcej niż jednej tabeli: insert into PracLokal (Imie, Nazwisko, NrPrac, Lokalizacja) values ('Damian', 'Matysiak', 2490, 'Lublin')

Zastosowanie perspektyw Ograniczenie danych do takich, które są istotne w konkretnym zastosowaniu. Ograniczenie dostępu do obiektów, ochrona prywatności. Ukrywanie przed użytkownikami struktury bazy danych. Hurtownie danych: analiza informacji gromadzonych z heterogenicznych źródeł.

Autoryzacja Autoryzacja może być definiowana na następujących poziomach: Serwera bazy danych; Bazy danych; Obiektów w bazie danych; Dodanie nowego użytkownika: exec sp_addlogin 'Piotr','My-Passw CREATE LOGIN Piotr1 WITH PASSWORD = 'My-Pasw1'

Role na serwerze bazy danych Fixed server role sysadmin serveradmin setupadmin securityadmin processadmin dbcreator diskadmin bulkadmin Description Can perform any activity in SQL Server Can set server-wide configuration options, shut down the server Can manage linked servers and startup procedures Can manage logins and CREATE DATABASE permissions, also read error logs and change passwords Can manage processes running in SQL Server Can create, alter, and drop databases Can manage disk files Can execute BULK INSERT statements

Procedury systemowe obsługujące role serwera bazy danych sp_addsrvrolemember Adds a login as a member of a fixed server role sp_dropsrvrolemember Removes an SQL Server login, Windows user or group from a fixed server role sp_helpsrvrole Returns a list of the fixed server roles sp_helpsrvrolemember sp_srvrolepermission Returns information about the members of fixed server roles Returns the permissions applied to a fixed server role

Dodanie użytkownika Dodanie nowego użytkownika: exec sp_addlogin 'Piotr', PiotrHaslo CREATE LOGIN Piotr1 WITH PASSWORD = Piotr1Haslo' Dodanie roli serwera dla użytkownika: exec sp_addsrvrolemember Piotr,'sysadmin'

Role bazy danych W systemie istnieją standardowe role bazy danych. Nie można ich zmieniać, ale można tworzyć nowe. db_owner db_accessadmin db_securityadmin db_ddladmin db_backupoperator db_datareader db_datawriter db_denydatareader db_denydatawriter Has all permissions in the database Can add or remove user IDs Can manage all permissions, object ownerships, roles and role memberships Can issue ALL DDL, but cannot issue GRANT, REVOKE, or DENY statements Can issue DBCC, CHECKPOINT, and BACKUP statements Can select all data from any user table in the database Can modify any data in any user table in the database Cannot select any data from any user table in the database Cannot modify any data in any user table in the database

Procedury składowane obsługujące role bazy danych sp_addrole sp_addrolemember sp_dbfixedrolepermission sp_droprole sp_helpdbfixedrole sp_helprole sp_helprolemember sp_droprolemember Creates a new database role in the current database Adds a user to an existing database role in the current database Displays permissions for each fixed database role Removes a database role from the current database Returns a list of fixed database roles Returns information about the roles in the current database Returns information about the members of a role in the current database Removes users from the specified role in the current database

Dodanie użytkownika Dodanie nowego użytkownika do bazy danych: CREATE USER Piotr Dodanie roli serwera dla użytkownika: exec sp_addrolemember 'db_owner',piotr exec sp_addrolemember 'db_ddladmin',piotr

Definiowanie uprawnień na poziomie obiektów i instrukcjach Uprawnienia można definiować na następujących obiektach lub instrukcjach: SELECT, INSERT, UPDATE, DELETE, EXECUTE CREATE DATABASE, CREATE DEFAULT, CREATE FUNCTION, CREATE PROCEDURE, CREATE RULE, CREATE TABLE, CREATE VIEW BACKUP DATABASE, BACKUP LOG

Dodanie użytkownika oraz jego roli - przykład Dodanie nowego użytkownika exec sp_addlogin 'Nowy','NoweHaslo' CREATE USER Nowy exec sp_addrolemember 'db_ddladmin',nowy Nie ma uprawnień do wykonania zapytania, a więc nie można zrobić: select * from Bar

Instrukcja GRANT GRANT umożliwia użytkownikowi lub roli wykonywanie operacji Przykład: grant select on Pracownik to Nowy Użytkownik Nowy może teraz wykonać instrukcję: select * from Pracownik Przykład2: grant select on Pracownik(Imie, Nazwisko) to Nowy Użytkownik Nowy może teraz wykonać instrukcję: select Imie from Pracownik Nie może jednak wykonać operacji: select * from Pracownik

Instrukcja GRANT Przykład3: grant select on Pracownik to Nowy WITH GRANT OPTION Użytkownik Nowy może teraz wykonać instrukcję SELECT i może też dać uprawnienia do wykonania tej instrukcji innemu użytkownikowi. GRANT może być stosowany na każdym poziomie autoryzacji.

Instrukcja REVOKE Instrukcja REVOKE powoduje odebranie prawa do wykonywania instrukcji. Przykład: grant select on Pracownik(Imie, Nazwisko) to Nowy revoke select on Pracownik from Nowy Powoduje odebranie użytkownikowi prawa do wykonywania instrukcji SELECT na tabeli Pracownik.

Dziękuję