SQL język baz danych przegląd



Podobne dokumenty
Elementy. języka SQL

DECLARE VARIABLE zmienna1 typ danych; BEGIN

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

Aspekty aktywne 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

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

Wykład 8. SQL praca z tabelami 5

Relacyjne bazy danych. Podstawy SQL

Tworzenie tabel. Bazy danych - laboratorium, Hanna Kleban 1

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

Paweł Rajba

SQL język baz danych przegląd

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

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

Bazy danych. Dr inż. Paweł Kasprowski

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

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

15. Funkcje i procedury składowane PL/SQL

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

Relacyjne bazy danych. Podstawy SQL

Przykładowa baza danych BIBLIOTEKA

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

Bazy danych 10. SQL Widoki

Autor: Joanna Karwowska

Język SQL, zajęcia nr 1

Administracja i programowanie pod Microsoft SQL Server 2000

Język SQL podstawy zapytań

Wykład 05 Bazy danych

Program szkoleniowy Efektywni50+ Moduł IV Podstawy relacyjnych baz danych i język SQL

PODSTAWY BAZ DANYCH 13. PL/SQL

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

Pakiety podprogramów Dynamiczny SQL

Podstawy języka SQL. SQL Structured Query Languagestrukturalny

Hurtownia Świętego Mikołaja projekt bazy danych

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

Tworzenie baz danych i tabel

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

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

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

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

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

Bloki anonimowe w PL/SQL

Post-relacyjne bazy danych

Systemowe aspekty baz

Systemy GIS Tworzenie zapytań w bazach danych

Paweł Rajba

1 Wstęp do modelu relacyjnego

D D L S Q L. Co to jest DDL SQL i jakie s jego ą podstawowe polecenia?

Język SQL. instrukcja laboratoryjna. Politechnika Śląska Instytut Informatyki. laboratorium Bazy Danych

