Systemowe aspekty baz



Podobne dokumenty
Systemowe aspekty baz danych

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

Administracja i programowanie pod Microsoft SQL Server 2000

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

Ćwiczenia 2 IBM DB2 Data Studio

Projektowanie systemów baz danych

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

PODSTAWY BAZ DANYCH 13. PL/SQL

SQL 4 Structured Query Lenguage

DECLARE VARIABLE zmienna1 typ danych; BEGIN

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

Składowane procedury i funkcje

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

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

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

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

Bazy danych 10. SQL Widoki

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

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

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

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

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

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

Elementy. języka SQL

Hurtownia Świętego Mikołaja projekt bazy danych

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

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

BAZY DANYCH Cz III. Transakcje, Triggery

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

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

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

Język SQL, zajęcia nr 1

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

Paweł Rajba

BAZA DANYCH SIECI HOTELI

Oracle PL/SQL. Paweł Rajba.

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

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

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

Administracja i programowanie pod Microsoft SQL Server 2000

Procedury i funkcje składowane

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

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

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

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

CREATE USER

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

Bazy danych i usługi sieciowe

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

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

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

15. Funkcje i procedury składowane PL/SQL

Administracja i programowanie pod Microsoft SQL Server 2000

Cele. Definiowanie wyzwalaczy

Bazy Danych i Usługi Sieciowe

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

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

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

Struktura bazy danych

Aspekty aktywne baz danych

Relacyjne bazy danych. Podstawy SQL

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

Bazy danych. dr inż. Arkadiusz Mirakowski

Kursory. A. Pankowska 1

Administracja i programowanie pod Microsoft SQL Server 2000

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

Oracle11g: Wprowadzenie do SQL

Oracle PL/SQL. Paweł Rajba.

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

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

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

Wyzwalacze. Anna Fiedorowicz Bazy danych 2

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

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

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

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

Język SQL. Rozdział 10. Perspektywy Stosowanie perspektyw, tworzenie perspektyw prostych i złożonych, perspektywy modyfikowalne i niemodyfikowalne.

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

Oracle PL/SQL. Paweł Rajba.

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

Microsoft SQL Server Podstawy T-SQL

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

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

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

Comarch ERP XL Business Intelligence Start. Migracja do wersji 2018

Bloki anonimowe w PL/SQL

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

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

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

Język DML. Instrukcje DML w różnych implementacjach SQL są bardzo podobne. Podstawowymi instrukcjami DML są: SELECT INSERT UPDATE DELETE

PL/SQL. Zaawansowane tematy PL/SQL

Oracle PL/SQL. Paweł Rajba.

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

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

Obiektowość BD Powtórka Czas odpowiedzi. Bazy Danych i Systemy informacyjne Wykład 14. Piotr Syga

Zaawansowane bazy danych i hurtownie danych semestr I

na MS SQLServer 2005 i 2008

3 Przygotowali: mgr inż. Barbara Łukawska, mgr inż. Maciej Lasota

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)

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 2005 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

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

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ł.

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')

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ć 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ę