Jezyk SQL (strukturalny jezyk zapytan)
|
|
- Aleksandra Janicka
- 2 lat temu
- Przeglądów:
Transkrypt
1 Joanna Jedrzejowicz Strona Jezyk SQL (strukturalny jezyk zapytan) Na bazie danych wykonywane sa nastepujace operacje: 1. dopisywanie, usuwanie i modyfikacja danych, 2. wyszukiwanie danych spelniajacych okreslone kryteria wyboru, 3. przetwarzanie danych, np. wykonywanie obliczen z wykorzystaniem operacji logicznych, arytmetycznych i funkcji wbudowanych w system zarzadzania bazami danych, 4. zapisywanie sekwencji operacji w postaci odpowiednich konstrukcji algorytmicznych - makra i makrodefinicje, 5. zapamietanie danych bedacych wynikiem wyszukiwania w celu dalszego wykorzystania, np. wydrukowania lub utworzenia nowych relacji w bazie. Uzytkownik okreslajac, jakie operacje na danych maja byc wykonane, posluguje sie pewnym abstrakcyjnym jezykiem, tzw. jezykiem manipulacji danymi. Jezyki te we wspólczesnych systemach zarzadzania bazami danych maja bardzo duze mozliwosci. Pozwalaja nie tylko wybrac jedna z dostepnych w systemie operacji, ale umozliwiaja definiowanie operacji zlozonych, okreslania zlozonych kryteriów wyboru, w których korzysta sie z wbudowanych w system funkcji lub funkcji definiowanych przez uzytkownika (np. w systemie Access mozna definiowac wlasne funkcje w jezyku Visual Basic). Pozwalaja takze na tworzenie, zapamietanie, a nastepnie uruchamianie pewnych powtarzajacych sie sekwencji w postaci makr. Najbardziej popularnym obecnie jezykiem tego typu jest jezyk SQL (Structured Query Language). Pierwszy standard organizacji ISO tego jezyka powstal w 1987 roku, drugi w 1989, a trzeci w 1993 roku. W ksiazce uzywamy implementacji PostgreSQL 7.1 dostepnej w sieci pod adresem: Wersja ta niewiele rózni sie od Standardu. Drobne róznice dotycza jedynie regul syntaktycznych poszczególnych konstrukcji. Podstawowymi pojeciami w jezyku SQL sa: tabela (odpowiednik relacji), kolumna tabeli (atrybut relacji), wiersz tabeli (pojedyncza krotka), wartosc wpisana w komórke na przecieciu wiersza i kolumny. Poslugujac sie jezykiem SQL mozemy wykonac wszystkie podstawowe operacje na danych: wyszukiwanie danych w bazie (oznaczone slowem kluczowym SELECT), wstawianie, modyfikowanie i usuwanie danych z bazy (INSERT INTO, UPDATE, DELETE FROM), dodawanie do bazy danych nowych relacji, indeksów i perspektyw (CREATE TABLE, CREATE INDEX, CREATE VIEW), ochrona danych w bazie (GRANT, REVOKE).
2 Joanna Jedrzejowicz Strona SQL jako jezyk definicji danych 1.1 Typy danych, tworzenie tabel W zakresie typów danych nie ma zgodnosci wsród firm dostarczajacych systemy baz danych. W Standardzie jezyka SQL wystepuja typy napisowe, liczbowe, typy dla oznaczania dat i czasu. W PostgreSQL 7.1 zaimplementowano nastepujace typy danych: typ opis BOOL typ logiczny, CHAR(n) napis stalej dlugosci n, VARCHAR(n) napis zmiennej dlugosci. TIME czas, DATE data, TIMESTAMP czas i data, FLOAT liczba zmiennoprzecinkowa, INTEGER liczba calkowita. Omawianie instrukcji SQL rozpoczynamy od instrukcji sluzacej do utworzenia nowej tabeli CREATE TABLE. Pokazemy jej zastosowanie na przykladzie tworzenia tabeli o nazwie Pracownicy z nastepujacymi kolumnami: identyfikator pracownika, nazwisko pracownika, imie pracownika, kod dzialu, w którym pracuje, informacja czy pracownik jest ubezpieczony. Instrukcja sluzaca do utworzenia takiej tabeli jest nastepujaca: CREATE TABLE Pracownicy ( ID_prac INTEGER, nazwisko VARCHAR(25), imie VARCHAR(10), kod_dz VARCHAR(10), ubezpiecz BOOL). Mozna okreslac domyslne wartosci, na przyklad jezeli zastapimy czesc dotyczaca kolumny ubezpiecz przez ubezpiecz BOOL DEFAULT t, to w ostatniej kolumnie bedzie wpisywana domyslna wartosc badz podana explicite w instrukcji INSERT. W PostgreSQL mozna takze definiowac tabele, które dziedzicza atrybuty po tabelach zdefiniowanych wczesniej. Na przyklad tabela Dyrektorzy zdefiniowana jako: CREATE TABLE Dyrektorzy (wynagrodzenie FLOAT, samochod VARCHAR(10)) INHERITS (Pracownicy); zawiera 7 atrybutów, z czego 5 jest identycznych jak w tabeli Pracownicy oraz dodatkowo zawiera atrybuty wynagrodzenie, samochod. Tworzenie tabeli w PostgreSQL moze byc polaczone z ustalaniem wiezów spójnosci. Wiezy spójnosci sa to warunki zaimplementowane w bazie danych, które okreslaja kiedy dane sa zgodne z rzeczywistoscia. Wiezy ograniczaja mozliwe wartosci jakie moga pojawiac sie w wierszach tabeli. W PostgreSQL tworzeniu tabeli moze towarzyszyc ustalenie nastepujacych wiezów (CONSTRAINT):
3 Joanna Jedrzejowicz Strona wiezy NOT NULL - w kolumnie nie jest dozwolona wartosc NULL, wiezy CHECK - warunek, który ma byc prawdziwy dla wszystkich wierszy tabeli, wiezy UNIQUE wartosc atrybutu nie moze sie powtarzac w tabeli, wiezy PRIMARY KEY okreslaja klucz podstawowy, czyli sa polaczeniem wiezów UNIQUE i NOT NULL, wiezy FOREIGN KEY okreslaja klucz obcy, czyli atrybut zwiazany z kluczem z innej tabeli, tworzy sie przez zastosowanie REFERENCES w jednej tabeli oraz PRIMARY KEY w drugiej. Utworzymy nowa tabele Praca: CREATE TABLE Praca ( ID_trans INTEGER PRIMARY KEY, ID_prac INTEGER REFERENCES Pracownicy, data DATE NOT NULL, czas FLOAT CHECK (czas > 0), stawka FLOAT CHECK (stawka> 0 AND stawka< 50.00) ) oraz zmodyfikujemy instrukcje tworzenia tabeli Pracownicy. CREATE TABLE Pracownicy ( ID_prac INTEGER PRIMARY KEY, nazwisko VARCHAR(25) NOT NULL, imie VARCHAR(10), kod_dz VARCHAR(10), ubezpiecz BOOL). Zauwazmy, ze po ustaleniu powyzszych wiezów kazdej operacji wpisywania lub modyfikacji danych bedzie towarzyszyc sprawdzanie pewnych warunków. Dla tabeli Praca, w której ID_trans jest kluczem glównym, sprawdza sie, czy wartosci atrybutu ID_trans w poszczególnych wierszach sa okreslone i unikatowe. Z kolei kazda wartosc atrybutu ID_prac z tabeli Praca powinna wystepowac w tabeli Pracownicy, wartosc atrybutu data musi byc okreslona, zas wartosci atrybutów czas i stawka musza spelniac warunki okreslone we wiezach, tj. czas musi byc dodatni, stawka jest dodatnia i mniejsza niz 50. Wiersze, które nie spelniaja warunków nie beda wpisywane do tabeli. 1.2 Zmiany w definicji tabeli Instrukcja ALTER TABLE umozliwia wykonanie nastepujacych operacji: - zmiana nazwy tabeli, - zmiana nazwy kolumny w tabeli, - dolaczenie nowej kolumny, - dolaczenie wartosci domyslnej w kolumnie, - usuniecie definicji wartosci domyslnej. Instrukcje: - ALTER TABLE Praca RENAME TO Godz_dod, - ALTER TABLE Pracownicy RENAME COLUMN ID_prac to ID, - ALTER TABLE Pracownicy ADD COLUMN Pesel CHAR(11), - ALTER TABLE Pracownicy ALTER COLUMN ubezpiecz SET DEFAULT t, - ALTER TABLE Pracownicy ALTER COLUMN ubezpiecz DROP DEFAULT,
4 Joanna Jedrzejowicz Strona sluza odpowiednio do zmiany nazwy tabeli Praca, zmiany nazwy kolumny ID_prac w tabeli Pracownicy, dolaczenie nowej kolumny w tabeli Pracownicy, ustalenie wartosci domyslnej w kolumnie ubezpiecz oraz usuniecie definicji wartosci domyslnej. 1.3 Definiowanie indeksów, klastrów i perspektyw Obok instrukcji tworzenia tabeli w SQL dysponujemy instrukcja sluzaca do tworzenia indeksów. Indeksy stanowia podstawowa strukture w bazach danych umozliwiajaca szybkie wyszukiwanie informacji. Zalozenie nowego indeksu wykonuje sie przy pomocy instrukcji: CREATE [UNIQUE] INDEX nazwa_indeksu ON nazwa_tabeli (nazwa_atrybutu,..) Slowo kluczowe UNIQUE gwarantuje stworzenie indeksu jednoznacznego. Kazda próba wpisania duplikatów atrybutów okreslajacych indeks spowoduje blad. Na przyklad w tabeli Pracownicy mozemy zwiazac indeks z dzialem pracownika: CREATE INDEX ind_dz ON Pracownicy (kod_dz); Zauwazmy, ze potrzebne jest przypisanie nazwy kazdemu indeksowi. Z indeksem laczy sie pojecie klastra pamieci. Wykonanie instrukcji: CLUSTER nazwa_indeksu ON nazwa_tabeli powoduje przemieszczenie elementów tabeli zgodnie z uporzadkowaniem przez wskazany indeks, co ulatwia wyszukiwanie duplikatów. Wykonanie CLUSTER ind_dz ON Pracownicy spowoduje, ze wiersze dotyczace pracowników z tych samych dzialów beda pogrupowane i w zwiazku z tym instrukcja typu SELECT * FROM Pracownicy WHERE kod_dz = 10 wykona sie szybciej. Perspektywa jest tabela wirtualna. Mozna jej uzywac tak jakby byla tabela. Wiersze perspektywy nie sa przechowywane w bazie danych, sa jedynie wyliczane na zadanie. Perspektywy sluza do dostosowania bazy danych do potrzeb róznych grup uzytkowników. Stanowia 'perspektywe' z jakiej dana grupa widzi baze danych. Perspektywy umozliwiaja wykonywanie operacji podobnych do operacji wykonywanych na tabelach, to jest operacji wyszukiwania i modyfikowania danych. Ponizsza instrukcja definiuje perspektywe Pracownicy-sprzedaz zlozona z tych wierszy z tabeli Pracownicy, które dotycza osób zatrudnionych w dziale sprzedazy. CREATE VIEW Pracownicy-sprzedaz AS SELECT nazwisko, imie FROM Pracownicy WHERE kod_dz='sprzedaz'; 1.4 Liczniki i wyzwalacze W PostgreSQL oprócz tabel, indeksów i perspektyw mozna takze definiowac liczniki, wyzwalacze i funkcje. Licznik jest obiektem, który automatycznie zwieksza swoja wartosc po jego kazdorazowym odczycie. Liczniki sa uzywane do generowania unikalnych identyfikatorów wierszy. Licznik definiuje sie przy pomocy polecenia: CREATE SEQUENCE nazwa_licznika Trzy funkcje standardowe operuja na licznikach: - nextval(nazwa) zwraca kolejna wartosc licznika i jednoczesnie modyfikuje licznik, - currval(nazwa) zwraca wartosc z poprzedniego odwolania nextval, bez zmiany wartosci licznika, - setval(nazwa, N) ustala wartosc licznika na N.
5 Joanna Jedrzejowicz Strona Jezeli utworzymy licznik CREATE SEQUENCE numer_prac; to mozemy uzyc go przy tworzeniu tabeli: CREATE TABLE Pracownicy ( ID_prac INTEGER DEFAULT nextval( numer_prac ), nazwisko VARCHAR(25) NOT NULL, imie VARCHAR(10), kod_dz VARCHAR(10), ubezpiecz BOOL). Uwaga: jezeli licznik nie zostal zaincjalizowany przy pomocy setval, to domyslnie przyjmuje sie wartosc 1 jako poczatkowa. Wyzwalacze sa procedurami uruchamianymi automatycznie na skutek zdarzen zachodzacych w bazie danych. Sluza do oprogramowania wiezów spójnosci i do oprogramowania stalych czynnosci, które powinny byc wykonywane w kazdej aplikacji korzystajacej z bazy danych. Wyzwalacze obu typów moga byc uruchamiane w wyniku nastepujacych polecen: INSERT (wstawianie), DELETE (usuwanie), UPDATE (modyfikacja). Wyzwalacz definiuje sie za pomoca polecenia: CREATE TRIGGER nazwa_wyzwalacza {BEFORE AFTER} {zdarzenie_1 [OR zdarzenie_2 [OR zdarzenie_3]]} ON nazwa_tabeli FOR EACH ROW EXECUTE PROCEDURE nazwa_procedury (argumenty,...); gdzie zdarzenie_1, zdarzenie_2, zdarzenie_3 jest jednym z polecen INSERT, DELETE, UPDATE, zas nazwa_procedury jest nazwa procedury zdefiniowanej w jezyku C. Na przyklad instrukcja: CREATE TRIGGER usuwanie_prac AFTER DELETE ON Pracownicy FOR EACH ROW EXECUTE PROCEDURE komunikat(); powoduje utworzenie wyzwalacza, który bedzie wywolywac procedure (która musi byc wczesniej zdefiniowana) komunikat po kazdej operacji usuwania danych z tabeli Pracownicy. Uzytkownik PostgreSQL ma mozliwosc definiowania w SQL swoich wlasnych funkcji, których moze nastepnie uzywac w wyrazeniach i zapytaniach. Definicja funkcji jest postaci: CREATE FUNCTION nazwa_funkcji ([typ_arg {,typ_arg}]) RETURNS typ_wyniku AS ciag_zapytan_sql LANGUAGE 'sql'; Zauwazmy, ze kazda funkcja zwraca pewien wynik - jest to wartosc zwracana przez ostatnie zapytanie z ciagu zapytan SQL (ciala funkcji). Odwolanie do argumentu funkcji w ciele funkcji jest postaci $n, gdzie n jest numerem argumentu. Przyklad. Instrukcja CREATE FUNCTION premia(float) RETURNS FLOAT AS 'SELECT 0.25 * $1;' LANGUAGE 'sql' definiuje funkcje jedno-argumentowa premia; cialo tej funkcji sklada sie tylko z jednego zapytania. Mozna jej uzyc w innych zapytaniach, np. SELECT premia(praca.stawka) AS odpowiedz.
6 Joanna Jedrzejowicz Strona Usuwanie tabel, indeksów, perspektyw, liczników, wyzwalaczy, funkcji Instrukcje: DROP TABLE nazwa_tabeli; DROP INDEX nazwa_indeksu; DROP VIEW nazwa_perspektywy; DROP SEQUENCE nazwa_licznika; DROP TRIGGER nazwa_wyzwalacza; DROP FUNCTION nazwa_funkcji; sluza odpowiednio, do usuwania tabeli, indeksu, perspektywy, licznika, wyzwalacza i funkcji. Przyklad. Instrukcja: DROP TABLE Pracownicy; powoduje, ze dalsze odwolania do tabeli Pracownicy (na przyklad wstawianie danych) nie beda mogly byc wykonane. 2 SQL jako jezyk manipulowania danymi 2.1 Wstawianie danych Dane do tabeli sa wstawiane za pomoca instrukcji: INSERT INTO nazwa_tabeli VALUES (wartosc {, wartosc}) Zalózmy, ze do tabeli Pracownicy chcemy wstawic dane dotyczace Jana Kowalskiego, zatrudnionego w dziale SPR, z identyfikatorem 12, ubezpieczonemu. Wystarczy wykonac instrukcje: INSERT INTO Pracownicy VALUES (12,'Kowalski', 'Jan', 'SPR','t'). Warto zwrócic uwage na kolejnosc wartosci odpowiadajaca kolejnosci atrybutów podanych w instrukcji tworzacej tabele. Mozliwa jest takze bardziej zlozona postac operacji wstawiania wykorzystujaca instrukcje SELECT. Instrukcja INSERT INTO Dyrektorzy(ID_prac, nazwisko, imie, kod_dz, ubezpiecz) SELECT ID_prac, nazwisko, imie, kod_dz, ubezpiecz FROM Pracownicy WHERE kod_dz='spr'; wstawia dane dotyczace wszystkich pracowników z dzialu 'SPR' do tabeli Dyrektorzy, pozostawiajac atrybuty wynagrodzenie, samochod jako NULL 2.2 Usuwanie danych Dane mozna usuwac z tabel bazy danych kierujac do systemu nastepujaca instrukcje: DELETE FROM nazwa_tabeli [WHERE warunek]. Jezeli uzyje sie opcjonalnego warunku, to zostana usuniete jedynie wiersze spelniajace warunek. Jezeli warunek nie wystepuje, to usuwa sie wszystkie wiersze z tabeli. Instrukcja DELETE FROM Pracownicy WHERE kod_dz='spr'; usuwa wszystkich pracowników z dzialu SPR.
7 Joanna Jedrzejowicz Strona Modyfikacja danych System zarzadzania baza danych dokonuje modyfikacji wartosci zapisanych w bazie danych, jezeli otrzyma do wykonania instrukcje: UPDATE nazwa_tabeli SET nazwa_atrybutu = wyrazenie {, nazwa_atrybutu = wyrazenie} [WHERE warunek] Instrukcja UPDATE Praca SET stawka = stawka * 1.15 WHERE data = ' '; zwieksza stawke o 15% dla wszystkich pracowników pracujacych 24 grudnia Wyszukiwanie danych 3.1 Wyswietlanie calej tabeli i wybranych kolumn Centralna instrukcja SQL jest instrukcja sluzaca do wyszukiwania informacji z bazy danych. Jest to instrukcja SELECT, okreslajaca z jakich tabel w bazie danych maja byc wyswietlane dane, jakie warunki maja spelniac i w jakiej dokladnie postaci maja sie pojawiac przed uzytkownikiem. Instrukcja SELECT * FROM nazwa_tabeli; sluzy do wyswietlania wszystkich wierszy z tabeli, zas SELECT nazwa_atrybutu {, nazwa_atrybutu} FROM nazwa_tabeli; wyswietla jedynie wartosci z wybranych kolumn. Na przyklad, jezeli do tabeli Pracownicy zostala wpisana tylko jedna krotka, to wynikiem zapytania SELECT ID_prac, nazwisko, imie, kod_dz FROM Pracownicy; bedzie: ID_prac nazwisko imie kod_dz 12 Kowalski Jan SPR Mozliwe jest wyswietlanie wartosci z wykonywaniem obliczen. Instrukcja SELECT data, stawka * 1.15 FROM Praca; wyswietli wartosci atrybutu stawka zwiekszone o 15 %, choc wartosci przechowywane w tabeli Praca nie zostana zmienione. 3.2 Wybieranie wierszy przy pomocy WHERE Klauzula zapisana po slowie kluczowym WHERE sluzy do okreslania warunku jaki musza spelniac wyswietlane dane. W klauzulach mozna uzywac operatorów logicznych koniunkcji (AND), alternatywy (OR), negacji (NOT). Instrukcja SELECT nazwisko, imie FROM Pracownicy WHERE kod_dz = 'SPR' OR kod_dz = 'INFO'; wyswietla nazwiska i imiona pracowników z dzialu SPR i INFO. Umieszczenie slowa kluczowego DISTINCT po slowie kluczowym SELECT oznacza eliminacje powtarzajacych sie wierszy.
8 Joanna Jedrzejowicz Strona Ponadto, wyniki zapytania moga zostac uporzadkowane wedlug wybranych atrybutów, w porzadku rosnacym (domyslnie) lub malejacym (co zapisuje sie DESC). Na przyklad SELECT DISTINCT data, stawka FROM Praca ORDER BY data DESC; wyswietli wszystkie wartosci rózne, odpowiadajace atrybutom data i stawka z tabeli Praca, uporzadkowane wedlug dat w porzadku malejacym. Czesto w instrukcji wyszukiwania sprawdza sie czy napis jest zgodny z pewnym ustalonym wzorcem, np. czy zaczyna sie od ustalonej litery lub zawiera ustalone podslowo. W opisach wzorca symbol % zastepuje dowolny napis. Na przyklad zapytanie: SELECT ID_prac, nazwisko FROM Pracownicy WHERE nazwisko LIKE Kowalsk% ; sluzy do wyszukania wszystkich o nazwisku Kowalski lub Kowalska. Rózne mozliwe wzorce sa nastepujace: wzorzec LIKE A% LIKE %A% LIKE A% LIKE A%B% NOT LIKE A% porównanie zaczyna sie od A zawiera A zawiera A jako drugi znak zaczyna sie od A i zawiera B nie zaczyna sie od A W PostgreSQL 7.1 dopuszczalne jest takze uzywanie wyrazen regularnych we wzorcach. 3.3 Zlaczenia tabel Informacja wypisywana w wyniku wykonania zapytania moze dotyczyc kilku tabel. Aby powiazac informacje zawarte w róznych tabelach definiuje sie predykat zlaczeniowy. Ponadto, w zwiazku z tym, ze istnieje potrzeba odrózniania kolumn z róznych tabel wykorzystuje sie konstrukcje poprzedzania nazwy kolumny nazwa tabeli. Czasami dla oznaczenia tabel uzywa sie aliasów, czyli nazw zastepczych. Przypuscmy, ze oprócz tabeli Pracownicy w bazie danych jest takze zdefiniowana tabela Dzial z nastepujaca zawartoscia: kod_dz nazwa_dzialu siedziba kierownik SPR sprzedaz Gdynia 2234 INFO informatyczny Gdansk 1212 Zapytanie SELECT P.imie, P.nazwisko, D.nazwa_dzialu, D.siedziba FROM Pracownicy P, Dzial D WHERE P.kod_dz = D.kod_dz; sluzy do wypisania imion i nazwisk wszystkich pracowników, wraz z podaniem nazwy dzialu, w którym pracuja oraz siedziby dzialu. Predykat zlaczeniowy w powyzszym przykladzie jest postaci: Pracownicy. kod_dz = Dzial. kod_dz (nazwy P i D sa odpowiednio aliasami dla nazw Pracownicy i Dzial). Wiersz kazdego pracownika zostaje zlaczony z dokladnie jednym, odpowiadajacym przez wartosc atrybutu kod_dz, wierszem z tabeli Dzial.
9 Joanna Jedrzejowicz Strona Zapytanie SELECT Pracownicy.nazwisko, Praca.stawka FROM Pracownicy, Praca WHERE Pracownicy. ID_prac = Praca.ID_prac AND Praca.data = ' '; zwraca nazwiska i stawki tych pracowników, którzy pracowali 24 grudnia 98 r. Dopuszczalne jest laczenie wiecej niz dwóch tabel, a takze laczenie ze soba tej samej tabeli. Zapytanie SELECT Pracownicy.nazwisko FROM Pracownicy, Praca, Dzial WHERE Praca.data = AND Dzial.nazwa_dz= marketing AND Pracownicy.kod_dz = Dzial.kod_dz AND Pracownicy.ID_prac = Praca.ID_prac; zwraca nazwiska pracowników z dzialu marketingu, którzy pracowali 24 grudnia 98 r. Zapytanie SELECT P.ID_prac FROM Pracownicy P, Pracownicy K WHERE K.nazwisko = Kowalski AND K.imie = Jan Dzial.kierownik = K.ID_prac AND P.kod_dz = Dzial.kod_dz; zwraca identyfikatory pracowników, którzy sa podwladnymi Jana Kowalskiego. 3.4 Zlaczenia przy pomocy UNION, INTERSECT, EXCEPT W PostrgeSQL 7.1 dopuszczalne jest laczenie wyników zapytan przy pomocy UNION, INTERSECT, EXCEPT co odpowiada, odpowiednio, sumie, przekrojowi i róznicy w algebrze relacji. Zapytanie - SELECT nazwisko FROM Pracownicy UNION SELECT nazwisko FROM Dyrektorzy; zwraca nazwiska osób wystepujacych w tabeli pracownicy lub Dyrektorzy, - SELECT ID_prac FROM Pracownicy EXCEPT SELECT ID_prac FROM Praca WHERE data = zwraca identyfikatory pracowników, którzy nie pracowali dnia 24 grudnia Zauwazmy, ze zapytaniom wyszukujacym dane odpowiadaja operacje w algebrze relacji. Na przyklad: 1. SELECT nazwisko, imie FROM Pracownicy; π nazwisko, imie (Pracownicy) 2. SELECT P.nazwisko, P.kod_dz, S.stawka FROM Pracownicy P, Praca S; π nazwisko, kod_dz (P) π stawka (S) 3. SELECT * FROM Praca WHERE stawka>=30; σ stawka > = 30 (Praca) 4. SELECT ID_prac FROM Praca WHERE stawka>=20 AND stawka=<30; π ID_prac ( σ stawka >= 20 stawka <= 30 (Praca)) 5. SELECT * FROM R,S; R S 6. SELECT nazwisko FROM Pracownicy UNION SELECT nazwisko FROM Dyrektorzy;
10 Joanna Jedrzejowicz Strona π nazwisko (Pracownicy) π nazwisko (Dyrektorzy) 3.5 Zastosowanie funkcji sumarycznych Dane w tabeli (lub kilku tabelach) moga zostac podsumowane przy uzyciu funkcji sumarycznych: AVG - oblicza wartosc srednia wybranego atrybutu, COUNT - liczba wierszy, MIN - wartosc minimalna, MAX - wartosc maksymalna, SUM - suma wartosci. Wyliczanie wartosci funkcji COUNT odbywa sie nastepujaco. Zapytanie SELECT COUNT(*) FROM Pracownicy; zwraca liczbe wierszy znajdujacych sie aktualnie w tabeli Pracownicy, zas SELECT COUNT(nazwisko) FROM Pracownicy; zwraca liczbe wierszy w tabeli Pracownicy, w których atrybut nazwisko ma wartosc rózna od NULL. Zapytanie SELECT COUNT(*), AVG(stawka) FROM Praca WHERE data = ' '; zwraca liczbe osób pracujacych 1 stycznia 99 r. oraz srednia stawke wyplacana za prace w tym dniu. Przyklad. Dane sa dwie tabele: UCZEN numer nazwisko imie rok urodzenia 01 Kowalski Jan Lipski Andrzej Zalewska Ewa 1989 OCENY numer ocena przedmiot 01 5 matematyka 02 4 fizyka matematyka 01 3 matematyka 01 2 historia Zastosowanie wybranych funkcji przedstawiamy w ponizszej tabeli: funkcja przyklad operacji wynik COUNT SELECT COUNT(* ) FROM uczen 3
11 Joanna Jedrzejowicz Strona COUNT SELECT COUNT(*) FROM uczen WHERE rok urodzenia = AVG SELECT AVG(ocena) FROM oceny 3.7 SUM SELECT SUM(ocena) FROM oceny WHERE przedmiot = fizyka 4 AVG SELECT numer FROM oceny WHERE przedmiot = matematyka AND ocena > (SELECT AVG(ocena) FROM oceny) Definiowanie grup wierszy W jezyku SQL jest mozliwosc podzialu wynikowych wierszy zapytania na grupy i obliczenia wartosci funkcji sumarycznych na wartosciach nalezacych do poszczególnych grup. Grupa jest zbiorem wierszy z jedna lub kilkoma wspólnymi wartosciami. Jezeli uzywamy klauzuli GROUP BY, to zapytanie moze zawierac nastepujace wyrazenia: nazwy atrybutów wystepujace na liscie GROUP BY, funkcje sumaryczne dotyczace innych atrybutów, stale wyrazenia. Na przyklad instrukcja: SELECT kod_dz, COUNT(*) AS liczba_pracownikow FROM Pracownicy GROUP BY kod_dz zwraca tabele postaci: kod_dz liczba_pracownikow INFO 20 SPR 10 W pierwszej kolumnie zapisany jest kod dzialu, a w drugiej liczba pracowników pracujacych w danym dziale. Zauwazmy, ze suma wartosci z drugiej kolumny jest równa liczbie wierszy zapisanych w tabeli Pracownicy. Dolaczajac klauzule: HAVING warunek mozna narzucic warunek, który musi spelniac kazda wyswietlana grupa. Jezeli powyzsza instrukcje zastapimy przez: SELECT kod_dz, COUNT(*) AS liczba_pracownikow FROM Pracownicy GROUP BY kod_dz HAVING COUNT(*) > 10; to otrzymamy tabele analogiczna, ale wypelniona informacjami tylko o tych dzialach, w których liczba pracowników przekracza 10 osób. 3.7 Zapytania zagniezdzone Rozpatrzmy zapytanie: SELECT numer_prac FROM Praca WHERE stawka > (SELECT AVG(stawka) FROM Praca); Jest to zapytanie zagniezdzone zapytanie wewnetrzne, ujete w nawiasy, zwraca srednia stawke z tabeli Praca, zas zapytanie zewnetrzne zwraca identyfikatory pracowników, którzy maja stawke wieksza niz srednia. Jak powinno wygladac zapytanie zwracajace takze nazwiska tych pracowników?
12 Joanna Jedrzejowicz Strona Zagniezdzanie zapytan odbywa sie wedlug nastepujacych schematów: SELECT atrybuty FROM tabele WHERE atrybut operator relacji ( zapytanie ) SELECT atrybuty FROM tabele WHERE atrybut IN ( zapytanie ) SELECT atrybuty FROM tabele WHERE atrybut operator relacji ALL ( zapytanie ) SELECT atrybuty FROM tabele WHERE atrybut operator relacji ANY ( zapytanie ) W przypadku schematu ze slowem kluczowym ALL warunek powinien byc spelniony dla kazdego wiersza zwracanego przez zapytanie, w przypadku ANY dla przynajmniej jednego wiersza. Zapytanie: - SELECT ID_prac FROM Praca WHERE stawka < ALL (SELECT Praca.stawka FROM Praca, Dzial WHERE Dzial.nazwa_dz= marketing AND Praca.kod_dz=Dzial.kod_dz); zwraca identyfikatory pracowników, którzy maja stawke nizsza od pracowników z dzialu marketingu, - SELECT * FROM Pracownicy WHERE kod_dz IN (SELECT kod_dz From Dzial WHERE siedziba = Warszawa ); zwraca informacje o pracownikach pracujacych w dzialach z siedziba w Warszawie. Przypuscmy, ze kolumna data_zatr zostala dodana do tabeli Pracownicy przy uzyciu: ALTER TABLE Pracownicy ADD COLUMN data_zatr DATE. Wtedy ponizsze zapytanie wylicza nazwy dzialów, które maja pracowników zatrudnionych wczesniej niz ich kierownicy. SELECT nazwa_dz FROM Dzial WHERE EXISTS (SELECT P.ID_prac FROM Pracownicy P, Pracownicy K, Dzial WHERE P.data_zatr < K.data_zatr AND Dzial.kierownik = K.ID_prac AND Dzial.kod_dz = P.kod_dz). ZADANIA: 1. Wypisac nazwy dzialów, w których aktualnie jest zatrudniony co najmniej jeden pracownik. 2. Sporzadzic zestawienie zawierajace nazwe dzialu, nazwisko osoby z najwyzszym wynagrodzeniem w tym dziale oraz wartosc wynagrodzenia. 3. Obliczyc procentowy udzial poszczególnych dzialów w liczbie wszystkich pracowników i wynagrodzeniach w firmie. 3.8 Zastosowanie OUTER JOIN Zapytanie SELECT nazwisko FROM Pracownicy. Praca WHERE Praca.ID_prac = Pracownicy.ID_prac; zwraca jedynie nazwiska tych pracowników, którzy wystepuja w tabeli Praca. W niektórych sytuacjach wygodniejsza jest operacja OUTER JOIN, która dokonuje zlaczenia i dodatkowo wypisuje takze te wiersze, które nie sa zlaczone: SELECT Pracownicy.nazwisko FROM Pracownicy OUTER JOIN Praca ON Praca.ID_prac = Pracownicy.ID_prac.
13 Joanna Jedrzejowicz Strona Zastosowanie komendy SELECT do wstawiania danych, usuwania i modyfikacji Polecenie - INSERT INTO Dzial(kod_dz) SELECT DISTINCT kod_dz FROM Pracownicy; sluzy do wstawienia kodów dzialów wystepujacych w tabeli Pracownicy do tabeli Dzial, przy czym pozostale atrybuty maja wartosc NULL, - DELETE FROM Pracownicy WHERE ID_prac NOT IN (SELECT ID_prac FROM Praca); usuwa informacje o tych pracownikach, którzy nie wystepuja w tabeli Praca, - UPDATE Praca SET stawka = stawka * 1.5 WHERE ID_prac = (SELECT ID_prac FROM Pracownicy WHERE nazwisko = Kowalski AND imie= Jan ); podwyzsza o 50% stawke Jana Kowalskiego, - UPDATE Pracownicy SET wynagrodzenie = 20 * Praca.stawka FROM Praca WHERE Pracownicy.ID_prac = Praca.ID_prac AND data = ; ustala wynagrodzenie tych pracowników, którzy pracowali po 10 grudnia 2000; nalezy zwrócic uwage na konstrukcje FROM, która jest nieodzowna jezeli wystepuje zlaczenie, - SELECT ID_prac, nazwisko INTO Dane_prac FROM Pracownicy; powyzsze zapytanie jest polaczeniem CREATE i SELECT powoduje utworzenie nowej tabeli Dane_prac z dwiema kolumnami. 4 SQL jako jezyk nadzoru Instrukcje SQL umozliwiaja administratorowi (a takze uprawnionym uzytkownikom) przyznawanie uprawnien do korzystania z zasobów bazy danych. Syntaktyka instrukcji przyznajacej uprawnienia jest nastepujaca: GRANT uprawnienia {, uprawnienia} ON nazwa_obiektu TO nazwa_uzytk nazwa_grupy_uzytk PUBLIC przy czym uprawnienia sa nastepujace: SELECT - uprawnienie do czytania, czyli wyszukiwania, INSERT - wstawianie, UPDATE - modyfikacja, DELETE - usuwanie, ALL - wszystkie uprawnienia jednoczesnie. Nazwa_obiektu moze byc nazwa tabeli lub perspektywy. Lista uzytkowników moze zawierac nazwy indywidualnych uzytkowników PostgreSQL, nazwy grup uzytkowników i PUBLIC na oznaczenie wszystkich uzytkowników. Przyklad. Instrukcja GRANT SELECT ON Pracownicy TO PUBLIC; umozliwia wszystkim uzytkownikom odczytywanie danych z tabeli Pracownicy. Uprawnienia odwoluje sie za pomoca instrukcji odwrotnej: REVOKE uprawnienia {, uprawnienia} ON nazwa_obiektu FROM nazwa_uzytk nazwa_grupy_uzytk PUBLIC Na przyklad instrukcja
14 Joanna Jedrzejowicz Strona REVOKE INSERT, DELETE, UPDATE ON Pracownicy FROM mars; odbiera uzytkownikowi mars prawo do wstawiania, usuwania i modyfikacji danych w tabeli Pracownicy. 5 Transakcje Z charakteru aplikacji korzystajacych z baz danych wynika, ze czesto operacja, która powinna byc wykonana nie jest pojedyncza instrukcja SQL, ale ciag instrukcji stanowiacy calosc. W takich sytuacjach korzysta sie z transakcji, czyli ciagu operacji które albo wszystkie zostana wykonane (jezeli to jest mozliwe), albo zadna operacja nie zostanie wykonana. W pierwszym przypadku mówimy o zatwierdzeniu transakcji, a w drugim - o wycofaniu z transakcji. Na przyklad operacja przelania pieniedzy z jednego konta na drugie jest pojedyncza operacja z punktu widzenia aplikacji bankowej mimo, ze sklada sie z dwóch operacji modyfikacji SQLowych (powiekszenie salda na jednym koncie i zmniejszenie salda na drugim koncie). Aby zapewnic spójnosc bazy danych powinny zostac wykonane obie operacje modyfikacji lub zadna z nich. Zatem obie te operacje powinny stanowic pojedyncza transakcje. W PostgreSQL instrukcja rozpoczynajaca transakcje jest BEGIN, zas konczaca jest ROLLBACK oznaczajace wycofanie albo COMMIT oznaczajace zatwierdzenie. Kazda transakcja jest wiec postaci: BEGIN WORK ciag_instrukcji_sql ROLLBACK WORK COMMIT WORK Uzytkownik korzystajacy z PostgreSQL otrzymuje informacje o efekcie wykonania kazdej operacji i sam musi zdecydowac która z operacji zakonczyc transakcje. 6 Tabele slownikowe W PostgeSQL specjalne znaczenie maja tzw. tabele slownikowe, które zawieraja informacje o uzytkownikach, bazach danych, tabelach. Nazwy tabel slownikowych w PostgreSQL zaczynaja sie od przedrostka pg_. Tabela pg_user zawiera informacje o uzytkownikach, wsród jej atrybutów wystepuja: usename - nazwa uzytkownika, usesysid - jednoznaczny numer uzytkownika (przypisany w momencie dolaczenia do grupy), usecreatedb - atrybut typu logicznego, okresla czy uzytkownik ma prawo tworzyc bazy, usesuper - atrybut typu logicznego, okresla czy uzytkownik ma prawa administratora. Tabela pg_database zawiera informacje o bazach i zawiera atrybuty: datname - nazwa bazy, datdba - numer uzytkownika, wlasciciela bazy. Tabela pg_type sluzy do przechowywania informacji o typach danych (takze definiowanych przez uzytkowników). Zawiera atrybuty: typname - nazwa typu danych, typowner - numer uzytkownika, który zdefiniowal typ danych (numer administratora dla typów standardowych), typlen - dlugosc typu. Tabela pg_proc przechowuje informacje o procedurach takze funkcjach definiowanych przez uzytkownika. Zawiera miedzy innymi atrybuty:
15 Joanna Jedrzejowicz Strona proname - nazwa, proowner - nazwa uzytkownika, wlasciciela procedury. Tabel slownikowych mozna uzywac podobnie jak innych tabel, czyli kierowac do nich zapytania. Na przyklad zapytanie: SELECT usename FROM pg_user WHERE usesuper = 't'; wybiera wszystkich uzytkowników, którzy maja prawa administratora. Zapytanie SELECT usename, datname FROM pg_user, pg_database WHERE usesysid = datdba ORDER BY usename; wyswietla informacje o wszystkich uzytkownikach i zalozonych przez nich bazach.
16 Joanna Jedrzejowicz Strona Uzywane tabele: CREATE TABLE Pracownicy ( ID_prac INTEGER, nazwisko VARCHAR(25), imie VARCHAR(10), kod_dz VARCHAR(10), ubezpiecz BOOL). CREATE TABLE Dyrektorzy (wynagrodzenie FLOAT, samochod VARCHAR(10)) INHERITS (Pracownicy); CREATE TABLE Praca ( ID_trans INTEGER PRIMARY KEY, ID_prac INTEGER REFERENCES Pracownicy, data DATE NOT NULL, czas FLOAT CHECK (czas > 0), stawka FLOAT CHECK (stawka> 0 AND stawka< 50.00) ) CREATE TABLE Dzial ( kod_dz VARCHAR(10), nazwa_dz VARCHAR(20), siedziba VARCHAR(10), kierownik INTEGER)
Podstawy języka SQL. SQL Structured Query Languagestrukturalny
Podstawy języka SQL SQL Structured Query Languagestrukturalny język zapytań DDL Język definicji danych (np. tworzenie tabel) DML Język manipulacji danych (np. tworzenie zapytań) DCL Język kontroli danych
Przestrzenne bazy danych Podstawy języka SQL
Przestrzenne bazy danych Podstawy języka SQL Stanisława Porzycka-Strzelczyk porzycka@agh.edu.pl home.agh.edu.pl/~porzycka Konsultacje: wtorek godzina 16-17, p. 350 A (budynek A0) 1 SQL Język SQL (ang.structured
Język SQL, zajęcia nr 1
Język SQL, zajęcia nr 1 SQL - Structured Query Language Strukturalny język zapytań Login: student Hasło: stmeil14 Baza danych: st https://194.29.155.15/phpmyadmin/index.php Andrzej Grzebielec Najpopularniejsze
Relacyjne bazy danych. Podstawy SQL
Relacyjne bazy danych Podstawy SQL Język SQL SQL (Structured Query Language) język umożliwiający dostęp i przetwarzanie danych w bazie danych na poziomie obiektów modelu relacyjnego tj. tabel i perspektyw.
SQL (ang. Structured Query Language)
SQL (ang. Structured Query Language) SELECT pobranie danych z bazy, INSERT umieszczenie danych w bazie, UPDATE zmiana danych, DELETE usunięcie danych z bazy. Rozkaz INSERT Rozkaz insert dodaje nowe wiersze
Pawel@Kasprowski.pl Bazy danych. Bazy danych. Podstawy języka SQL. Dr inż. Paweł Kasprowski. pawel@kasprowski.pl
Bazy danych Podstawy języka SQL Dr inż. Paweł Kasprowski pawel@kasprowski.pl Plan wykładu Relacyjne bazy danych Język SQL Zapytania SQL (polecenie select) Bezpieczeństwo danych Integralność danych Współbieżność
3 Przygotowali: mgr inż. Barbara Łukawska, mgr inż. Maciej Lasota
Laboratorium nr 3 1 Bazy Danych Instrukcja laboratoryjna Temat: Wprowadzenie do języka SQL, tworzenie, modyfikacja, wypełnianie tabel 3 Przygotowali: mgr inż. Barbara Łukawska, mgr inż. Maciej Lasota 1)
Paweł Rajba pawel@ii.uni.wroc.pl http://www.itcourses.eu/
Paweł Rajba pawel@ii.uni.wroc.pl http://www.itcourses.eu/ Wprowadzenie Historia i standardy Podstawy relacyjności Typy danych DDL tabele, widoki, sekwencje zmiana struktury DML DQL Podstawy, złączenia,
Wykład 5 funkcje i procedury pamiętane widoki (perspektywy) wyzwalacze
Wykład 5 funkcje i procedury pamiętane widoki (perspektywy) wyzwalacze 1 Funkcje i procedury pamiętane Następujące polecenie tworzy zestawienie zawierające informację o tym ilu jest na naszej hipotetycznej
P o d s t a w y j ę z y k a S Q L
P o d s t a w y j ę z y k a S Q L Adam Cakudis IFP UAM Użytkownicy System informatyczny Aplikacja Aplikacja Aplikacja System bazy danych System zarządzania baz ą danych Schemat Baza danych K o n c e p
BAZY DANYCH wprowadzenie do języka SQL. Opracował: dr inż. Piotr Suchomski
BAZY DANYCH wprowadzenie do języka SQL Opracował: dr inż. Piotr Suchomski Wprowadzenie Język SQL używany jest do pracy z relacyjną bazą danych. Jest to język nieproceduralny, należący do grupy języków
Bazy danych 10. SQL Widoki
Bazy danych 10. SQL Widoki P. F. Góra http://th-www.if.uj.edu.pl/zfs/gora/ semestr letni 2005/06 Widoki, AKA Perspektywy W SQL tabela, która utworzono za pomoca zapytania CREATE TABLE, nazywa się tabela
Wstęp wprowadzający do laboratorium 2. mgr inż. Rafał Grycuk
Wstęp wprowadzający do laboratorium 2 mgr inż. Rafał Grycuk Plan prezentacji 1. Czym jest T-SQL i czym się różni od standardu SQL 2. Typy zapytań 3. Zapytanie typu SELECT 4. Słowo o indeksach T-SQL (1)
UPDATE Studenci SET Rok = Rok + 1 WHERE Rodzaj_studiow =' INŻ_ST'; UPDATE Studenci SET Rok = Rok 1 WHERE Nr_albumu IN ( '111345','100678');
polecenie UPDATE służy do aktualizacji zawartości wierszy tabel lub perspektyw składnia: UPDATE { } SET { { = DEFAULT NULL}, {
Plan bazy: Kod zakładający bazę danych: DROP TABLE noclegi CASCADE; CREATE TABLE noclegi( id_noclegu SERIAL NOT NULL,
Mój projekt przedstawia bazę danych noclegów składającą się z 10 tabel. W projekcie wykorzystuje program LibreOffice Base do połączenia psql z graficznym interfejsem ( kilka formularzy przedstawiających
Wyzwalacz - procedura wyzwalana, składowana fizycznie w bazie, uruchamiana automatycznie po nastąpieniu określonego w definicji zdarzenia
Wyzwalacz - procedura wyzwalana, składowana fizycznie w bazie, uruchamiana automatycznie po nastąpieniu określonego w definicji zdarzenia Składowe wyzwalacza ( ECA ): określenie zdarzenia ( Event ) określenie
BAZA DANYCH SIECI HOTELI
Paulina Gogół s241906 BAZA DANYCH SIECI HOTELI Baza jest częścią systemu zarządzającego pewną siecią hoteli. Składa się z tabeli powiązanych ze sobą różnymi relacjami. Służy ona lepszemu zorganizowaniu
Hurtownia Świętego Mikołaja projekt bazy danych
Aleksandra Kobusińska nr indeksu: 218366 Hurtownia Świętego Mikołaja projekt bazy danych Zaprezentowana poniżej baza jest częścią większego projektu bazy danych wykorzystywanej w krajowych oddziałach wiosek
strukturalny język zapytań używany do tworzenia i modyfikowania baz danych oraz do umieszczania i pobierania danych z baz danych
SQL SQL (ang. Structured Query Language): strukturalny język zapytań używany do tworzenia strukturalny język zapytań używany do tworzenia i modyfikowania baz danych oraz do umieszczania i pobierania danych
D D L S Q L. Co to jest DDL SQL i jakie s jego ą podstawowe polecenia?
D D L S Q L Co to jest DDL SQL i jakie s jego ą podstawowe polecenia? D D L S Q L - p o d s t a w y DDL SQL (Data Definition Language) Jest to zbiór instrukcji i definicji danych, którym posługujemy się
Bazy danych. Dr inż. Paweł Kasprowski
Plan wykładu Bazy danych Podstawy relacyjnego modelu danych Dr inż. Paweł Kasprowski pawel@kasprowski.pl Relacyjne bazy danych Język SQL Zapytania SQL (polecenie select) Bezpieczeństwo danych Integralność
Bazy danych Język SQL część 1 Wykład dla studentów matem
Bazy danych Język SQL część 1 Wykład dla studentów matematyki 15 marca 2015 SQL Język wysokiego poziomu do komunikacji z bazami danych (ściślej: z systemami zarzadzania bazami danych) Podajemy co ma być
Systemy GIS Tworzenie zapytań w bazach danych
Systemy GIS Tworzenie zapytań w bazach danych Wykład nr 6 Analizy danych w systemach GIS Jak pytać bazę danych, żeby otrzymać sensowną odpowiedź......czyli podstawy języka SQL INSERT, SELECT, DROP, UPDATE
I. Język manipulowania danymi - DML (Data Manipulation Language). Polecenia INSERT, UPDATE, DELETE
Wykład 9 Implementacja języka SQL w systemach baz danych Oracle manipulowanie danymi (DML), tworzenie, modyfikowanie i usuwanie obiektów bazy danych: tabel i perspektyw, więzów integralności, komentarzy
Bazy danych. Wykład IV SQL - wprowadzenie. Copyrights by Arkadiusz Rzucidło 1
Bazy danych Wykład IV SQL - wprowadzenie Copyrights by Arkadiusz Rzucidło 1 Czym jest SQL Język zapytań deklaratywny dostęp do danych Składnia łatwa i naturalna Standardowe narzędzie dostępu do wielu różnych
Ref. 7 - Język SQL - polecenia DDL i DML
Ref. 7 - Język SQL - polecenia DDL i DML Wprowadzenie do języka SQL. Polecenia generujące strukturę bazy danych: CREATE, ALTER i DROP. Polecenia: wprowadzające dane do bazy - INSERT, modyfikujące zawartość
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
Grupa A (LATARNIE) Imię i nazwisko: Numer albumu: 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: Nazwisko prowadzącego: 11: 12: Suma: Ocena: Zad. 1 (10 pkt) Dana jest relacja T. Podaj wynik poniższego zapytania (podaj
SQL w praktyce. Miłej i owocnej nauki!!!
SQL w praktyce Niniejsza praca objęta jest prawami autorskimi. Nielegalne jest kopiowanie żadnej częsci tej pracy w żadnej postaci. Niezgodne z prawem tym bardziej jest udostępnianie innym tej pracy odpłatnie
opisuje nazwy kolumn, wyrażenia arytmetyczne, funkcje nazwy tabel lub widoków warunek (wybieranie wierszy)
Zapytania SQL. Polecenie SELECT jest używane do pobierania danych z bazy danych (z tabel lub widoków). Struktura polecenia SELECT SELECT FROM WHERE opisuje nazwy kolumn, wyrażenia arytmetyczne, funkcje
DECLARE VARIABLE zmienna1 typ danych; BEGIN
Procedury zapamiętane w Interbase - samodzielne programy napisane w specjalnym języku (właściwym dla serwera baz danych Interbase), który umożliwia tworzenie zapytań, pętli, instrukcji warunkowych itp.;
Aspekty aktywne baz danych
Aspekty aktywne baz danych Aktywne aspekty baz danych Baza danych powinna zapewniać pewne własności i niezmienniki; Własności te powinny mogą być zapisane do bazy danych, a baza danych powinna zapewniać
Programowanie w SQL procedury i funkcje. UWAGA: Proszę nie zapominać o prefiksowaniu nazw obiektów ciągiem [OLIMP\{nr indeksu}] Funkcje użytkownika
Programowanie w SQL procedury i funkcje UWAGA: Proszę nie zapominać o prefiksowaniu nazw obiektów ciągiem [OLIMP\{nr indeksu}] Funkcje użytkownika 1. Funkcje o wartościach skalarnych ang. scalar valued
Laboratorium nr 4. Temat: SQL część II. Polecenia DML
Laboratorium nr 4 Temat: SQL część II Polecenia DML DML DML (Data Manipulation Language) słuŝy do wykonywania operacji na danych do ich umieszczania w bazie, kasowania, przeglądania, zmiany. NajwaŜniejsze
Wykład IV Modelowanie danych, projektowanie systemu informatycznego Modelowanie konceptualne implementacyjne Modelowanie pojęciowe na encjach
Modelowanie danych, projektowanie systemu informatycznego Modelowanie odwzorowanie rzeczywistych obiektów świata rzeczywistego w systemie informatycznym. Modele - konceptualne reprezentacja obiektów w
Wykład 2. SQL 1 Structured Query Lenguage
Wykład 2 SQL 1 Structured Query Lenguage SQL (Structured Query Language) Język zapytań do bazy danych. IBM lata osiemdziesiąte. Stosowany w systemach zarządzania bazami danych (DBMS); Oracle, Paradox,Access,
77. Modelowanie bazy danych rodzaje połączeń relacyjnych, pojęcie klucza obcego.
77. Modelowanie bazy danych rodzaje połączeń relacyjnych, pojęcie klucza obcego. Przy modelowaniu bazy danych możemy wyróżnić następujące typy połączeń relacyjnych: jeden do wielu, jeden do jednego, wiele
Podstawowe zapytania SELECT (na jednej tabeli)
Podstawowe zapytania SELECT (na jednej tabeli) Struktura polecenia SELECT SELECT opisuje nazwy kolumn, wyrażenia arytmetyczne, funkcje FROM nazwy tabel lub widoków WHERE warunek (wybieranie wierszy) GROUP
Projektowanie systemów baz danych
Projektowanie systemów baz danych Seweryn Dobrzelewski 4. Projektowanie DBMS 1 SQL SQL (ang. Structured Query Language) Język SQL jest strukturalnym językiem zapewniającym możliwość wydawania poleceń do
Wstęp 5 Rozdział 1. Podstawy relacyjnych baz danych 9
Wstęp 5 Rozdział 1. Podstawy relacyjnych baz danych 9 Tabele 9 Klucze 10 Relacje 11 Podstawowe zasady projektowania tabel 16 Rozdział 2. Praca z tabelami 25 Typy danych 25 Tworzenie tabel 29 Atrybuty kolumn
kończy wysyłanie danych do pliku tworzy strukturę tabeli wyświetla opis struktury tabeli zmiana nazwy tabeli usuwanie tabeli
SPOOL moj_plik SPOOL OFF @ moj_ plik edit CREATE TABLE DESCRIBE ALTER TABLE RENAME DROP TABLE CONNECT CONNECT USER_NAME DISCONNECT EXIT zapisuje wszystkie wydane polecenia oraz ich wyniki do pliku moj_plik,
Konstruowanie Baz Danych SQL UNION, INTERSECT, EXCEPT
Studia podyplomowe Inżynieria oprogramowania współfinansowane przez Unię Europejska w ramach Europejskiego Funduszu Społecznego Projekt Studia podyplomowe z zakresu wytwarzania oprogramowania oraz zarządzania
Bazy danych wykład szósty Więzy i wyzwalacze. Konrad Zdanowski ( Uniwersytet Kardynała Stefana Bazy danych Wyszyńskiego, wykładwarszawa)
Bazy danych wykład szósty Więzy i wyzwalacze Konrad Zdanowski Uniwersytet Kardynała Stefana Wyszyńskiego, Warszawa szósty Więzy i wyzwalacze 1 / 35 Wstęp Wiemy jak nakładać pewne ograniczenia (więzy) w
15. Funkcje i procedury składowane PL/SQL
15. Funkcje i procedury składowane PLSQL 15.1. SQL i PLSQL (Structured Query Language - SQL) Język zapytań strukturalnych SQL jest zbiorem poleceń, za pomocą których programy i uŝytkownicy uzyskują dostęp
- język zapytań służący do zapisywania wyrażeń relacji, modyfikacji relacji, tworzenia relacji
6. Język SQL Język SQL (Structured Query Language): - język zapytań służący do zapisywania wyrażeń relacji, modyfikacji relacji, tworzenia relacji - stworzony w IBM w latach 70-tych DML (Data Manipulation
Język SQL podstawy zapytań
Język SQL podstawy zapytań 1 Plan prezentacji 1. Krótka historia języka SQL 2. Cechy języka SQL 3. Przykładowa baza danych 4. Podstawy zapytań - operacje na modelu relacyjnym 5. Polecenie SELECT zapytania
Język SQL. instrukcja laboratoryjna. Politechnika Śląska Instytut Informatyki. laboratorium Bazy Danych
Politechnika Śląska Instytut Informatyki instrukcja laboratoryjna laboratorium Bazy Danych przygotowali: mgr inż. Paweł Kasprowski (Kasprowski@zti.iinf.polsl.gliwice.pl) mgr inż. Bożena Małysiak (bozena@ivp.iinf.polsl.gliwice.pl)
Uprawnienia, role, synonimy
Uprawnienia, role, synonimy Schemat, użytkownicy, autoryzacja użytkowników, uprawnienia systemowe i obiektowe, nadawanie i odbieranie uprawnień, tworzenie ról, przywileje, synonimy Schematy i użytkownicy
SQL 4 Structured Query Lenguage
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]...
Język DML. Instrukcje DML w różnych implementacjach SQL są bardzo podobne. Podstawowymi instrukcjami DML są: SELECT INSERT UPDATE DELETE
Język DML Instrukcje DML w różnych implementacjach SQL są bardzo podobne. Podstawowymi instrukcjami DML są: SELECT INSERT UPDATE DELETE Systemy Baz Danych, Hanna Kleban 1 INSERT Instrukcja INSERT dodawanie
Projekt jest finansowany ze środków Unii Europejskiej, Europejskiego Funduszu Społecznego i budŝetu państwa. Studia Podyplomowe dla Nauczycieli
Projekt jest finansowany ze środków Unii Europejskiej, Europejskiego Funduszu Społecznego i budŝetu państwa Studia Podyplomowe dla Nauczycieli Bazy danych SQL Języki baz danych Interfejs DBMS składa się
Bazy Danych - Instrukcja do Ćwiczenia laboratoryjnego nr 8
Bazy Danych - Instrukcja do Ćwiczenia laboratoryjnego nr 8 Bazowy skrypt PHP do ćwiczeń z bazą MySQL: Utwórz skrypt o nazwie cw7.php zawierający następującą treść (uzupełniając go o właściwą nazwę uŝytkownika
Języki programowania wysokiego poziomu. PHP cz.4. Bazy danych
Języki programowania wysokiego poziomu PHP cz.4. Bazy danych PHP i bazy danych PHP może zostać rozszerzony o mechanizmy dostępu do różnych baz danych: MySQL moduł mysql albo jego nowsza wersja mysqli (moduł
Monika Sychla 241858 Daniel Smolarek 241875. Projekt bazy danych
Monika Sychla 241858 Daniel Smolarek 241875 Projekt bazy danych Naszym zadaniem było zaprojektowanie przykładowej bazy danych, w oparciu o zagadnienia jakie zostały wprowadzone w trakcie kursu z baz danych.
Ogólny plan przedmiotu. Strony WWW. Literatura BAZY DANYCH. Materiały do wykładu: http://aragorn.pb.bialystok.pl/~gkret
Ogólny plan przedmiotu BAZY DANYCH Wykład 1: Wprowadzenie do baz danych Małgorzata Krętowska Politechnika Białostocka Wydział Informatyki Wykład : Wprowadzenie do baz danych Normalizacja Diagramy związków
Zaawansowane bazy danych i hurtownie danych semestr I
Podprogramy Wydział Informatyki Politechnika Białostocka Zaawansowane bazy danych i hurtownie danych semestr I Procedury do przeprowadzenia akcji Funkcje do obliczania wartości Pakiety do zbierania logicznie
Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.
Prezentacja Danych i Multimedia II r Socjologia Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL. Celem ćwiczeń jest poznanie zasad tworzenia baz danych i zastosowania komend SQL. Ćwiczenie I. Logowanie
Administracja i programowanie pod Microsoft SQL Server 2000
Administracja i programowanie pod Paweł Rajba pawel@ii.uni.wroc.pl http://www.kursy24.eu/ Zawartość modułu 6 Wyzwalacze Wprowadzenie Tworzenie wyzwalacza Wyzwalacze typu,,po'' Wyzwalacze typu,,zamiast''
Pawel@Kasprowski.pl Bazy danych. Bazy danych. Zapytania SELECT. Dr inż. Paweł Kasprowski. pawel@kasprowski.pl
Bazy danych Zapytania SELECT Dr inż. Paweł Kasprowski pawel@kasprowski.pl Przykład HAVING Podaj liczebność zespołów dla których najstarszy pracownik urodził się po 1940 select idz, count(*) from prac p
Bazy danych Język SQL część 2 Wykład dla studentów matem
Bazy danych Język SQL część 2 Wykład dla studentów matematyki 21 marca 2015 Zapytania na kilku tabelach Czasem poszukiwana informacja znajduje się w kilku tabelach. Aby zapytanie dotyczyło kilku tabel,
Wprowadzenie do projektowania i wykorzystania baz danych Relacje
Wprowadzenie do projektowania i wykorzystania baz danych Relacje Katarzyna Klessa Dygresja nt. operatorów SELECT 2^2 SELECT 2^30 SELECT 50^50 2 Dygresja nt. operatorów SELECT 2^30 --Bitwise exclusive OR
Bazy danych 2. Wykład 5 Structured Query Language (SQL) c.d. DDL
Bazy danych 2 Wykład 5 Structured Query Language (SQL) c.d. DDL Dziedzina (DOMAIN) Dziedzina to zdefiniowany przez uŝytkownika zbiór dopuszczalnych wartości definiowany niezaleŝnie od definicji tabel Składnia
KOLEKCJE - to typy masowe,zawierające pewną liczbę jednorodnych elementów
KOLEKCJE - to typy masowe,zawierające pewną liczbę jednorodnych elementów SQL3 wprowadza następujące kolekcje: zbiory ( SETS ) - zestaw elementów bez powtórzeń, kolejność nieistotna listy ( LISTS ) - zestaw
Kurs. Podstawy MySQL
Kurs Podstawy MySQL Krótkie info. Autorem kursu jest Piotr Jędrusik. Kurs jest własnością serwisu MySQL FAQ www.mysqlfaq.prv.pl, email: mysqlfaq@twister.pl. 1. Tworzymy bazę. Stworzymy pierwszą bazę o
1 Zaznacz poprawne stwierdzenia dotyczące grup plików (filegroup) możemy określić do której grupy plików trafi
1 Zaznacz poprawne stwierdzenia dotyczące grup plików (filegroup) Tworząc tabelę nie możemy określić, do którego pliku trafi, lecz możemy określić do której grupy plików trafi Zawsze istnieje grupa zawierająca
Oracle11g: Wprowadzenie do SQL
Oracle11g: Wprowadzenie do SQL OPIS: Kurs ten oferuje uczestnikom wprowadzenie do technologii bazy Oracle11g, koncepcji bazy relacyjnej i efektywnego języka programowania o nazwie SQL. Kurs dostarczy twórcom
Bazy danych wykład trzeci. Konrad Zdanowski
SQL - przypomnienie Podstawowa forma kwerendy SQL: select A1,..., Ak from R1,..., Rn where ; Odpowiada jej w algebrze relacji operacja π A1,...,Ak (σ (R1 Rn)) SQL semantyka select R.
Instrukcja podwaja zarobki osób, których imiona zaczynają się P i dalsze litery alfabetu zakładamy, że takich osbób jest kilkanaście.
Rodzaje triggerów Triggery DML na tabelach INSERT, UPDATE, DELETE Triggery na widokach INSTEAD OF Triggery DDL CREATE, ALTER, DROP Triggery na bazie danych SERVERERROR, LOGON, LOGOFF, STARTUP, SHUTDOWN
SQL :: Data Definition Language
SQL :: Data Definition Language 1. Zaproponuj wydajną strukturę danych tabela) do przechowywania macierzy o dowolnych wymiarach w bazie danych. Propozycja struktury powinna zostać zapisana z wykorzystaniem
Cele. Definiowanie wyzwalaczy
WYZWALACZE Definiowanie wyzwalaczy Cele Wyjaśnić cel istnienia wyzwalaczy Przedyskutować zalety wyzwalaczy Wymienić i opisać cztery typy wyzwalaczy wspieranych przez Adaptive Server Anywhere Opisać dwa
Bazy danych SQL Server 2005
Bazy danych SQL Server 2005 TSQL Michał Kuciapski Typ zadania: Podstawowe zapytania Select Zadanie 1: Wyświetl następujące informacje z bazy: A. 1. Wyświetl informacje o klientach: nazwa firmy, imie, nazwisko,
Laboratorium Bazy danych SQL 3 1
Laboratorium Bazy danych SQL 3 1 F U N K C J E operujące na grupach wierszy: avg([distinct all]kol) oblicza średnią arytmetyczną wartości kolumny kol wszystkich wierszy grupy. count([distinct all]wyr)
Bazy danych i usługi sieciowe
Bazy danych i usługi sieciowe Wstęp do problematyki baz danych Paweł Daniluk Wydział Fizyki Jesień 2014 P. Daniluk (Wydział Fizyki) BDiUS w. I Jesień 2014 1 / 17 Plan wykładu 1 Bazy danych 1 Motywacja
SQL język zapytań (query language) cz.1
SQL język zapytań (query language) cz.1 Zapytanie SELECT - podstawy (3) SELECT A 1,A 2,...,A k (1) FROM R 1,R 2,,R n -- lista wyboru (atrybutów) -- relacje (lista FROM) (2) WHERE F -- warunek wyboru (selekcji)
Wykład 7 Implementacja języka SQL w systemach baz danych Oracle sortowanie, funkcje agregujące i podzapytania.
Wykład 7 Implementacja języka SQL w systemach baz danych Oracle sortowanie, funkcje agregujące i podzapytania. Przykładowa RBD o schematach relacji (tzw. płaska postać RBD): N(PRACOWNICY) = {ID_P, IMIĘ,
Bazy danych 5. Samozłaczenie SQL podstawy
Bazy danych 5. Samozłaczenie SQL podstawy P. F. Góra http://th-www.if.uj.edu.pl/zfs/gora/ semestr letni 2007/08 Przykład kolejowy Tworzymy bazę danych zawierajac a (uproszczony) rozkład jazdy pociagów
Oracle PL/SQL. Paweł Rajba. pawel@ii.uni.wroc.pl http://www.kursy24.eu/
Paweł Rajba pawel@ii.uni.wroc.pl http://www.kursy24.eu/ Zawartość modułu 6 Wprowadzenie Definiowanie wyzwalaczy DML Metadane wyzwalaczy Inne zagadnienia, tabele mutujące Wyzwalacze INSTEAD OF Wyzwalacze
Bazy danych 2. Wykład 4 Structured Query Language (SQL)
Bazy danych 2 Wykład 4 Structured Query Language (SQL) Cechy SQL W standardzie SQL wyróŝnia się dwie części: DDL (Data Definition Language) - język definiowania danych DML (Data Manipulation Language)
BAZY DANYCH Cz III. Transakcje, Triggery
BAZY DANYCH Cz III Transakcje, Triggery Transakcje Definicja: Zbiór operacji (modyfikacja danych, usuwanie, wstawianie, tworzenie obiektów bazodanowych), które albo wszystkie kończone są sukcesem, albo
2010-11-22 PLAN WYKŁADU BAZY DANYCH PODSTAWOWE KWESTIE BEZPIECZEŃSTWA OGRANICZENIA DOSTĘPU DO DANYCH
PLAN WYKŁADU Bezpieczeństwo w języku SQL Użytkownicy Uprawnienia Role BAZY DANYCH Wykład 8 dr inż. Agnieszka Bołtuć OGRANICZENIA DOSTĘPU DO DANYCH Ograniczenie danych z tabeli dla określonego użytkownika
Podstawowe informacje o bazach danych. Technologie Informacyjne
Podstawowe informacje o bazach danych Technologie Informacyjne dr inż. Michna Michał, Politechnika Gdańska 2010/2011 Przykłady systemów baz danych Książka telefoniczna, książka kucharska Zarządzanie magazynem/hurtownią
Microsoft SQL Server Podstawy T-SQL
Itzik Ben-Gan Microsoft SQL Server Podstawy T-SQL 2012 przełożył Leszek Biolik APN Promise, Warszawa 2012 Spis treści Przedmowa.... xiii Wprowadzenie... xv Podziękowania... xix 1 Podstawy zapytań i programowania
Ćwiczenie rozpocznie się od wprowadzenia do laboratorium, po którym omówimy składnię ę polecenia INSERT pozwalającego ą na wstawianie krotek do
Na dotychczasowych zajęciach zapoznaliście się Państwo z poleceniem SELECT pozwalającym ą na wykonywanie zapytań ń do bazy danych i odczytywanie danych zawartych w relacjach. Celem tego ćwiczenia jest
Bazy danych. Plan wykładu. Diagramy ER. Podstawy modeli relacyjnych. Podstawy modeli relacyjnych. Podstawy modeli relacyjnych
Plan wykładu Bazy danych Wykład 9: Przechodzenie od diagramów E/R do modelu relacyjnego. Definiowanie perspektyw. Diagramy E/R - powtórzenie Relacyjne bazy danych Od diagramów E/R do relacji SQL - perspektywy
Obiektowe bazy danych Ćwiczenia laboratoryjne (?)
Obiektowe bazy danych Ćwiczenia laboratoryjne (?) Tworzenie typów obiektowych 1. Zdefiniuj typ obiektowy reprezentujący SAMOCHODY. Każdy samochód powinien mieć markę, model, liczbę kilometrów oraz datę
Technologie baz danych
Plan wykładu Technologie baz danych Wykład 2: Relacyjny model danych - zależności funkcyjne. SQL - podstawy Definicja zależności funkcyjnych Reguły dotyczące zależności funkcyjnych Domknięcie zbioru atrybutów
Zadania z SQLa (MS SQL Server)
Zadania z SQLa (MS SQL Server) Struktura testowej bazy danych (diagram ERD): opracował dr Robert Fidytek SPIS TYPÓW ZADAŃ 1 Projekcja wyników zapytań (SELECT FROM )... 3 2 Sortowanie wyników zapytań (ORDER
Szkolenie Oracle SQL podstawy. Terminy. 15 17 lutego 2010 First Minute! 1100zł!
Szkolenie Oracle SQL podstawy Terminy 15 17 lutego 2010 First Minute! 1100zł! Opis szkolenia Baza danych Oracle od dawna cieszy się zasłużona sławą wśród informatyków. Jej wydajność, szybkość działania
Fizyczna struktura bazy danych w SQL Serwerze
Sposób przechowywania danych na dysku twardym komputera ma zasadnicze znaczenie dla wydajności całej bazy i jest powodem tworzenia między innymi indeksów. Fizyczna struktura bazy danych w SQL Serwerze
Dr Michał Tanaś(http://www.amu.edu.pl/~mtanas)
Dr Michał Tanaś(http://www.amu.edu.pl/~mtanas) Bazy danych podstawowe pojęcia Baza danych jest to zbiór danych zorganizowany zgodnie ze ściśle określonym modelem danych. Model danych to zbiór ścisłych
Podstawy SQL. Dr inż. Andrzej Szuwarzyński Dr inż. Marcin Forkiewicz
Podstawy SQL Dr inż. Andrzej Szuwarzyński Dr inż. Marcin Forkiewicz Wprowadzenie do SQL SQL - Structured Query Language -strukturalny język zapytań Światowy standard przeznaczony do definiowania, operowania
Zaawansowane bazy danych i hurtownie danych studia zaoczne II stopnia, sem. I
Wydział Informatyki Politechnika Białostocka Plan wykładu Zaawansowane bazy danych i hurtownie danych studia zaoczne II stopnia, sem. I 1. MySQL 2. Powtórzenie SQL WYKŁAD 2: MySQL: podstawowe obiekty Powtórzenie
Bazy danych i usługi sieciowe
Bazy danych i usługi sieciowe SQL dokończenie Paweł Daniluk Wydział Fizyki Jesień 2016 P. Daniluk (Wydział Fizyki) BDiUS w. V Jesień 2016 1 / 39 Data Manipulation Language Zapytania klauzula SELECT Wstawianie
Kowalski Marcin 156439 Wrocław, dn. 3.06.2009 Jaśkiewicz Kamil 148592. Bazy Danych 1 Podstawy Projekt Temat: Baza danych do zarządzania projektami
Kowalski Marcin 156439 Wrocław, dn. 3.06.2009 Jaśkiewicz Kamil 148592 Bazy Danych 1 Podstawy Projekt Temat: Baza danych do zarządzania projektami Spis treści Założenia Projektowe...1 Schemat Bazy Danych...1
Wykład 3 2014-04-25 12:45 BD-1 W_3
Wykład 3 SQL - język operacji na bazach danych Schemat przykładowej bazy danych Uczelnia Skrypt SQL - utworzenie bazy Uczelnia Polecenia selekcji i projekcji Interakcyjny dostęp do bazy danych 2014-04-25
Model relacyjny. Wykład II
Model relacyjny został zaproponowany do strukturyzacji danych przez brytyjskiego matematyka Edgarda Franka Codda w 1970 r. Baza danych według definicji Codda to zbiór zmieniających się w czasie relacji
Systemowe aspekty baz
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
SQL w języku PL/SQL. 2) Instrukcje języka definicji danych DDL DROP, CREATE, ALTER, GRANT, REVOKE
Instrukcje SQL dzielimy na następujące kategorie: 1) Instrukcje języka manipulowania danymi (DML) SELECT, INSERT, UPDATE, DELETE, SET TRANSACTION, EXPLAIN PLAN 2) Instrukcje języka definicji danych DDL
Bazy danych. Plan wykładu. Zależności funkcyjne. Wykład 2: Relacyjny model danych - zależności funkcyjne. Podstawy SQL.
Plan wykładu Bazy danych Wykład 2: Relacyjny model danych - zależności funkcyjne. Podstawy SQL. Deficja zależności funkcyjnych Klucze relacji Reguły dotyczące zależności funkcyjnych Domknięcie zbioru atrybutów
Bazy danych wykład dwunasty PL/SQL, c.d. Konrad Zdanowski ( Uniwersytet Kardynała Stefana Bazy danych Wyszyńskiego, wykładwarszawa)
Bazy danych wykład dwunasty PL/SQL, c.d. Konrad Zdanowski Uniwersytet Kardynała Stefana Wyszyńskiego, Warszawa dwunasty PL/SQL, c.d. 1 / 37 SQL to za mało SQL brakuje możliwości dostępnych w językach proceduralnych.
Zbiór zadań z SQLa z elementami T-SQLa. (Wersja robocza z dnia 12.05.2015 r.) (Zgłaszanie usterek Robert.Fidytek@inf.ug.edu.pl)
Zbiór zadań z SQLa z elementami T-SQLa (Wersja robocza z dnia 12.05.2015 r.) (Zgłaszanie usterek Robert.Fidytek@inf.ug.edu.pl) opracował dr Robert Fidytek SPIS TREŚCI Zadania poziom 1 (Prosty DQL i DML)...