Dr Michał Tanaś(

Projektowanie systemów baz danych

Administracja i programowanie pod Microsoft SQL Server 2000

SZKOLENIE: Administrator baz danych. Cel szkolenia

Bazy danych - Materiały do laboratoriów VIII

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

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

Bazy Danych i Usługi Sieciowe

Microsoft SQL Server Podstawy T-SQL

Bazy danych Ćwiczenia projektowe

Wprowadzenie do projektowania i wykorzystania baz danych Relacje

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

BAZY DANYCH wprowadzenie do języka SQL. Opracował: dr inż. Piotr Suchomski

Wykład 5. SQL praca z tabelami 2

Programowanie obiektów

Język SQL. Rozdział 9. Język definiowania danych DDL, część 2.

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

SQL w 24 godziny / Ryan Stephens, Arie D. Jones, Ron Plew. Warszawa, cop Spis treści

Cele. Definiowanie wyzwalaczy

Oracle11g: Wprowadzenie do SQL

Podstawowe pojęcia dotyczące relacyjnych baz danych. mgr inż. Krzysztof Szałajko

SIECI KOMPUTEROWE I BAZY DANYCH

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

040 STRUCTURED QUERY LANGUAGE. Prof. dr hab. Marek Wisła

BAZA DANYCH SIECI HOTELI

Systemowe aspekty baz danych

Perspektywy Stosowanie perspektyw, tworzenie perspektyw prostych i złożonych, perspektywy modyfikowalne i niemodyfikowalne, perspektywy wbudowane.

Procedury i funkcje składowane

Przykłady najlepiej wykonywać od razu na bazie i eksperymentować z nimi.

Bazy danych - wykład wstępny

Bazy danych i usługi sieciowe

SQL w praktyce. Miłej i owocnej nauki!!!

Język SQL, zajęcia nr 2

Projektowanie bazy danych. Jarosław Kuchta Projektowanie Aplikacji Internetowych

Bazy danych 2. Wykład 1

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

SQL 4 Structured Query Lenguage

Składowane procedury i funkcje

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

- Przedmiot kończy się egzaminem - Egzamin ma formę testu teoretycznego

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

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

I. Język manipulowania danymi - DML (Data Manipulation Language). Polecenia INSERT, UPDATE, DELETE

Administracja i programowanie pod Microsoft SQL Server 2000

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

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

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

Administracja i programowanie pod Microsoft SQL Server 2000

Oracle PL/SQL. Paweł Rajba.

Widok Connections po utworzeniu połączenia. Obszar roboczy

Transkrypt:

SQL - historia SQL język baz danych przegląd SQL - "Structured Query Language" - język czwartej generacji (4GL) wymowa: "es-kju-ell" lub "sequel [si:kwl]" SQL język baz danych, strukturalny język zapytań, język kwerend. Język do definiowania, wyszukiwania i administrowania danymi w relacyjnej bazie danej. Tadeusz Pankowski www.put.poznan.pl/~tadeusz.pankowski (c) T. Pankowski, SQL - przegląd 1 (c) T. Pankowski, SQL - przegląd 2 SQL - historia 1. 1970, E.F.Codd, "A relational model of data for large shared data banks", Communications of the ACM, Vol.13, No.6, 1970, podstawy relacyjnego modelu danych 2. 1974, SEQUEL "Structured English Query Language", D. Chamberlin i in., IBM San Jose Research Laboratory, implementacja: SEQUEL- XRM (1974-75) 3. 1976-77, SEQUEL/2, implementacja i rozwój w ramach projektu System R, IBM San Jose RL 4. 1980-83, główne implementacje: ORACLE, DB2 (SQL/DS), 5. 1986, SQL/86 - oficjalny standard ANSI (American National Stanmdards Institute) oraz ISO (International Organization for Standardization) 6. 1992, SQL2 (lub SQL/92) - "International Standard ISO/IEC 9075:1992, Database Language SQL" 7. dalszy rozwój: SQL3 (SQL:1999), włącza idee podejścia obiektowego, dane wielowymiarowe, heterogeniczne, XML,... Standaryzacja - zalety redukcja kosztów szkolenia przenośność aplikacji wydłużenie żywotności aplikacji komunikacja międzysystemowa, interoperacyjność wygoda dla użytkownika, co robi system, a nie w jaki sposób wspólny interfejs do bazy danych (c) T. Pankowski, SQL - przegląd 3 (c) T. Pankowski, SQL - przegląd 4

Standaryzacja - wady Oprogramowanie klienta Warstwa oprogramowania klienta ograniczenie kreatywności SQL jest dość daleki od idealnego języka relacyjnego braki samego SQL wiele problemów pozostawiono jako zależnych od implementacji "implementation dependent", co utrudnia przenośność złudzenie istnienia standardu (?) ADO (ActiveX Data Objects) ODBC (Open Database Connectivity) Oprogramowanie standardowe zapewniające wymianę danych między serwerem i klientem: Architektura aplikacji baz danych Warstwa oprogramowania serwera MS SQL Server ORACLE Access (c) T. Pankowski, SQL - przegląd 5 SQL przeznaczenie Platforma danych MS SQL Server SQL = SQL2 = SQL/92 Uwaga: Używać będziemy notacji stosowanej w dialekcie języka SQL systemu MS SQL Server, a więc języka Transact-SQL. 1. Główne funkcje zarządzania danymi: definiowanie manipulowanie, administrowanie 2. Przeznaczony dla: interakcyjnych użytkowników końcowych, twórców programów użytkowych (aplikacji), administratorów baz danych, twórców oprogramowania specjalizowanego (narzędziowego, systemów współpracujących z bazami danych,...) 7 (c) T. Pankowski, SQL - przegląd 8

Cechy platformy danych 1. Zaufanie (bezpieczeństwo, wiarygodność, dostępność, skalowalność) ang. trusted, security, reliability, scalability): szyfrowanie danych, klucze bezpieczeństwa, audyt (monitorowanie) aktywności, mirroring baz danych 2. Produktywność (wydajność budowy i eksploatacji aplikacji): wspomaganie procesów tworzenia aplikacji, administrowania, optymalizacji; zintegrowane środowiska programowania baz danych, aplikacji, rozproszenia; klastry baz danych, wieloprocesorowość 3. Inteligencja (bussines intelligence): integracja danych, analiza i eksploracja danych; raportowanie danych. (c) T. Pankowski, SQL - przegląd 9 Architektura SQL Server W systemie MS SQL Server istnieją dwa typy baz danych: bazy systemowe, bazy użytkowe. Bazy systemowe pamiętają zmiany odnoszące się do całego systemu SQL Server. System wykorzystuje te bazy danych do zarządzania samym sobą. Systemowymi bazami danych są: master baza pamiętająca informacje o wszystkich użytkowych bazach danych w systemie, model baza stanowiąca wzorzec dla nowo tworzonych baz danych tempdb robocza baza danych msdb baza danych wykorzystywana przez serwer w procesie zarządzania (c) T. Pankowski, SQL - przegląd 10 Tworzenie baz danych CREATE DATABASE nazwa_bazy_danych Np.: CREATE DATABASE KSS2010 Utworzone zostaną dwa pliki: KSS2010.mdf główny plik bazy danych KSS2010_LOG.ldf plik dziennika transakcji Operacje na bazie danych Wybieranie bazy danych: USE nazwa_bazy_danych Usuwanie bazy danych: DROP DATABASE nazwa_bazy_danych (c) T. Pankowski, SQL - przegląd 11 (c) T. Pankowski, SQL - przegląd 12

Typy danych 1. W systemie SQL Server każda kolumna w tabeli, każda zmienna, każde wyrażenie i każdy parametr mają określony typ. 2. Oprócz omawianych poniżej systemowych typów danych, użytkownicy mogą definiować własne typy (patrz CREATE TYPE), które są w istocie synonimami dla pewnych ograniczeń typów systemowych. 3. Wyróżniamy następujące systemowe typy danych (przykłady): znakowe stałej długości: char(n) znakowe zmiennej długości: varchar(n) liczby całkowite: int, smallint, liczby o ustalonej dokładności (stałoprzecinkowe): decimal(p, s) liczby zmiennoprzecinkowe: float(n) walutowe: money data: date XML: xml wielkie obiekty binarne (BLOB): image Tworzenie tabel bazy danych CREATE TABLE <nazwa tabeli> (<def. kolumny>,... <def kolumny>, <warunek spójności>) <def kolumny> ::= <nazwa kolumny> <typ danych> <warunek spójności> <typ danych> ::= int char(n) money decimal(n, u), <warunek spójności> ::= [CONSTRAINT <nazwa ograniczenia>] PRIMARY KEY NOT NULL REFERENCES <nazwa tabeli>(<nazwy kolumn klucza głównego>) CHECK (<nazwa kolumny> <warunek>) (c) T. Pankowski, SQL - przegląd 13 (c) T. Pankowski, SQL - przegląd 14 Definiowanie tabel - przykład Definiowanie tabel - przykład create table Dostawca ( NrDcy char(3) primary key, Nazwa char(20), Adres char(20)) create table Magazyn ( NrMag INT primary key, Adres char(20)) create table Towar ( NrTow char(5) not null primary key, Nazwa char(20), GrupaTow char(3) not null, CenaZak money, CenaSprz money) 15 16

Definiowanie tabel przykład (c.d.) Definiowanie tabel przykład (c.d.) create table Dostawa ( IdDost int identity(1,1), NrDcy char(3), NrMag int, NrTow char(5), Data datetime, Ilosc decimal(5), constraint Kg_Dostawa primary key (IdDost), constraint Ko_Dostawa_Dostawca foreign key (NrDcy) references Dostawca, constraint Ko_Dostawa_Towar foreign key (NrTow) references Towar, constraint Ko_Dostawa_Magazyn foreign key (NrMag) references Magazyn) 1. W powyższych definicjach: klucz główny składa się z kilku kolumn dlatego jego definicja podana jest po definicji wszystkich kolumn, np: PRIMARY KEY (NrMag,NrTow); warunkom spójności bazy danych można nadać nazwy, umieszczamy je wtedy we frazie CONSTRAINT, definiujemy zależności referencyjne przez określenie klucza obcego FOREIGN KEY oraz tabeli, od której klucza głównego ten klucz obcy zależy, np: FOREIGN KEY(NrMag) REFERENCES Magazyn oznacza, że każda wartość wprowadzana do kolumny TowMag.NrMag musi występować jako wartość klucza głównego w tabeli Magazyn. 2. Za pomocą CRERATE TABLE tworzone są tabele bazowe (ekstensjonalne), mające fizyczną reprezentację w bazie danych oraz określamy niektóre warunki spójności bazy dnaych. 3. Tablice wirtualne (intencjonalne), tzw. widoki lub perspektywy (ang. create table TowMag ( NrMag int, NrTow char(5), Stan decimal(5), primary key (NrMag, NrTow), foreign key (NrMag) references Magazyn, view) tworzone są za pomocą CREATE VIEW foreign key (NrTow) references Towar) 17 18 SQL postać poleceń Zapytania w języku SQL mogą przybierać różną postać. Postać ta może zależeć od: 1. Miejsca wydawania polecenia: bezpośrednio w trybie interakcyjnym z terminala, w oprogramowaniu serwera, w oprogramowaniu klienta. 2. Kompletności posiadanej informacji w momencie formułowania polecenia: posiadamy pełną informację (w zapytaniu nie ma potrzeby używania zmiennych), używamy zmiennych do przekazywania i pobierania do/z zapytania pewnych parametrów, ale postać zapytania jest ustalona, używamy zmiennych do dynamicznego tworzenia postaci zapytania, a więc zmienne mogą być zarówno parametry zapytania, jak również jego struktura. 19 Pełne określenie zapytania Pracownik(IDPrac, Nazwisko, Placa, Stanowisko) Dochod(IDPrac, Rok, Kwota) W trybie interakcyjnym, bezpośrednio z terminala select Nazwisko, Placa from Pracownik where Placa >= 2000 Wynikiem jest tabela o dwóch kolumnach: Nazwisko i Placa. Do tabeli wynikowej należą wiersze, w których atrybut Placa ma wartość większą lub równą 2000. Z wykorzystaniem zmiennnych wierszowych (aliasów): select P.Nazwisko, D.Rok, D.Kwota from Pracownik P, Dochod D where P.IDPrac = D.IDPrac AND Rok > 1980

Zapytania sparametryzowane Pracownik(IDPrac, Nazwisko, Placa, Stanowisko) Dochod(IDPrac, Rok, Kwota) Wykorzystanie zmiennych wyjściowych w T-SQL (Transact-SQL): declare @placa money select @placa = Placa from Pracownik where IDPrac = '00123' W pierwszym wierszu deklarowana jest zmienna @placa (nazwa każdej zmiennej w języku Transact-SQL rozpoczyna się od znaku @) typu money. W drugim wierszu pod zmienną @placa podstawiana jest wartość kolumny Placa z ostatniego wiersza stanowiącego zbiór odpowiedzi na zapytanie. 21 Zapytania sparametryzowane (c.d.) Pracownik(IDPrac, Nazwisko, Placa, Stanowisko) Dochod(IDPrac, Rok, Kwota) Wykorzystanie zmiennych wejściowych i wyjściowych (T_SQL): declare @IDPrac varchar(30) declare @placa money set @IDPrac='00123' select @zm_placa = Placa from Pracownik where IDPrac = @IDPrac Wartość zmienna @IDPrac określana jest przed wykonaniem zapytania. Zauważmy, że dzięki znakowi @ system rozróżnia czy chodzi o nazwę zmiennej @IDPrac, czy o nazwę kolumny IDPrac. W obydwu powyższych przypadkach struktura zapytania jest znana. 22 Zapytania dynamiczne (T-SQL) declare @zapytanie varchar(100) declare @tabela varchar(100) declare @kolumny varchar(100) set @tabela = 'Pracownik' set @kolumny='nazwisko,placa' set @zapytanie='select '+@kolumny + ' from '+@tabela execute sp_sqlexec @zapytanie trzy pierwsze linie zawierają deklaracje zmiennych w trzech kolejnych liniach następuje określenie wartości zmiennych, tworzymy: select Nazwisko,Placa from Pracownik w ostatniej linii następuje wykonanie zapytania, procedury pamiętanej sp_sqlexec, ktrórej parametr @zapytanie przekazuje tekst polecenia (zapytania, procedury) 23 Zapytania dynamiczne (T-SQL) W przypadku zapytań dynamicznych postać zapytania nie jest znana na etapie kompilacji, w szczególności więc system nie jest w stanie ani sprawdzić poprawności składniowej zapytania, ani tym bardziej opracować optymalnej strategii jego wykonania. Czynności te realizowane są dopiero na etapie wykonania, co istotnie zmniejsza efektywność przetwarzania. 24

Operowanie danymi Operowanie danymi Cztery podstawowe operacje: select insert update delete - wyszukiwanie, - dołączanie, - aktualizacja, - usuwanie. Przykłady operacji modyfikujących: insert into Dostawa values('10','100',1,'1996.11.26',3) update Towar set CenaSprz = 1.1 * CenaSprz where GrupaTow = 'AGD' Operacja wyszukiwania: select distinct W.NrTow, W.NrMag from Dostawa W where NrDcy = '10' AND Ilosc > 2 distinct - usuwanie duplikatów select W.NrDcy, D.Nazwa, T.Nazwa, T.CenaSprz from Dostawa W, Dostawca D, Towar T where W.NrDcy = D.NrDcy AND W.NrTow = T.NrTow delete from Towar wherecenasprz < CenaZak (c) T. Pankowski, SQL - przegląd 25 (c) T. Pankowski, SQL - przegląd 26 Funkcje agregujące count, sum, avg, max, min, count(*) 1. Liczba wszystkich dostawców: select count(*) as Ld from Dostawca 2. Liczba dostawców realizujących dostawy select count(distinct W.NrDcy) as Ldd from Dostawa W Ldd bez distinct: select count(w.nrdcy) AS Ldd from Dostawa W Ld 4 3 Ldd Funkcje agregujące (c.d.) 3. Sumaryczny wartość towaru 100 w cenach zakupu: select sum(t.cenazak * TM.Stan) as W100 from Towar T, TowMag TM where T.NrTow = TM.NrTow AND T.NrTow = '100' W100 45 000 5 (c) T. Pankowski, SQL - przegląd 28

Funkcje agregujące (c.d.) 4. Wartości towarów w poszczególnych grupach towarowych: select from where group by having T.GrupaTow, sum(t.cenazak * TM.Stan) as Wartość Towar T, TowMag TM GrupaTow Wartość T.NrTow = TM.NrTow ----------------- -------------- T.GrupaTow KOM 24 000.00 GrupaTow <> 'AGD' RTV 45 000.00 Widoki (views( views) Widoki są tabelami wirtualnymi (intencjonalnymi), nie mającymi bezpośredniej reprezentacji w bazie danych. Zapamiętana jest jedynie ich definicja. Definicja widoku wykorzystywana jest w momencie odwoływania się do niego jak do każdej innej tabeli. select * from Towar T, TowMag TM where T.NrTow = TM.NrTow (c) T. Pankowski, SQL - przegląd 29 (c) T. Pankowski, SQL - przegląd 30 Widoki (views( views) "Towary RTV w cenach sprzedaży " create view RTV (NrTow, Nazwa, CenaSprz) as select T.NrTow, T.Nazwa, T.CenaSprz from Towar T where T.GrupaTow = 'RTV Definicja widoku wykorzystywana jest w momencie odwoływania się do niego: select RTV.NrTow, RTV.Nazwa, RTV.CenaSprz from RTV where RTV.CenaSprz < 2000 Przekształcone jest do zapytania względem tabeli TOWAR: select RTV.NrTow, RTV.Nazwa, RTV.CenaSprz from (select T.NrTow, T.Nazwa, T.CenaSprz from Towar T where T.GrupaTow = 'RTV' ) RTV where RTV.CenaSprz < 2000 lub równoważnie: select T.NrTow, T.Nazwa, T.CenaSprz from Towar T where T.GrupaTow = 'RTV' and T.CenaSprz < 2000 (c) T. Pankowski, SQL - przegląd 31 Spójno jność bazy danych 1. Spójność, niesprzeczność, integralność (ang. consistency, integrity constraints). 2. Spójność oznacza poprawność, niesprzeczność danych w bazie danych. Standard SQL zawiera środki do definiowania warunków spójności (lub więzów integralności), np. w obrębie zdania CREATE TABLE. 3. Każda próba naruszenia zdefiniowanych warunków spójności (podczas modyfikacji bazy danych) zostaje udaremniona, operacja ją podejmująca jest odrzucana, a baza danych pozostaje nie zmieniona. 4. W systemie pamiętana jest więc baza danych (dane podstawowe) oraz wiedza o bazie danych (dane opisujące struktury i warunki spójności). (c) T. Pankowski, SQL - przegląd 32

Rodzaje warunków w spójno jności 1. Typ kolumny typ może być standardowy lub pochodny zdefiniowany przez użytkownika. 2. UNIQUE dla określenia, że kolumna lub zestaw kolumn ma mieć unikalną wartość w tabeli (jest kluczem potencjalnym - alternatywnym, kandydującym w tabeli), taki klucz może przyjmować wartości NULL. 3. PRIMARY KEY specjalny przypadek UNIQUE dla zdefiniowania klucza głównego nie może przyjmować wartości NULL. 4. FOREIGN KEY - dla zdefiniowania zależności referencyjnych (zależności odniesień). Wartość klucza obcego musi występować jako wartość klucza w powoływanej tabeli. 5. CHECK - dla określenia, że kolumna lub zestaw kolumn (z jednej krotki) mają mieć wartości spełniające określony warunek. Taka spójność może być zdefiniowane jako reguła w wyrażeniu CREATE RULE. 6. Bardziej złożone warunki spójności można definiować za pomocą procedur wyzwalanych w wyrażeniach CREATE TRIGGER. Procedury te są automatycznie wyzwalane przy aktualizacji tabeli. Programowanie SQL Servera Dla wykonywania obliczeń, których nie można wyrazić za pomocą pojedynczego wyrażenia w języku Transact-SQL (T-SQL), stosuje się: systemowe procedury pamiętane (system stored procedures), paczki (wsady) (batches) i skrypty (scripts), funkcje (functions), procedury pamiętane (składowane) (stored procedures), procedury wyzwalane (trigery) (triggers), kursory (cursors). (c) T. Pankowski, SQL - przegląd 33 (c) T. Pankowski, SQL - przegląd 34 Systemowe procedury pamiętane Paczki (batches( batches) Nazwy wszystkich systemowych procedur pamiętanych rozpoczynają się od sp_ lub xp_. Systemowe procedury pamiętana są prekompilowanymi zbiorami wyrażeń SQL-owych ( sp_ ) lub języka programowanie ( xp_ ). Procedury typu xp_ (extended stored procedures) są to funkcje zdefiniowane w bibliotekach dołączanych dynamicznie (bibliotekach DLL) i służą do rozszerzenia funkcji SQL Servera. Przykłady: exec sp_tables podaje wszystkie tabele w bieżącej bazie danych exec sp_help Dostawa wypisuje informacje o tabeli Dostawa Paczka stanowi grupę złożoną z jednej lub z wielu wyrażeń Transact-SQLa. Standardowym końcem paczki jest polecenie GO lub koniec pliku. Paczkę może też stanowić grupa podświetlonych wyrażeń (przy korzystaniu z Query Analysera). SQL Server kompiluje paczkę w pojedynczą jednostkę wykonywalną zwaną planem wykonania (execution plan). Wyrażenia tworzące plan wykonania wykonywane są jednorazowo w jednym czasie. W przypadku wystąpienia błędu kompilacji, żadne z wyrażeń w paczce nie zostanie wykonane. Zmienna zdefiniowana w paczce nie jest dostępna poza nią zmienne są lokalne w paczce. Nie wszystkie wyrażenia mogą występować w jednej paczce (np. definiowanie i wywoływanie procedury). (c) T. Pankowski, SQL - przegląd 35 (c) T. Pankowski, SQL - przegląd 36

Paczki i skrypty Funkcje Przykład skryptu złożonego z dwóch paczek: USE sklep GO -- wykonanie paczki, wybór bazy danych sklep DECLARE @Powitanie VARCHAR(50) SET @Powitanie = 'Witaj w sklepie!' print @Powitanie GO -- wykonanie paczki, -- zmienna @Powitanie po GO nie jest już dostępna. Rodzaje funkcji: funkcje skalarne (scalar user-defined functions) zwracaną wartością jest pojedyncza liczba lub tekst, tj. wartość dowolnego typu z wyjątkiem typów: text, ntext i image; proste funkcje tablicowe (inline table-valued functions) zwracają wartość typu TABLE, przy czym zwracana tabela jest określona za pomocą pojedynczego wyrażenia SELECT (funkcje te nazywane są sparametryzowanymi widokami); złożone funkcje tablicowe (multi-statement table-valued functions) zwracają zmienną typu TABLE, przy czym zwracana tabela jest dowolną tabelą utworzoną w ciele funkcji. (c) T. Pankowski, SQL - przegląd 37 (c) T. Pankowski, SQL - przegląd 38 Funkcje skalarne Proste funkcje tablicowe Funkcja zwraca największy numer pracownika z podanego działu: CREATE FUNCTION ostatni_prac_dzialu (@id int) RETURNS int BEGIN declare @nr int set @nr = (select max(idprac) from pracownik where IdDzialu=@id) RETURN @nr END Wykorzystanie funkcji: select * from pracownik where IdPrac = dbo.ostatni_prac_dzialu(1) Funkcja zwraca zbiór pracowników z działu o podanym identyfikatorze: create function prac_dzialu(@id int) RETURNS TABLE as RETURN(select * from pracownik where IdDzialu=@id) go Wykorzystanie funkcji (wywołanie funkcji występuje w roli tabeli): select * from dbo.prac_dzialu(2) lub bez dbo select * from prac_dzialu(2) (c) T. Pankowski, SQL - przegląd 39 (c) T. Pankowski, SQL - przegląd 40

Procedury pamiętane Procedura oblicza dochód w podanym okresie: CREATE PROC Dochod @idprac int, -- id pracownika @czas int, -- liczba miesięcy @wynik int OUTPUT -- parametr wyjsciowy as select @wynik = (pensja + premia)*@czas from Pracownik where IdPrac = @idprac go Wywołanie: declare @c int, @w int select @c = 12 exec Dochod 1,@c,@w output select 'Dochod wynosi: ', @w 41