Wykład kończy się zaliczeniem na ocenę na podstawie kolokwium, które zostanie przeprowadzone na przedostatnim wykładzie

Wielkość: px
Rozpocząć pokaz od strony:

Download "Wykład kończy się zaliczeniem na ocenę na podstawie kolokwium, które zostanie przeprowadzone na przedostatnim wykładzie"

Transkrypt

1 Dr inż. Witold Rekuć p. 57 B4 Wykład kończy się zaliczeniem na ocenę na podstawie kolokwium, które zostanie przeprowadzone na przedostatnim wykładzie Literatura. C. Date. Wprowadzenie do systemów baz danych. WNT, Ullman J., Widom J.. Podstawowy wykład z systemów baz danych. WNT, Gruber M., SQL, Helion, Celko J., SQL zaawansowane techniki programowania. Mikom, Materiały do wykładu Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL

2 . Pojęcia relacyjnych baz danych 2. Operacje relacyjne 3. Operacje teoriomnogościowe 4. Operacja dzielenia 5. Operacja teta-złączenia 6. Projektowanie tabel Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 2

3 . Pojęcia relacyjnych baz danych Laboratorium IBM San Jose (California) A relational model for large shared data banks Communication of the ACM, 3:6,970. System R - prototyp oprogramowania SEQUEL2 prototyp języka Dziś: Oprogramowanie MS ACCESS, SQL Server, PostgreSQL, INGRES, ORACLE, DB2, Informix, Progres, Język SQL Edgar F. Codd Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 3

4 Baza danych jest zbiorem tabel (relacji) pamiętanych w jednym lub wielu plikach Firmy Nr Nazwa 0 Nasza Firma Abeja 2 Audi 3 Pafawag Ulica Nasza Abejowska Audiego Wagonowa KodMjc Telefon Miejscowości Kod Nazwa KodWoj Wrocław DL 2 Opole OP 3 Wałbrzych DL Firm2000.mdb Wojewodztwa Kod Nazwa DL Dolnośląskie OP Opolskie 4 Iase Energetyczna Dolmed Dokumenty Medyczna PozycjeDokumentu Nr NrSprzerdawcy Np SmbTow CenaNetto Ilość Nr NrSprzerdawcy NrNabywcy Data / ,00 20 / / , / / ,00 50 / / , / / , / / , / / ,00 45 Towary Smb Nazwa 00 Pasztet 002 Mortadela 003 Chipsy 004 Kawa Jakobs Jm kg kg paczka 400g paczka 00g StawkaVat 7% 7% 7% 7% 3/02 3/02 3/02 2/02 2/02 4/ ,50 7,80 3,20 2,00 4,60 3, Makrela kons. puszka 250g 7% Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 4

5 System zarządzania bazą danych Baza danych System zarządzania bazą danych Język użytkowników bazy danych Język administratora bazy danych... Użytkownicy bazy danych Administrator bazy danych Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 5

6 Tabela (relacja) Nazwa tabeli (relacji) nazwa kolumny (atrybutu, pola) Firmy Nr Nazwa Ulica KodMjc Telefon nagłówek (schemat) 0 Nasza Firma Nasza Abeja Abejowska Audi Pafawag Iase Audiego Wagonowa Energetyczna Wiersz (rekord, krotka) 5 Dolmed Medyczna kolumna (atrybut, pole) Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 6

7 Wartości w kolumnach (wartości atrybutów) Firmy Nr Nazwa Ulica KodMjc Telefon 0 Nasza Firma Nasza Abeja Abejowska Audi Audiego 2 3 Pafawag Wagonowa 2 4 Iase Energetyczna Dolmed Medyczna 6 Dolmel Elektryczna Zbiór dopuszczalnych numerów firm Dolme l Zbiór dopuszczalnych nazw firm Elektryczn a Zbiór dopuszczalnych nazw ulic 3 Zbiór dopuszczalnych kodów miejscowości Zbiór dopuszczalnych numerów telefonów Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 7

8 Dziedzina Dziedzina wartości jest to zbiór wartości, które potencjalnie mogą pojawić się w kolumnie tabeli (które może przyjmować atrybut). Wartości w kolumnach musza być traktowane jako atomowe - niepodzielne na mniejsze części Różne dziedziny wartości nie muszą być rozłączne Dziedzinę określa się przez podanie typu danych oraz dodatkowych ograniczeń (więzów) lub właściwości Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 8

9 Określoność wartości w kolumnach (wartości atrybutów) Firmy Nr Nazwa Ulica KodMjc Telefon 0 Nasza Firma Nasza Abeja Abejowska Audi Audiego 2 3 Pafawag Wagonowa Iase Dolmed Energetyczna Medyczna Wartość nieokreślona 6 Dolmel Elektryczna 3 6 Zbiór dopuszczalnych numerów firm Dolme l Zbiór dopuszczalnych nazw firm Elektrycz na 3 Zbiór dopuszczalnych nazw ulic Zbiór dopuszczalnych kodów miejscowości Zbiór dopuszczalnych numerów telefonów Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 9

10 Projektując tabelę dla pewnego zastosowania możemy rozstrzygnąć dla każdej kolumny: - czy wartość w kolumnie musi być zawsze określona, - czy wartość w kolumnie może być nieokreślona. Do oznaczenia wartości nieokreślonych stosuje się słowo NULL: Telefon is NULL Telefon is not NULL telefon jest nieokreślony telefon jest określony Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 0

11 Nieokreśloność wartości w kolumnach i logika trójwartościowa 6 Dolmel Elektryczna Telefon = Telefon is Telefon is ? NULL? not NULL? TRUE FALSE TRUE 6 Dolmel Elektryczna FALSE FALSE TRUE 6 Dolmel Elektryczna 3 UNKNOWN TRUE FALSE NULL Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL

12 Klucze tabeli Kluczem tabeli nazywamy niepusty zbiór atrybutów tabeli, które identyfikują wiersz tabeli i żaden jego podzbiór właściwy tej własności nie ma Dokumenty Nr NrSprzerdawcy NrNabywcy Data / /02 / Kluczem w tabeli Dokumenty jest zbiór 3/ K = {Nr, NrSprzedawcy} 2/ / Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 2

13 Inne przykłady: Osoba(Pesel, Nip, Nazwisko, Imię, DataUrodzenia) K={Pesel}, K2={Nip} Egzamin(NrStudenta, KodPrzedmiotu, Data, Ocena) K={NrStudenta, KodPrzedmiotu, Data} PozycjeDokumentu(Nr, NrSprzedawcy, Np,SmbTow, CenaNetto, Ilość) K={Nr, NrSprzedawcy, Np}, K2={Nr, NrSprzedawcy, SmbTow} ObrotyMiesięczne(Rok, Mc, Wartość) K={Rok, Mc} Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 3

14 Wszystkie klucze zdefiniowane dla danej tabeli sa zwane kluczami kandydującymi Kluczem podstawowym tabeli nazywamy klucz, który ze względu na pewne cechy praktyczne zostaje arbitralnie wybrany spośród kluczy tabeli Przykład: Przedmiot (Kod, Nazwa, Opis) K={Kod}, K2={Nazwa} Kluczem podstawowy: K Określoność wartości kluczy Każdy klucz tabeli musi mieć wartość określoną (NULL jest niedopuszczalne) Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 4

15 Definiowanie tabel bazy danych w języku SQL Notacja dla opisu składni: [wyrażenie] wyrażenie wyrażenie2 wyrażenie [,...] oznacza, że wyrażenie nie jest obowiązkowe oznacza albo wyrażenie albo wyrażenie2 oznacza możliwość powtarzania wyrażenia pewną liczbę razy {wyrażenie wyrażenie2 } nawiasy klamrowe służą do oznaczenia grupy ::= czytaj jest to wyrażeń (jak nawiasy w matematyce) UPDATE słowo kluczowe (symbol terminalny), ; ( ) znaki pojawiające się w wyrażeniach SQL (symbole terminalne) Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 5

16 CREATE TABLE nazwa_tabeli ( {nazwa_kolumny typ_kolumny[(rozmiar)]} [,...] )[;] Przykład definicji tabeli w języku SQL create table Firmy ( Nr Nazwa Ulica KodMjc Telefon DatZał Kapitał CzySpółka ); integer, char(30), char(30), char(5), char(20), datetime, real, bit Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 6

17 Podstawowe typy danych Typ danych Wielkość pamięci Opis BIT bajt Wartości Yes i No oraz pola zawierające tylko jedną z dwóch wartości. BYTE bajt Liczba całkowita z przedziału od 0 do 255. MONEY 8 bajtów Liczba całkowita z przedziału [ ,5808; ,5807] DATETIME 8 bajtów Wartość daty lub godziny z przedziału lat od 00 do REAL 4 bajty Wartość rzeczywista o pojedynczej precyzji mieszcząca się w przedziale [ 3,402823E38;,40298E-45] dla wartości ujemnych i [,40298E-45; 3,402823E38] dla wartości dodatnich oraz 0. FLOAT 8 bajtów Wartość rzeczywista o podwójnej precyzji należąca do zakresu [, E308; 4, E-324] dla wartości ujemnych i [ 4, E-324;, E308] dla wartości dodatnich oraz 0. SMALLINT 2 bajty Liczba całkowita z przedziału [ ; ]. INTEGER 4 bajty Liczba całkowita z przedziału [ ; ]. TEXT 2 bajty na znak Od zera do maksymalnie 2,4 gigabajta. CHARACTER 2 bajty na znak Od zera do 255 znaków. Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 7

18 CREATE TABLE nazwa_tabeli ( {nazwa_kolumny typ_kolumny[(rozmiar)] [ograniczenie_kolumnowe ]} [,...] )[;] ograniczenie_kolumnowe::= [ CONSTRAINT nazwa_ograniczenia] { PRIMARY KEY UNIQUE NOT NULL REFERENCES nazwa_tabeli_decelowej (nazwa_kolumny_w_tabeli_docelowej)]} PRIMARY KEY UNIQUE NOT NULL - wskazanie, że kolumna tworzy klucz główny - wskazanie, że kolumna tworzy klucz inny - wskazanie, że w kolumnie wszystkie wartości muszą być określone REFERENCES... - o tym dalej Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 8

19 Przykład definicji tabeli w języku SQL create table Firmy ( Nr integer constraint c primary key, Nazwa char(30) constraint c2 unique not null, Ulica char(30) constraint c3 unique not null, KodMjc integer, Telefon char(20), DatZał datetime, Kapitał real constraint c4 not null, CzySpółka bit constraint c5 not null ); Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 9

20 Modyfikowanie definicji tabel bazy danych w języku SQL Usuń tabelę z bazy danych DROP TABLE nazwa_tabeli [;] Modyfikuj definicję tabeli ALTER TABLE nazwa_tabeli { ADD COLUMN nazwa_kolumny typ [(rozmiar)] [NOT NULL] [ograniczenie_kolumnowe] ADD CONSTRAINT ograniczenie_tabelowe ALTER COLUMN nazwa_kolumny typ [(rozmiar)] DROP COLUMN nazwa_kolumny DROP CONSTRAINT nazwa_ograniczenia } [;] Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 20

21 Przyklady alter table firmy add column liczba_prac byte constraint c6 not null; alter table firmy add column liczba_prac byte not null; alter table firmy alter column liczba_prac integer; alter table firmy drop constraint c2; alter table firmy drop column liczba_prac; Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 2

22 Modyfikowanie zawartości tabel bazy danych w języku SQL INSERT INTO nazwa_tabeli [(nazwa_kolumny [,...])] VALUES (wartość [,...])[;] wartość musi być wartością dziedziny (typu) okreslonej dla kolumny w definicji tabeli Przyklady insert into firmy values (, "Dolmel", "Chorobowa 3", 4, NULL, # #, 2000, yes, 20); insert into firmy (Nr, Nazwa, Ulica, KodMjc, Telefon, DatZał, Kapitał, CzySpółka, liczba_prac) values (2, "Famag", "Krakowska 3", 2, NULL, # #, 20000, no, 200); insert into firmy (Telefon, DatZał, Kapitał, Nr, Nazwa, Ulica, KodMjc, CzySpółka, liczba_prac) values ("34-23", # #, 20, 3, "Miki", "Mikowska 3", 4, no, 2); Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 22

23 INSERT INTO nazwa_tabeli [(nazwa_kolumny [,...])] SELECT [nazwa_tabeli.]nazwa_kolumny [,...] FROM wyrażenie_tabelowe [WHERE warunek] [;] wyrażenie_tabelowe nazwa tabeli (lub wyrażenie, którego wartością jest tabela - patrz wykład dalej) Przyklady create table r2(c integer, D integer); insert into r2 values (,2); insert into r2 values (3,4); insert into r2 values (5,3); r2 C D create table r(a integer, B integer); insert into r(a, B) select C, D from r2; insert into r(a, B) select D, C from r2 where D>2; Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 23

24 UPDATE nazwa_tabeli SET nazwa_kolumny = nowa_wartość [, ] [WHERE warunek] [;] Przyklady r A B 2 update r set A = 0, B = 20; r A B update r set A = 0, B = 20 where A>2; r A B Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 24

25 DELETE nazwa_tabeli.* * FROM nazwa_tabeli [WHERE warunek][;] Przyklady r A B delete r.* from r; delete * from r; r r A A B B 5 3 delete * from r where A>3; r A B Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 25

26 Operatory porównania Operator Znaczenie < dla x<y zwraca wartość TRUE, gdy x jest mniejsze od y <= dla x<=y zwraca wartość TRUE, gdy x jest mniejsze lub równe y > dla x>y zwraca wartość TRUE, gdy x jest większe od y >= dla x>=y zwraca wartość TRUE, gdy x jest większe lub równe y = dla x=y zwraca wartość TRUE, gdy x jest równe y <> dla x<>y zwraca wartość TRUE, gdy x nie jest równe y Operatory logiczne Operator And Or Eqv Not Xor Znaczenie p And q zwraca TRUE gdy p i q są prawdziwe p Or q zwraca TRUE gdy p lub q jest prawdziwe p Eqv q zwraca TRUE gdy oba p iq są prawdziwe lub oba p i q są nieprawdziwe Not p zwraca TRUE gdy p nie jest prawdziwe p Xor q zwraca TRUE gdy albo p albo q jest prawdziwe Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 26

27 Problem poprawności bazy danych W aktualizacji bazy danych musimy zapewnić poprawność bazy danych: Poprawność formalna zgodność bazy danych z regułami formalnymi Poprawność merytoryczna zgodność bazy danych z rzeczywistością Poprawność formalna więzy integralnościowe: więzy dziedziny wartość atrybutu w tabeli musi należeć do dziedziny tego atrybutu lub jeżeli jest to dopuszczalne może być nieokreślona (NULL) więzy klucza w tabeli nie mogą występować dwa lub więcej wierszy o tej samej wartości klucza; klucz musi mieć wartość określoną więzy integralności referencyjnej patrz niżej inne więzy patrz niżej Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 27

28 Więzy dziedziny i klucza Firmy Nr 0 Nazwa Nasza Firma Ulica Nasza KodMjc Telefon Abeja Abejowska Audi Audiego 2 3 Pafawag Wagonowa 2 4 Iase Energetyczna Dolmed Medyczna Dodaj wiersz -3 Makrosoft Informatyczna A NULL Naruszenie więzów dziedziny Dodaj wiersz NULL Makrosoft Informatyczna NULL Naruszenie więzów klucza Dodaj wiersz 2 Makrosoft Informatyczna NULL Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 28

29 Więzy integralności referencyjnej Firmy Miejscowości Nr Nazwa Ulica KodMjc Telefon Kod Nazwa KodWoj 0 Nasza Firma Nasza Wrocław DL 2 3 Abeja Audi Pafawag Abejowska Audiego Wagonowa Opole Wałbrzych OP DL 4 Iase Energetyczna Dolmed Medyczna Dodaj do tabeli Firmy wiersz: 6 TP SA Telewizyjna Usuń z tabeli Miejscowości wiersz: 2 Opole DL Pytanie do bazy danych: w jakich województwach mają siedziby firmy, z którymi handlujemy? Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 29

30 Firmy Miejscowości Nr Nazwa Ulica KodMjc Telefon Kod Nazwa KodWoj 0 Nasza Firma Nasza Wrocław DL Abeja Abejowska Opole OP 2 Audi Audiego 2 3 Wałbrzych DL 3 Pafawag Wagonowa 2 4 Iase Energetyczna Dolmed Medyczna Dla każdego wiersza tabeli Firmy musi występować wiersz w tabeli Miejscowości taki, że: Firmy.KodMjc=Miejscowości.Kod Dla każdego wiersza tabeli Miejscowości może występować wiersz w tabeli Firmy taki, że: Firmy.KodMjc=Miejscowości.Kod Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 30

31 Firmy Miejscowości Nr Nazwa Ulica KodMjc Telefon Kod Nazwa KodWoj 0 Nasza Firma Nasza Wrocław DL Abeja Abejowska Opole OP 2 Audi Audiego 2 3 Wałbrzych DL 3 4 Pafawag Iase Wagonowa Energetyczna Klucz = {Kod} 5 Dolmed Medyczna Klucz = {Nr} Klucz obcy = {KodMjc} Dane są dwie tabele: To zwana tabelą odwołania Td zwana tabelą docelową Kluczem obcym tabeli To do tabeli Td nazywamy taki niepusty zbiór atrybutów To, którego wartości są wartościami klucza tabeli Td Więzy integralności referencyjnej Dla każdej wartości klucza obcego w tabeli odwołania w tabeli docelowej musi istnieć unikalny wiersz zawierający wartość tego klucza. Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 3

32 Przykład: Student (Nr, Nazwisko, Adres) Klucz={Nr} Egzamin (NrStudenta, KodPrzedmiotu, Data, Ocena) Klucz={NrStudenta, KodPrzedmiotu, Data} KluczObcy do tabeli Student KO={NrStudenta} KluczObcy do tabeli Przedmiot KO2={KodPrzedmiotu} Przedmiot (Kod, Nazwa) Klucz={Kod} Przykład: Dostawca (Kod, Nazwa, Ulica, KodMjc) Miejscowość (Kod, Nazwa) Dostawa (KodDostawcy, SmbTowaru, Data, Ilość) Towar (Symbol, Nazwa, Cena, Jm) Wskazać klucze i klucze obce! Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 32

33 CREATE TABLE nazwa_tabeli ( nazwa_kolumny typ_kolumny[(rozmiar)] [ograniczenie_kolumnowe ] [,...] )[;] ograniczenie_kolumnowe::= [ CONSTRAINT nazwa_ograniczenia] { PRIMARY KEY UNIQUE NOT NULL REFERENCES nazwa_tabeli_decelowej (nazwa_kolumny_w_tabeli_docelowej)]} PRIMARY KEY UNIQUE NOT NULL REFERENCES klucz podstawowy klucz dodatkowy wymagane klucz obcy Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 33

34 Przykład create table Miejscowosci ( Kod Byte primary key, Nazwa char(30) not null ); create table Firmy ( Nr Byte primary key, Nazwa char(30) not null, Ulica char(30) not null, KodMjc Byte not null references Miejscowosci (Kod), Telefon char(20) ); Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 34

35 Ograniczenia tablicowe CREATE TABLE nazwa_tabeli ( nazwa_kolumny typ_kolumny[(rozmiar)] [ograniczenie_kolumnowe ] [,...] [,ograniczenie_tablicowe [,...]] )[;] ograniczenie_tablicowe ::= [ CONSTRAINT nazwa_ograniczenia] { PRIMARY KEY (nazwa_kolumny_klucza_głównego[,...]) UNIQUE (nazwa_kolumny_klucza_dodatkowego[,...]) FOREIGN KEY (nazwa_kolumny_w_tabeli [, ]) REFERENCES nazwa_tabeli_docelowej (nazwa_kolumny_w_tabeli_docelowej[,...]) } PRIMARY KEY UNIQUE FOREIGN KEY REFERENCES klucz podstawowy klucz dodatkowy klucz obcy Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 35

36 Przykład create table FAKTURY ( NrFaktury char(2), NrSprzedawcy integer, NrNabywcy integer not null, Data datetime not null, constraint pk_d primary key (NrFaktury, NrSprzedawcy) ) create table POZYCJEFAKTURY ( NrFaktury char(2), NrSprzedawcy integer, NrPozycji byte, SmbTow char(4), Ilość float, CenaNetto float, constraint pk_pd primary key (NrFaktury, NrSprzedawcy, NrPozycji), constraint uq_pd unique (NrFaktury, NrSprzedawcy, SmbTow), constraint fk_pd foreign key (NrFaktury, NrSprzedawcy) references FAKTURY(NrFaktury, NrSprzedawcy) ) Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 36

37 Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 37

38 Inne więzy integralnościowe Więzy inne są specyficzne dla dziedziny zastosowań. Są one określone przez warunki, których niespełnienie byłoby świadectwem błędu w danych lub świadectwem naruszenia reguł organizacji, w której baza danych jest użytkowana. Przykłady:. Data dostawy nie może być wcześniejsza od daty zamówienia tej dostawy. 2. Dla każdego promotora liczba dyplomatów nie może być większa od Nie może być wykonane wypożyczenie książki czytelnikowi, który zalega ze zwrotem innych książek. Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 38

39 2. Operacje relacyjne Operacje na tabelach Operacje relacyjne Projekcja Operacje teoriomnogościowe Suma Selekcja Złączenie Dzielenie Iloczyn Różnica niesymetryczna Dopełnienie Przemianowanie Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 39

40 Operacja projekcji Wyznacza tabelę o schemacie ograniczonym do zbioru zadanych nazw r(r) - tabela r o schemacie R poddawana projekcji X schemat nowej tabeli - zbiór zadanych nazw (X R) q(x) - tabela q o schemacie X - wynik projekcji q(x) = X ( r (R) ) = { t[x] : t r } gdzie t[x] oznacza wiersz powstały przez zredukowanie t do wartości atrybutów z X R X Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 40

41 Przykład r A B C D a5 b2 c d a6 b4 c5 d2 a6 b4 c d3 a6 b4 c d2 a b2 c2 d {C,D} ( r ({A,B,C,D}) ) = q({c,d}) C D c d c5 d2 c d3 c d2 c2 d {A,B} ( r ({A,B,C,D}) ) = q({a,b}) A a5 a6 a B b2 b4 b2 Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 4

42 Przykład Podaj nazwy i numery telefonów firm q({nazwa, Telefon}) = {Nazwa, Telefon} ( Firmy ({Nr, Nazwa, Ulica,KodMjc, Telefon})) q Firmy Nazwa Telefon Nr Nazwa Ulica KodMjc Telefon Nasza Firma Nasza Firma Nasza Abeja Abeja Abejowska Audi Pafawag {Nazwa, Telefon} 2 3 Audi Pafawag Audiego Wagonowa 2 2 Iase Iase Energetyczna Dolmed 5 Dolmed Medyczna wiersze zredukowane do X={Nazwa, Telefon} Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 42

43 Realizacja w SQL (SELECT FROM) SELECT [ ALL DISTINCT] DISTINCTROW [TOP n [PERCENT]] { * nazwa_tabeli.* {[nazwa_tabeli.] nazwa_kolumny [AS alias]}[,...] } [ INTO nazwa_nowej_tabeli ] [FROM wyrażenie_tabelowe [,...]] SELECT ALL DISTINCT DISTINCTROW TOP n TOP n PERCENT wybierz wszystkie (także duplikaty) unikalne wartości (bez duplikatów) unikalne wiersze (o tym potem) od góry n wierszy od góry n procent wierszy Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 43

44 r A B select * from r; select r.* from r; select A, B from r; select r.a, r.b from r; select A as X, B as Y from r; Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 44 A B X Y

45 A B select A from r; select r.a from r; select all A from r; select distinct A from r; select top 3 * from r; select top 5 percent * from r; A A A B A B 2 Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 45

46 Przykład create table Miejscowosci ( Kod Byte primary key, Nazwa char(30) not null ); create table Firmy ( Nr Byte primary key, Nazwa char(30) not null, Ulica char(30) not null, KodMjc Byte not null references Miejscowosci (Kod), Telefon char(20) ); select nazwa, telefon from Firmy; select distinct nazwa, telefon from Firmy; select * from Firmy; Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 46

47 Przykład: Podaj kody miejscowości siedzib firm q({kodmjc}) = {KodMjc} ( Firmy ({Nr,Nazwa,Ulica,KodMjc,Telefon})) q KodMjc 3 {KodMjc} Firmy select kodmjc from Firmy; Nr 0 Nazwa Nasza Firma Abeja Ulica Nasza Abejowska KodMjc 3 Telefon Audi Audiego 2 3 Pafawag Wagonowa 2 q KodMjc {KodMjc} 4 5 Iase Dolmed Energetyczna Medyczna select distinct kodmjc from Firmy; Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 47

48 Przykład Chcemy obliczyć wartość średnią obrotu miesięcznego w roku q({obrót}) = {Obrót} ( Obroty ({Miesiąc,Obrót}) ) q Obroty Obrót Miesiąc Obrót {Obrót} Styczeń Luty Marzec Kwiecień Maj czerwiec Zostaw duplikaty w tabeli wynikowej select distinct Obrót from Obroty; Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 48

49 Operacja selekcji Wyznacza tabelę o schemacie identycznym schematowi tabeli zadanej ale o wierszach spełniających pewien warunek selekcji r(r) tabela r o schemacie R poddawana selekcji F warunek selekcji (formuła logiczna) q(r) tabela q o schemacie R - wynik selekcji q(r) = F ( r (R) ) = { t : t r i F(t) = prawda } wiersze spełniające warunek selekcji Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 49

50 Przykład r A B C D a5 2 a a6 4 a5 2 a6 4 a a6 4 a 2 a 2 a r ({A,B,C,D}) ) = q ({A,B,C,D}) B A B C D r ({A,B,C,D}) ) = q ({A,B,C,D}) B A B C D and D<2 a6 4 a5 2 a6 4 a a6 4 a 2 a6 4 a r ({A,B,C,D}) ) = q ({A,B,C,D}) B=4 A B C D or D<2 a5 2 a a6 4 a5 2 a6 4 a a6 4 a 2 a 2 a Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 50

51 Realizacja w SQL (SELECT...FROM...WHERE) SELECT [ ALL DISTINCT DISTINCTROW [TOP n [PERCENT]] { * nazwa_tabeli.* {[nazwa_tabeli.] nazwa_kolumny [AS alias]}[,...] } [ INTO nazwa_nowej_tabeli ] [FROM wyrażenie_tabelowe [,...]] [WHERE warunek ] warunek stałe wyrażenie logiczne składające się z nazw kolumn (zmiennych), wartości stałych, symboli funkcji i operacji, operatorów porównania, operatorów logicznych, operatorów specjalnych, nawiasów okrągłych liczby całkowite ze znakiem lub bez liczby rzeczywiste ze znakiem lub bez daty #rrrr-mm-dd# czas #gg-mm# stałe napisowe o postaci ciąg znaków Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 5

52 Wybrane funkcje Funkcja Date() Now() Year(data) Month(data) Right(arg,arg2) Left(arg,arg2) Mid(arg,arg2,arg3) Len(napis) Znaczenie zwraca bieżącą datę z kalendarza komputera. zwraca bieżącą datę i czas z kalendarza/zegara komputera wymaga argumentu typu Data i zwraca rok jako 4-cyfrową liczbę. wymaga argumentu typu Data i zwraca miesiąc jako liczbę z zakresu -2. zwraca prawą część napisu (arg), licząc tyle znaków od prawej na ile wskazuje arg2. zwraca lewą część napisu (arg), licząc tyle znaków od lewej na ile wskazuje arg2. zwraca podnapis napisu arg od znaku w pozycji arg2 i długości arg3. zwraca liczbę znaków w napisie (długość napisu). Avg(kol) średnia wartości z kolumny 'kol'. Count(kol) First i Last(kol) Min i Max(kol) Sum(kol) liczba wartości w kolumnie 'kol'. pierwsza i ostatnia wartość w kolumnie 'kol'. najmniejsza i największa wartość w kolumnie 'kol'. suma wartości z kolumny 'kol'. Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 52

53 Operatory arytmetyczne Operator Znaczenie + Suma dwóch liczb. różnica miedzy dwiema liczbami i oznaczenie liczby ujemnej. * iloczyn dwóch liczb. / iloraz dwóch liczb. \ zaokrąglij do całkowitych dzielną i dzielnik, oblicz iloraz oraz z ilorazu odrzuć część ułamkową. Mod ^ oblicz resztę dzielenia dwóch liczb. podnieś do potęgi. Operatory porównania Operator < <= > >= = <> Operatory logiczne Operator And Or Eqv Not Xor Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 53

54 Operatory napisowe Operator & Znaczenie dla napis&napis2 wynikiem jest napis, po którym następuje bezpośrednio napis2. + jak dla &, ale gdy jeden lub oba napisy są NULL to wynik jest NULL. Operatory specjalne Operator Is Null lub Is Not Null Like "wzorzec" Between wartość And wartość2 In (wartość, wartość2,...) Znaczenie dla x Is Null zwraca wartość TRUE, gdy x jest nieokreśone. dla x Is Not Null zwraca wartość TRUE, gdy x jest okreśone. dla x like wzorzec zwraca TRUE, gdy x pasuje do wzorca. We wzorcu znak? reprezentuje dowolną pozycję znakową a * - reprezentuje dowolny ciąg znaków. dla x Between a And b zwraca TRUE a <= x <= b. dla x IN (wartość, wartość2,...) zwraca TRUE gdy x {wartość, wartość2,...}. Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 54

55 Przykład Podaj dane miejscowości z województwa dolnośląskiego q({kod,nazwa,kodwoj}) = KodWoj=DL ( Miejscowości ({Kod,Nazwa,KodWoj}) ) Miejscowości q Kod Nazwa Wrocław KodWoj DL Wrocław DL 3 Wałbrzych DL Kod Nazwa KodWoj KodWoj=DL 2 Opole OP 3 Wałbrzych DL 4 Warszawa MZ 5 6 Katowice Kraków SL MP select Kod, Nazwa, KodWoj from Miejscowości where KodWoj = "DL"; Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 55

56 q({... })= (KodMjc=2) and (Telefon is NULL) (Firmy({Nr,Nazwa,Ulica,KodMjc,Telefon})) select * from Firmy where (KodMjc = 2) and (Telefon IS NULL); q({... })= (KodMjc=2) or (Telefon is NULL) (Firmy({Nr,Nazwa,Ulica,KodMjc,Telefon})) select * from Firmy where (KodMjc = 2) or (Telefon IS NULL); q({... })= (KodMjc=2) or (KodMjc=3) (Firmy({Nr,Nazwa,Ulica,KodMjc,Telefon})) select * from Firmy where (KodMjc = 2) or (KodMjc = 3); q({... })= (KodMjc=2) and (KodMjc=3) (Firmy({Nr,Nazwa,Ulica,KodMjc,Telefon}))! select * from Firmy where (KodMjc = 2) and (KodMjc = 3); Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 56

57 Złożenie operacji projekcji i selekcji (SELECT...FROM...WHERE) q(x) = X ( F ( r (R) ) Przykład Podaj nazwy firm z Opola, które nie mają określonego numeru telefonu q({nazwa})= (KodMjc=2) and (Telefon is NULL) (Firmy({Nr,Nazwa,Ulica,KodMjc,Telefon})) Firmy q Nazwa Audi Pafawag {Nazwa} ( (KodMjc=2) and (Telefon is NULL) Nr Nazwa Nasza Firma Abeja Audi Pafawag Ulica Nasza Abejowska Audiego Wagonowa KodMjc Telefon Iase Energetyczna Dolmed Medyczna select Nazwa from Firmy where (KodMjc = 2) and (Telefon IS NULL); Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 57

58 Porządkowanie wierszy w tabeli wynikowej (ORDER BY) SELECT [ ALL DISTINCT DISTINCTROW [TOP n [PERCENT]] { * nazwa_tabeli.* {[nazwa_tabeli.] nazwa_kolumny [AS alias]}[,...] } [FROM wyrażenie_tabelowe [,...]] [WHERE warunek ] [ORDER BY {nazwa_kolumny [ASC DESC]} [, ] ][;] ORDER BY ASC DESC - uporządkuj według - rosnąco - malejąco Przykład select KodMjc, Nazwa, Ulica from Firmy where (KodMjc = 2) or (KodMjc = 3) order by KodMjc asc, Nazwa asc; Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 58

59 Wyrażenia po SELECT SELECT [ ALL DISTINCT DISTINCTROW [TOP n [PERCENT]] { * nazwa_tabeli.* {[nazwa_tabeli.] nazwa_kolumny [AS alias] wyrażenie [AS alias]}[,...] } [ INTO nazwa_nowej_tabeli ] [FROM wyrażenie_tabelowe [,...]] [WHERE warunek ] [GROUP BY nazwa_kolumny [, ]] [HAVING warunek ] [ORDER BY {nazwa_kolumny [ASC DESC]} [, ] ][;] Przykład select 2+2 as czwórka; select sin() as Sinus; select sin() + 5 as Sinus, 20 as Dwadzieścia; Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 59

60 Agragowanie wartości w kolumnach (GROUP BY HAVING) SELECT [ ALL DISTINCT DISTINCTROW [TOP n [PERCENT]] { * nazwa_tabeli.* {[nazwa_tabeli.] nazwa_kolumny [AS alias] wyrażenie [AS alias]}[,...] } [ INTO nazwa_nowej_tabeli ] [FROM wyrażenie_tabelowe [,...]] [WHERE warunek ] [GROUP BY nazwa_kolumny [, ]] [HAVING warunek ] [ORDER BY {nazwa_kolumny [ASC DESC]} [, ] ][;] GROUP BY HAVING - grupuj według - mając spełnione Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 60

61 Przykład r A B select A, sum(b) as Suma from r group by A; select A, Count(B) as Liczność from r group by A; A Suma A Liczność Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 6

62 Przykład 2 r3 r A B C I a 2 I a 4 I b 8 I b 7 I b 3 I b 2 I c 4 I c 2 II a 5 II a II a 4 II a 7 II c 5 II c 3 II c 8 select A, B, sum(c) as [Razem C] from r3 group by A, B; A B Razem C I a 6 I b 20 I c 6 II a 7 II c 6 Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 62

63 Przykład 3 r3 r A B C I a 2 I a 4 I b 8 I b 7 I b 3 I c 4 I c 2 I b 2 II c 5 II c 3 II c 8 II a 5 II a II a 4 II a 7 A B C I a 2 I a 4 II a 5 II a II a 4 II a 7 I b 8 I b 7 I b 3 I b 2 I c 4 I c 2 II c 5 II c 3 II c 8 select B, A, sum(c) as [Razem C] from r3 group by B, A; B A Razem C a I 6 a II 7 b I 20 c I 6 c II 6 Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 63

64 Operacja równozłączenia Problem: chcemy uzyskać zestawienie firm z nazwami miejscowości. Firmy Nr Nazwa Ulica KodMjc Telefon 0 Nasza Firma Nasza Abeja Abejowska Audi Audiego 2 3 Pafawag Wagonowa 2 Miejscowości Kod Nazwa KodWoj Wrocław DL 2 Opole OP 3 Wałbrzych DL Wojewodztwa Kod Nazwa DL Dolnośląskie OP Opolskie 4 Iase Energetyczna Dolmed Dokumenty Medyczna PozycjeDokumentu Nr NrSprzerdawcy Np SmbTow CenaNetto Ilość Nr NrSprzerdawcy NrNabywcy Data / ,00 20 / / , / / ,00 50 / / , / / , / / , / / ,00 45 Towary 3/02 3/ ,50 7, Smb Nazwa Jm StawkaVat 3/ , Pasztet kg 7% 2/ , Mortadela kg 7% 2/ , Chipsy paczka 400g 7% 4/ , Kawa Jakobs paczka 00g 7% 005 Makrela kons. puszka 250g 7% Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 64

65 Firmy Nr Nazwa Nasza Firma Abeja Audi Pafawag Iase Ulica Nasza Abejowska Audiego Wagonowa Energetyczna KodMjc Telefon Miejscowości Kod Nazwa KodWoj Wrocław DL 2 Opole OP 3 Wałbrzych DL 5 Dolmed Medyczna Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 65

66 Definicja operacji równozłączenia Dane są: r(r) s(s) q(r S) tabela r o schemacie R, A R tabela s o schemacie S, B S tabela s o schemacie R S wynik złączenia Uwaga: R i S nie zawierają tych samych nazw (R S = Ø) q(r S) = r [ A=B ] s = { t : t[r] r, t[s] s i t[a] = t[b] } r R A s S B v v t v v Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 66

67 Przykład r s r [ B=C ] s A B C D A B C D a5 d a5 d a6 5 2 d2 a7 2 2 d2 a7 2 3 d3 a 2 2 d2 a8 4 a 2 r s s [ C=B ] r A B C D C D A B a5 d d a5 a6 5 2 d2 2 d2 a7 2 a7 2 3 d3 2 d2 a 2 a8 4 a 2 Uwaga: przemienność równozłączenia Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 67

68 Iloczyn kartezjański tabel Brak warunku złączenia r s r [ ] s A B C D A B C D a5 d a5 d a6 5 2 d2 a5 2 d2 3 d3 a5 3 d3 a6 5 d a5 2 d2 a6 5 3 d3 Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 68

69 Przykład r A B a5 a6 5 a7 2 s C D d 2 d2 3 d3 q E d d3 d7 F f f2 f3 a8 4 a 2 r [ B=C ] s A B C D a5 d a7 2 2 d2 a 2 2 d2 q E d d3 d7 F f f2 f3 ( r [ B=C ] s ) [ D=E ] q A B C D E F a5 d d f Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 69

70 r A B a5 a6 5 a7 2 s C D d 2 d2 3 d3 q E d d3 d7 F f f2 f3 a8 4 a 2 r A B a5 a6 5 a7 2 a8 4 a 2 s [ D=E ] q C D E F d d f 3 d3 d3 f2 r [ B=C ] ( s [ D=E ] q ) A B C D E F a5 d d f Uwaga: operacja złączenia jest łączna Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 70

71 Firmy Nr Nazwa 0 Nasza Firma Abeja 2 Audi 3 Pafawag Ulica Nasza Abejowska Audiego Wagonowa KodMjc Telefon Miejscowości Kod Nazwa KodWoj Wrocław DL 2 Opole OP 3 Wałbrzych DL 4 Iase Energetyczna Dolmed Medyczna Firmy [ KodMjc = Kod ] Miejscowości Zestawienie firm Nr Nazwa Ulica KodMjc Telefon Kod Nazwa (Mjc) KodWoj 0 Nasza Firma Nasza Wrocław DL Abeja Abejowska Wałbrzych DL 2 Audi Audiego 2 2 Opole OP 3 Pafawag Wagonowa 2 2 Opole OP 4 Iase Energetyczna Wałbrzych DL 5 Dolmed Medyczna Wrocław DL Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 7

72 Realizacja w SQL (SELECT...FROM...WHERE) SELECT [ ALL DISTINCT DISTINCTROW [TOP n [PERCENT]] { * nazwa_tabeli.* {[nazwa_tabeli.] nazwa_kolumny [AS alias]}[,...] } [ INTO nazwa_nowej_tabeli ] FROM wyrażenie_tabelowe [,...] [WHERE warunek ] [GROUP BY nazwa_kolumny [, ]] [HAVING warunek ] [ORDER BY {nazwa_kolumny [ASC DESC]} [, ] ][;] wyrażenie_tabelowe ::= nazwa_tabeli nazwa_kwerendy_wybierającej {nazwa_tabeli INNER JOIN nazwa_tabeli2 ON nazwa_tabeli.nazwa_kolumny operator_porównania nazwa_tabeli2.nazwa_kolumny2} Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 72

73 Przykłady r s r [ B=C ] s A B C D A B C D a5 a6 5 a7 2 a8 4 a 2 d 2 d2 3 d3 a5 d a7 2 2 d2 a 2 2 d2 select r.*, s.* from s inner join r on r.b=s.c; select r.a, r.b, s.c, s.d from s inner join r on r.b=s.c; Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 73

74 r s r [ ] s A B C D A B C D a5 d a5 d a6 5 2 d2 a5 2 d2 3 d3 a5 3 d3 a6 5 d a5 2 d2 a6 5 3 d3 select r.*, s.* from r, s; Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 74

75 Złożenie operacji projekcji, selekcji i równozłączenia q(x) = X ( F ( r [A=B] s ) r s {A,D} ( B=2 ( r [B=C] s ) A B C D A D a5 d a7 d2 a6 5 2 d2 a d2 a7 2 3 d3 a8 4 a 2 select r.a, s.d from r inner join s on r.b=s.c where r.b = 2; select r.a, s.d from r, s where r.b = 2 and r.b=s.c; Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 75

76 Równozłączenie wielu tabel Kategorie Kasety Rewersy Wypożyczający Kk Nk T Kk T Wp Dt Wp Aw Kk Nk T Kk T Wp d Wp Aw Kk2 Nk2 T2 Kk2 T2 Wp d2 Wp2 Aw2 Kk3 Nk3 T3 Kk3 T3 Wp3 d3 Wp3 Aw3 T4 Kk3 T4 Wp3 d4 T5 Kk2 T5 Wp2 d5 Zadanie: znajdź Wp i Aw dla Nk = Nk3 select Wypożyczający.Wp, Aw from Wypożyczający inner join (Rewersy inner join (Kasety inner join Kategorie on Kasety.Kk=Kategorie.Kk) on Kasety.T=Rewersy.T) on Rewersy.Wp=Wypożyczający.Wp where Nk="Nk3"; Kk-kod kategorii, Nk-nazwa kategorii, T-tytuł, Wp-pesel, Dt-data, Aw-adres Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 76

77 Kategorie Kk Kk Kk2 Kk3 Nk Nk Nk2 Nk3 Kasety T T T2 T3 T4 T5 Kk Kk Kk2 Kk3 Kk3 Kk2 Zadanie: znajdź Wp i Aw dla Nk = Nk3 Pesele_Nk3 Kk-kod kategorii, Nk-nazwa kategorii, T-tytuł, Wp-pesel, Dt-data, Aw-adres Rewersy T Wp Dt T Wp d T3 Wp d2 T3 Wp3 d3 T4 Wp3 d4 T5 Wp2 d5 Wypożyczający Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 77 Wp Wp Wp2 Wp3 Wypożyczający_Nk3 select Wypożyczający.Wp, Aw from Wypożyczający inner join Pesele_Nk3 on Pesele_Nk3.Wp=Wypożyczający.Wp; Aw Aw Aw2 Aw3 Tytuły_Nk3 select Kasety.T from Kasety inner join Kategorie on Kasety.Kk=Kategorie.Kk where Nk="Nk3"; select Rewersy.Wp from Rewersy inner join Tytuły_Nk3 on Tytuły_Nk3.T=Rewersy.T;

78 Kategorie Kasety Rewersy Wypożyczający Kk Nk T Kk T Wp Dt Wp Aw Kk Nk T Kk T Wp d Wp Aw Kk2 Nk2 T2 Kk2 T2 Wp d2 Wp2 Aw2 Kk3 Nk3 T3 Kk3 T3 Wp3 d3 Wp3 Aw3 T4 Kk3 T4 Wp3 d4 T5 Kk2 T5 Wp2 d5 Zadanie: znajdź Wp i Aw dla Nk = Nk3 select Wypożyczający.Wp, Aw from Wypożyczający, Rewersy, Kasety, Kategorie where Nk="Nk3" and Kasety.Kk=Kategorie.Kk and Kasety.T=Rewersy.T and Rewersy.Wp=Wypożyczający.Wp; Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 78

79 Zadania F( Nr, Nazwa ) T ( Smb, Nazwa ) n a na 2 n2 b nb 3 n3 c nc 4 n4 D (NrD, NrS, NrN,Data) P ( NrD, NrS, Np, Smb, Ilosc, Cena) 2 d a d 2 b d2 2 a d2 2 2 a d b c a c b c 0 5 Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 79

80 Oblicz: ) {Data}(D) 2) NrS= and NrN=2(D), NrS= or NrN=2(D) 3) {NrD,NrS}( Smb=a(P)) ) D [NrS=Nr] F, D [NrN=Nr] F, D [Nrd=Nrd,NrS=NrS] P Napisz wyrażenie algebraiczne dla żądań: ) Podaj nazwy firm, które coś kupiły w dniu 'd'. 2) Podaj nazwy towarów kupionych przez firmę o nazwie 'n3'. 3) Podaj dni, w których kupiono towar o nazwie 'na'. 4) Podaj nazwy towarów sprzedanych po cenie > 2. Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 80

81 3. Operacje teoriomnogościowe Operacje na tabelach Operacje relacyjne Projekcja Operacje teoriomnogościowe Suma Selekcja Iloczyn Złączenie Dzielenie Różnica niesymetryczna Dopełnienie Przemianowanie Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 8

82 Suma tabel Dane są tabele o jednakowych schematach: r(r) s(r) r(r) s(r) = q(r) = { t : t r lub t s } Przykład r A B s A B q A B a2 b a5 b2 a2 b a5 b2 a b a5 b2 a b a6 b4 a b a6 b4 a b2 a6 b4 a3 b2 a3 b2 a b2 Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 82

83 Operator UNION [TABLE] zapytanie_ UNION [ALL] [TABLE] zapytanie_2 [UNION [ALL] [TABLE] zapytanie_n [ ]] gdzie zapytanie_... n - zdanie SELECT albo nazwa zapytania zapamiętanego albo nazwa zapamiętanej tabeli poprzedzona słowem TABLE. Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 83

84 rab r2ab select * from rab union all select * from r2ab; select * from rab union select * from r2ab; table rab union all table r2ab; {z duplikatami} {bez duplikatów} table rab union table r2ab; Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 84

85 rab r2ab r3ab select * from rab union all select * from r2ab union select * from r3ab; table rab union table r2ab union all table r3ab Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 85

86 NumeryKlientów select NrNabywcy as Nr from Dokumenty where NrNabywcy<>0 union select NrSprzedawcy as Nr from Dokumenty where NrSprzedawcy<>0; select Firmy.Nr, Firmy.Nazwa from NumeryKlientów inner join Firmy on NumeryKlientów.Nr=Firmy.Nr; Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 86

87 Wstawmy zapytanie pierwsze do drugiego w miejsce wywołania tabeli NumeryKlientów: select Firmy.Nr, Firmy.Nazwa from (select NrNabywcy as Nr from Dokumenty where NrNabywcy<>0 union select NrSprzedawcy as Nr from Dokumenty where NrSprzedawcy<>0) as NumeryKlientów inner join Firmy on NumeryKlientów.Nr=Firmy.Nr; Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 87

88 Kwerenda dołączająca INSERT INTO nazwa_tabeli [(nazwa_kolumny [,...])] SELECT [nazwa_tabeli.]nazwa_kolumny [,...] FROM wyrażenie_tabelowe [WHERE warunek ][;] Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 88

89 Realizacja operacji sumy tabel jako kwerendy dołączającej wariant a) wariant b) r s r s kwerenda tworząca tabelę kwerenda dołączająca q r kwerenda dołączająca q Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 89

90 wariant a) r s dołącz s do r : insert into r(a,b) select s.a, s.b from s; kwerenda dołączająca r usuń duplikaty z r : select distinct r.* from r; kwerenda usuwająca duplikaty Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 90

91 wariant b) r s uwtórz q jako kopię r: select r.a, r.b into q(a,b) from r; kwerenda tworząca tabelę q dołącz s do q: insert into q(a,b) select s.a, s.b from s; q kwerenda dołączająca usuń duplikaty z q select distinct q.* from q; kwerenda usuwająca duplikaty Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 9

92 Iloczyn tabel Dane są tabele o jednakowych schematach: r(r) s(r) Przykład r(r) s(r) = q(r) = { t : t r i t s } r A B s A B a2 b a5 b2 a5 b2 a b a b a6 b4 a6 b4 a b2 q A a5 a a6 B b2 b b4 a3 b2 Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 92

93 Realizacja za pomocą kwerendy wybierającej q(r) := r(r) s(r) {r.*} (r [ r.a =s.a,..., r.a n =s.a n ] s) r A B s A B q A B a2 b a5 b2 a5 b2 {r.a,r.b} (r [ r.a = s.a, r.b = s.b ] s) a5 b2 a b a b a b a6 b4 a6 b4 a6 b4 a b2 a3 b2 Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 93

94 Realizacja operacji iloczynu tabel w SQL wariant a) select r.* from r inner join s on (r.a=s.a) and r.b=s.b); r s wariant b) select * into q from r where exists (select a,b from s where r.a=s.a and r.b=s.b) select * into q from s where exists (select a,b from r where r.a=s.a and r.b=s.b) kwerenda tworząca tabelę kwerenda wybierająca exists Interpretacja: wstaw do q wszystkie te wiersze z r, dla których istnieją w s wiersze identyczne z nimi q Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 94

95 Nie realizowane w MS ACCESS: select r.* from r intersect select s.* from s; table r intersect table s; select r.* from r intersect all select s.* from s; table r intersect all table s; Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 95

96 Różnica niesymetryczna tabel Dane są tabele o jednakowych schematach: r(r) s(r) r(r) s(r) = q(r) = { t : t r i t s } Przykład r A B s A B a2 b a5 b2 a5 b2 a b a b a6 b4 q A a2 a3 B b b2 a6 b4 a b2 a3 b2 Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 96

97 Realizacja operacji różnicy tabel w MS ACCESS wariant a) wariant b) wariant c) r s r s r s kwerenda usuwająca kwerenda tworząca tabelę kwerenda tworząca tabelę r q kwerenda wybierająca kwerenda usuwająca q q Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 97

98 wariant a) r s z r usuń wiersze wspólne z s: delete distinctrow r.* from r inner join s on (r.a=s.a) and ( r.b=s.b); kwerenda usuwająca r Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 98

99 wariant b) r s uwtórz q jako kopię r: select r.a, r.b into q(a,b) from r; kwerenda tworząca tabelę q z q usuń wiersze wspólne z s: delete distinctrow q.* from q inner join s on (q.a=s.a) and ( q.b=s.b); kwerenda usuwająca q Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 99

100 wariant c) r s select * into q from r where not exists (select a,b from s where r.a=s.a and r.b=s.b) kwerenda tworząca tabelę kwerenda wybierająca not exists Interpretacja: wstaw do q wszystkie te wiersze z r, dla których NIE istnieją w s wiersze identyczne z nimi q Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 00

101 Nie realizowane w MS ACCESS: select r.* from r except select s.* from s; select r.* from r except all select s.* from s; table r except table s; table r except all table s; Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 0

102 Różnica symetryczna tabel Dane są tabele o jednakowych schematach: r(r) s(r) Przykład q(r) = { t : (t r lub t s) i t s r } r A B s A B q A B a2 b a5 b2 a2 b a5 b2 a b a3 b2 a b a6 b4 a b2 a6 b4 a b2 a3 b2 Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 02

103 r s (r - s) (s - r) select * from r where not exists (select a,b from s where r.a=s.a and r.b=s.b) union select * from s where not exists (select a,b from r where r.a=s.a and r.b=s.b) Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 03

104 Operacje teoriomnogościowe dopełnienie Dana jest tabela r(r), w której R={A,A 2,...,A n } Każdej nazwie A,A 2,...,A n przyporządkowano zbiór dopuszczalnych wartości D,D 2,...,D n dop(r(r)) = D D 2... D n r(r) Przykła d D D 2 A A 2 R={A,A 2 } a D = {,2} D 2 = {a,b} b 2 a r A A 2 2 a b dop(r) A A 2 a 2 b 2 b Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 04

105 Przykład Obiekt Nazwa Adres Grupa Numer Liczność Zwiedziła Nazwa Numer Muzeum Muzealna 0 Muzeum Park zdrojowy Parkowa 2 50 Park zdrojowy Zamek Zapora Zamkowa Wodna 3 55 Zamek Zapora 2 3 Podać, która grupa i który obiekt ma jeszcze zwiedzić, jeżeli już odbyły się wizyty podane w tabeli Zwiedziła {Nazwa} (Obiekt) {Numer} (Grupa) Zwiedziła select Obiekt.Nazwa, Grupa.Numer from Obiekt, Grupa except select Zwiedziala.Nazwa, Zwiedzila.Numer from Zwiedzila; Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 05

106 Grupa Obiekt select from Numer as [Numer grupy], Nazwa as [Nazwa obiektu] into Plan Grupa, Obiekt Plan Zwiedziła delete distinctrow Plan.* from Zwiedziła inner join Plan on (Plan.[Nazwa obiektu]=zwiedziła.[nazwa obiektu]) and (Plan.[Numer grupy]=zwiedziła.[numer grupy]); Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 06

107 Grupa Obiekt select Numer as [Numer grupy], Nazwa as [Nazwa obiektu] into Plan from Grupa, Obiekt Plan Zwiedziła SELECT * FROM Plan WHERE not exists (select Zwiedziła.[Nazwa obiektu], Zwiedziła.[Numer grupy] from Zwiedziła where (Plan.[Nazwa obiektu] =Zwiedziła.[Nazwa obiektu]) and (Plan.[Numer grupy]=zwiedziła.[numer grupy])); Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 07

108 Grupa Obiekt Zwiedziła SELECT * FROM (select Numer as [Numer grupy], Nazwa as [Nazwa obiektu] from Grupa, Obiekt) as Plan WHERE not exists (select Zwiedziła.[Nazwa obiektu], Zwiedziła.[Numer grupy] from Zwiedziła where (Plan.[Nazwa obiektu]=zwiedziła.[nazwa obiektu]) and (Plan.[Numer grupy]=zwiedziła.[numer grupy])); Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 08

109 Przemianowanie atrybutów Przykład Nr /02 NrSprzerdawcy 0 Dokumenty NrNabywcy Data / / / / / {NrSprzedawcy} (Dokumenty) {NrNabywcy} (Dokumenty) ) ta nazwa powinna być wspólna select NrNabywcy as Nr from Dokumenty where NrNabywcy<>0 union select NrSprzedawcy as Nr from Dokumenty where NrSprzedawcy<>0; Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 09

110 Przykład 2 SELECT DISTINCT Osoba.Imię AS Osoba, Osoba_.Imię AS Rodzic, Osoba_2.Imię AS Dziadek, Osoba_2.ImięRodzica AS Pradziadek FROM (Osoba INNER JOIN Osoba AS Osoba_ ON Osoba.ImięRodzica = Osoba_.Imię) INNER JOIN Osoba AS Osoba_2 ON Osoba_.ImięRodzica = Osoba_2.Imię; Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 0

111 Przykłady Znaleźć towary, które były przez Naszą firmę sprzedawane klientom z Wrocławia i nie były sprzedawane klientom z województwa dolnośląskiego (spoza Wrocławia). Towary sprzedane we Wrocławiu: select distinct PozycjeDokumentu.SmbTow from (((PozycjeDokumentu inner join Dokumenty on PozycjeDokumentu.NrFaktury = Dokumenty.NrFaktury and PozycjeDokumentu.NrSprzedawcy = Dokumenty.NrSprzedawcy) inner join Firmy on Firmy.Nr=Dokumenty.NrNabywcy) inner join Miejscowości on Firmy.KodMjc=Miejscowości.Kod) where Dokumenty.NrSprzedawcy = 0 and Miejscowości.Nazwa="Wrocław" Towary sprzedane na Dolnym Śląsku, ale nie we Wrocławiu: select distinct PozycjeDokumentu.SmbTow from (((PozycjeDokumentu inner join Dokumenty on PozycjeDokumentu.NrFaktury = Dokumenty.NrFaktury and PozycjeDokumentu.NrSprzedawcy = Dokumenty.NrSprzedawcy) inner join Firmy on Firmy.Nr=Dokumenty.NrNabywcy) inner join Miejscowości on Firmy.KodMjc=Miejscowości.Kod) where Dokumenty.NrSprzedawcy = 0 and Miejscowości.Nazwa<>"Wrocław" and Miejscowości.KodWoj="DL" Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL

112 select TTT.* from (select distinct PozycjeDokumentu.SmbTow from (((PozycjeDokumentu inner join Dokumenty on PozycjeDokumentu.NrFaktury = Dokumenty.NrFaktury and PozycjeDokumentu.NrSprzedawcy = Dokumenty.NrSprzedawcy) inner join Firmy on Firmy.Nr=Dokumenty.NrNabywcy) inner join Miejscowości on Firmy.KodMjc=Miejscowości.Kod) where Dokumenty.NrSprzedawcy = 0 and Miejscowości.Nazwa="Wrocław") as TTT where not exists (select distinct PozycjeDokumentu.SmbTow from (((PozycjeDokumentu inner join Dokumenty on PozycjeDokumentu.NrFaktury = Dokumenty.NrFaktury and PozycjeDokumentu.NrSprzedawcy = Dokumenty.NrSprzedawcy) inner join Firmy on Firmy.Nr=Dokumenty.NrNabywcy) inner join Miejscowości on Firmy.KodMjc=Miejscowości.Kod) where Dokumenty.NrSprzedawcy = 0 and Miejscowości.Nazwa<>"Wrocław" and Miejscowości.KodWoj="DL" and TTT.SmbTow= PozycjeDokumentu.SmbTow); Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 2

113 Dopełnienie (różnica) a selekcja z zaprzeczeniem Przypadek wiele do jeden (n:) Przypadek wiele do wielu (n:m) Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 3

114 Przypadek wiele do jeden (n:) Miejscowości Województwa WP Miejscowości KodWoj= DL (Miejscowości) KodWoj<> DL (Miejscowości) DL SL PM Znajdź miejscowości z województw innych niż DL {,2,3,7,8,9,0,,2} odpowiedź prawidłowa {,2,3,7,8,9,0,,2} odpowiedź prawidłowa Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 4

115 Przypadek wiele do wielu (n:m) Firmy Towary Śledzie Zupa Pasztet Chipsy Znajdź firmy które nie kupiły Pasztet Firmy Nazwa= Pasztet (Kupowały) Nazwa<> Pasztet (Kupowały) {,2,3,4,5,6, 0, 2} odpowiedź prawidłowa {,2,3,4,5,6,8,9,0,,2} odpowiedź błędna Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 5

116 Przypadek wiele do wielu (n:m) Firmy Towary Śledzie Zupa Pasztet Chipsy Nazwa= Pasztet (Kupowały) Nazwa= Zupa (Kupowały) {7,8,9,} {2,4,5,6,8} = {7,9,} odpowiedź prawidłowa Nazwa= Pasztet and Nazwa<> Zupa (Kupowały) {7, 8, 9, } odpowiedź błędna Znajdź firmy, które kupiły Pasztet, ale nigdy nie kupiły Zupy Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 6

117 4. Operacja dzielenia Dane są tabele: r(r), która będzie dzielną, s(s), która będzie dzielnikiem. Utworzymy tabelę: q(t), która będzie ilorazem. przy czym T = R S q(t) = r(r) s(s) = { t: dla każdej t s s, istnieje t r r taka, że t r [R-S]= t i t r [S] = t s } Nieformalnie: operacja dzielenia znajduje te wiersze dzielnej, które łączą się z każdym wierszem dzielnika Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 7

118 Przykład Obiekt Nazwa Adres Grupa Numer Liczność Zwiedziła Nazwa Muzeum Numer Muzeum Muzealna 0 Park zdrojowy Park zdrojowy Parkowa 2 50 Muzeum Muzeum 3 Podać, które grupy zwiedziły już każdy obiekt: Zwiedziła Obiekt Zwiedziła Nazwa Muzeum Park zdrojowy Muzeum Numer 2 Obiekt Nazwa Muzeum Park zdrojowy Adres Muzealna Parkowa Muzeum 3 {Nazwa,Numer} {Nazwa, Adres} Grupy Numer Numery grup, które w tabeli Zwiedziła łączą się z każdym obiektem Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 8

119 Przykład Obiekt Nazwa Adres Grupa Numer Liczność Zwiedziła Nazwa Muzeum Numer Muzeum Muzealna 0 Park zdrojowy Park zdrojowy Parkowa 2 50 Muzeum Muzeum 3 Podać obiekty zwiedzone już przez każdą grupę: Zwiedziła Grupa Zwiedziła Nazwa Muzeum Park zdrojowy Muzeum Muzeum Numer 2 3 Grupa Numer 2 3 Liczność {Nazwa,Numer} {Numer, Liczność} Obiekty Nazwa Muzeum Nazwy obiektów, które w tabeli Zwiedziła łączą się z każdą grupą Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 9

120 Realizacja operacji dzielenia za pomocą kwerend graficznych q = r s R-S ( r ) R-S (( R-S ( r ) s) r) r s R-S ( r ) rob ( rob s ) kwerenda tworząca tabelę rob2 kwerenda tworząca tabelę rob rob2 r rob2 r kwerenda usuwająca rob2 rob R-S (rob2) rob kwerenda usuwająca Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 20

121 SELECT symbol INTO [Tab Dzielnik] FROM Towary WHERE (Symbol='007') OR (Symbol = '009') OR (Symbol = '059'); SELECT DISTINCT NrNabywcy, SmbTow INTO [Tab Dzielna] FROM Dokumenty INNER JOIN (PozycjeDokumentu INNER JOIN [Kw Dzielnik] ON ([Tab Dzielnik].Symbol=PozycjeDokumentu.SmbTow)) ON (PozycjeDokumentu.NrSprzedawcy = Dokumenty.Nrsprzedawcy) AND (Dokumenty.NrFaktury=PozycjeDokumentu.NrFaktury); Tab Dzielnik Tab Dzielna SELECT DISTINCT NrNabywcy, Symbol INTO [Tab Iloczyn] FROM [Tab Dzielnik],[Tab Dzielna]; Tab Iloczyn DELETE DISTINCTROW [Tab Iloczyn].* FROM [Tab Dzielna] INNER JOIN [Tab Iloczyn] ON ([Tab Dzielna].NrNabywcy=[Tab Iloczyn].NrNabywcy) and ([Tab Dzielna].SmbTow=[Tab Iloczyn].Symbol); Tab Iloczyn DELETE DISTINCTROW [Tab Dzielna].* FROM [Tab Dzielna] INNER JOIN [Tab Iloczyn] ON ([Tab Dzielna].NrNabywcy=[Tab Iloczyn].NrNabywcy); Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 2

122 Realizacja operacji dzielenia w SQL select Nazwa from Zwiedziła as r where not exists (select * from Grupa where not exists ( select * from Zwiedziła as r2 where (r.nazwa=r2.nazwa) and (r2.numer=grupa.numer ))); Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 22

123 select NrNabywcy from r as r where not exists (select * from s where not exists ( select * from r as r2 where (r.nrnabywcy=r2.nrnabywcy) and (r2.smbtow=s.smbtow ))); Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 23

124 5. Operacja teta-złączenia Dane są: r(r) tabela r o schemacie R, A R s(s) tabela s o schemacie S, B S R i S nie zawierają tych samych nazw (R S = Ø) Θ {>, <, >=, <=, =, <> } - operator Teta q(r S) = r [ AΘB ] s = { t : t[r] r, t[s] s i t[a] Θ t[b] } r R A s S B v v2 t v v2 v Θ v2 Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 24

125 Przykład r A B r2 C D a2 a5 2 a5 2 a a a6 4 a6 4 a 2 a 2 r [ B > D ] r2 = A B C D a5 2 a a6 4 a5 2 a6 4 a a6 4 a 2 a 2 a Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 25

126 Przykład Grupa Nazwa Pielgrzymka Studenci Emeryci Szkoła Urząd Miejski Pafawag Liczność Autokar Numer rej WRU 3492 DW 6582 WCX 238 WWX 6745 WRA 22 DW Pojemność Podać autokary, które mogą obsłużyc poszczególne grupy turystyczne Grupa [ Liczność <= Pojemność ] Autokar select Autokar.Numer rej, Grupa.Nazwa from Autokar, Grupa where Autokar.Pojemność >= Grupa.Liczność; Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 26

127 Znaleźć firmy, które kupiły od Naszej Firmy jakikolwiek pasztet przed firmą o numerze 698. a. Wariant z dwiema kwerendami Odniesienie SELECT TOP Data FROM (Dokumenty INNER JOIN PozycjeDokumentu ON (Dokumenty.NrSprzedawcy=PozycjeDokumentu.NrSprzedawcy) AND (Dokumenty.NrFaktury=PozycjeDokumentu.NrFaktury)) INNER JOIN Towary ON PozycjeDokumentu.SmbTow=Towary.Symbol WHERE (Dokumenty.NrNabywcy=698) and Towary.Nazwa like "*Pasztet*" ORDER BY Data; SELECT DISTINCT Firmy.Nr, Firmy.Nazwa FROM Odniesienie, (Firmy INNER JOIN Dokumenty ON Firmy.Nr = Dokumenty.NrNabywcy) INNER JOIN (Towary INNER JOIN PozycjeDokumentu ON Towary.Symbol = PozycjeDokumentu.SmbTow) ON (Dokumenty.NrSprzedawcy = PozycjeDokumentu.NrSprzedawcy) AND (Dokumenty.NrFaktury = PozycjeDokumentu.NrFaktury) WHERE (((Dokumenty.NrSprzedawcy)=0) AND ((Towary.Nazwa) Like "*Pasztet*") AND ((Dokumenty.[Data])<[Odniesienie].[Data])); Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 27

128 b. Wariant z jedną kwerendą (podzapytaniem) SELECT distinct Firmy.Nr, Firmy.Nazwa FROM ((Dokumenty INNER JOIN PozycjeDokumentu ON (Dokumenty.NrSprzedawcy=PozycjeDokumentu.NrSprzedawcy) AND (Dokumenty.NrFaktury=PozycjeDokumentu.NrFaktury)) INNER JOIN Towary ON PozycjeDokumentu.SmbTow=Towary.Symbol) inner join Firmy on Dokumenty.NrNabywcy=Firmy.Nr WHERE Dokumenty.NrSprzedawcy=0 and Towary.Nazwa like "*Pasztet*" and Data <(SELECT TOP Data FROM (Dokumenty INNER JOIN PozycjeDokumentu ON (Dokumenty.NrSprzedawcy=PozycjeDokumentu.NrSprzedawcy) AND (Dokumenty.NrFaktury=PozycjeDokumentu.NrFaktury)) INNER JOIN Towary ON PozycjeDokumentu.SmbTow=Towary.Symbol WHERE (Dokumenty.NrNabywcy=698) and Towary.Nazwa like "*Pasztet*" ORDER BY Data) Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 28

129 c. Wariant z dwiema tabelami SELECT TOP Data INTO Odniesienie FROM (Dokumenty INNER JOIN PozycjeDokumentu ON (Dokumenty.NrSprzedawcy=PozycjeDokumentu.NrSprzedawcy) AND (Dokumenty.NrFaktury=PozycjeDokumentu.NrFaktury)) INNER JOIN Towary ON PozycjeDokumentu.SmbTow=Towary.Symbol WHERE (Dokumenty.NrNabywcy=698) and Towary.Nazwa like "*Pasztet*" ORDER BY Data; SELECT distinct Firmy.Nr, Firmy.Nazwa, Data INTO Wszystkie FROM ((Dokumenty INNER JOIN PozycjeDokumentu ON (Dokumenty.NrSprzedawcy=PozycjeDokumentu.NrSprzedawcy) AND (Dokumenty.NrFaktury=PozycjeDokumentu.NrFaktury)) INNER JOIN Towary ON PozycjeDokumentu.SmbTow=Towary.Symbol) inner join Firmy on Dokumenty.NrNabywcy=Firmy.Nr WHERE Dokumenty.NrSprzedawcy=0 and Towary.Nazwa like "*Pasztet*" SELECT distinct Wszystkie.Nr, Wszystkie.Nazwa FROM Odniesienie, Wszystkie WHERE Wszystkie.Data < Odniesienie.Data Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 29

130 Znaleźć firmy, które kupiły od Naszej Firmy wartościowo więcej niż firma o numerze X zadanym parametrem (seperacja obliczenia sumy). Odniesienie SELECT sum(ilość*cenanetto) AS Obrót FROM Dokumenty INNER JOIN PozycjeDokumentu ON (Dokumenty.NrFaktury=PozycjeDokumentu.NrFaktury) AND (Dokumenty.NrSprzedawcy=PozycjeDokumentu.NrSprzedawcy) WHERE Dokumenty.NrNabywcy=[Podaj numer firmy odniesienia]; Wszystkie SELECT Firmy.Nr, Firmy.Nazwa, sum(ilość*cenanetto) AS Obrót FROM (Firmy INNER JOIN Dokumenty ON Firmy.Nr=Dokumenty.NrNabywcy) INNER JOIN PozycjeDokumentu ON (Dokumenty.NrSprzedawcy=PozycjeDokumentu.NrSprzedawcy) AND (Dokumenty.NrFaktury=PozycjeDokumentu.NrFaktury) WHERE Dokumenty.NrSprzedawcy=0 GROUP BY Firmy.Nr, Firmy.Nazwa; Wynik SELECT Wszystkie.Nr, Wszystkie.Nazwa, Wszystkie.Obrót FROM Odniesienie, Wszystkie WHERE (((Wszystkie.Obrót)>[Odniesienie].[Obrót])); Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 30

131 Znaleźć firmy, których sumaryczna kwota zakupów w Naszej Firmie w sierpniu 992r. była większa niż w lipcu 992. Lipiec SELECT Firmy.Nr, Firmy.Nazwa, Sum(Ilość*CenaNetto) AS Obrót FROM (Firmy INNER JOIN Dokumenty ON Firmy.Nr = Dokumenty.NrNabywcy) INNER JOIN PozycjeDokumentu ON (Dokumenty.NrSprzedawcy = PozycjeDokumentu.NrSprzedawcy) AND (Dokumenty.NrFaktury = PozycjeDokumentu.NrFaktury) WHERE Dokumenty.NrSprzedawcy=0 AND Data Like "992-07*" GROUP BY Firmy.Nr, Firmy.Nazwa; Sierpień SELECT Firmy.Nr, Firmy.Nazwa, sum(ilość*cenanetto) AS Obrót FROM (Firmy INNER JOIN Dokumenty ON Firmy.Nr=Dokumenty.NrNabywcy) INNER JOIN PozycjeDokumentu ON (Dokumenty.NrFaktury = PozycjeDokumentu.NrFaktury) AND (Dokumenty.NrSprzedawcy =PozycjeDokumentu.NrSprzedawcy) WHERE Dokumenty.NrSprzedawcy=0 and Data Like "992-08*" GROUP BY Firmy.Nr, Firmy.Nazwa; Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 3

132 Nabywcy SELECT DISTINCT FIRMY.Nr, FIRMY.Nazwa FROM FIRMY INNER JOIN DOKUMENTY ON FIRMY.Nr = DOKUMENTY.NrNabywcy WHERE NrSprzedawcy=0; ObrotyLipca SELECT Nabywcy.Nr, Nabywcy.Nazwa, NZ(Lipiec.Obrót) AS Obroty FROM Nabywcy LEFT JOIN Lipiec ON (Nabywcy.Nazwa = Lipiec.Nazwa) AND (Nabywcy.Nr = Lipiec.Nr); ObrotySierpnia SELECT Nabywcy.Nr, Nabywcy.Nazwa, Nz(Sierpień.Obrót) AS Obroty FROM Nabywcy LEFT JOIN Sierpień ON (Nabywcy.Nr = Sierpień.Nr) AND (Nabywcy.Nazwa = Sierpień.Nazwa); Wynik SELECT ObrotyLipca.Nr, ObrotyLipca.Nazwa, ObrotyLipca.Obroty, [ObrotySierpnia].[Obroty] FROM ObrotyLipca INNER JOIN ObrotySierpnia ON (ObrotyLipca.Nr = ObrotySierpnia.Nr) AND (ObrotyLipca.Nazwa = ObrotySierpnia.Nazwa) WHERE ObrotyLipca.Obroty<[ObrotySierpnia].[Obroty]; Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 32

133 PROJEKTOWANIE TABEL Anomalie aktualizacji Dodaj towar : < 004, Mentos, 300 > Dodaj sklep : <2, Marketowa 23> Usuń towar : <003> Usuń sklep : <3> Usuń sprzedaż : <3,003,2003--*> Zmień adres sklepu : <3, Supermarketowa 3> Zmień stan towaru w magazynie : <002,220> Klucz = {NumerSklepu, SymbolTowaru, Data} Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 33

134 Anomalie aktualizacji: - niemożność wykonania operacji aktualizacji bazy danych zapewniającej utrzymanie bazy danych w stanie aktualnym; - dopuszczanie do sprzecznych aktualizacji danych, powielonych (zduplikowanych) w tabelach. Nadmiar: - nadmiar danych - wielokrotne zapisanie tych samych danych w różnych wierszach tej samej tabeli, - nadmiar czynności - wielokrotne wykonywanie tej samej czynności przy aktualizacji tabeli bazy danych. Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 34

135 Sklep {NumerSklepu,AdresSklepu} Tabela Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 35

136 Towar {SymbolTowaru,NazwaTowaru,StanMagaz} Tabela) Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 36

137 SprzedażTowaruWSklepie {NumerSklepu, SymbolTowaru,Data,IlośćSprzedana} Tabela) Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 37

138 Klucz={NumerSklepu} Klucz={SymbolTowaru} Klucz={NumerSklepu,SymbolTowaru,Data} Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 38

139 Dodaj towar : < 004, Mentos, 300 > Dodaj sklep : <2, Marketowa 23> Usuń towar : <003> Usuń sklep : <3> Usun sprzedaż : <3,003,2003--*> Zmień adres sklepu : <3, Supermarketowa 3> Zmień stan towaru w magazynie : <002,220> Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 39

140 Rozkład (dekompozycja) tabeli Dane są: - tabela r(r) - podzbiory schematu R, R2,...,Rp takie, że R R2... Rp = R Rozkładem (dekompozycją) tabeli r(r) na R, R2,...,Rp nazywamy zestaw: Przykład R (r), R2 (r),..., Rp (r) r R (r) = q A B C a b c A B C D a2 b3 c2 a b c d a3 b2 c a2 b3 c2 d2 a4 b c3 R ={A,B,C) i a3 b2 c d R2 ={C,D} R2 (r) = q2 C D a4 b c3 d3 c d c2 d2 Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 40 c3 d3

141 Operacja złączenia naturalnego Dane są: r(r) tabela r o schemacie R, s(s) tabela s o schemacie S, R i S nie muszą być rozłączne q(r S) = r s = { t : t[r] r, t[s] s } Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 4

142 Przykład r A B r2 B C a2 b a5 c2 a5 b2 a c a b a6 c4 a6 b5 a c2 a b2 r r2 = A B C a2 b c a2 b c2 a b c a b2 c2 a6 b5 c2 Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 42

143 Przykład ( iloczyn kartezjański!!! ) r A B r2 C D a2 b c5 d2 a5 b2 c d a b r r2 = A B C D a2 b c5 d2 a2 b c d a5 b2 c5 d2 a5 b2 c d a b c5 d2 a b c d Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 43

144 Rozkład tabel bez straty danych Rozkład tabeli r(r) na R, R2,...,Rp nazywamy rozkładem bez straty danych jeżeli: R (r) R2 (r)... Rp (r) = r(r) Przykład r A B C D a b c d a2 b3 c2 d2 a3 b2 c d a4 b c3 d3 R = {A,B,C) i R2 = {C,D} R (r) = q R2 (r) = q2 A B C a b c a2 b3 c2 a3 b2 c a4 b c3 Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 44 C c c2 c3 D d d2 d3

145 Przykład 2 r A B C D a b c d a2 b3 c2 d2 a3 b2 c d a4 b c3 d3 R = {A,B) i R2 = {C,D} R (r) = q A a a2 a3 a4 B b b3 b2 b R2 (r) = q2 C c D d c2 d2 R (r) R2 (r)? r(r) c3 d3 Przykład 3 R={A,C) i R2={B,C,D} Przykład 4 R={A,B) i R2={A,C,D} Przykład 5 R={A,B,C,D) i R2={D} Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 45

146 Przykład 6 tab( NrSklepu, AdresSklepu, KodTowaru, NazwaTowaru, Sprzedaż ) klucz={nrsklepu, KodTowaru} a) R={NrSklepu, AdresSklepu}, R2={NrSklepu,KodTowaru, NazwaTowaru, Sprzedaż} b) R={KodTowaru, NazwaTowaru}, R2={NrSklepu,AdresSklepu,KodTowaru, Sprzedaż} c) R={NrSklepu, KodTowaru, AdresSklepu}, R2={NrSklepu, KodTowaru, NazwaTowaru} R3={NrSklepu, KodTowaru, Sprzedaż} d) R={NrSklepu, AdresSklepu}, R2={NrSklepu, NazwaTowaru} R3={NrSklepu, Sprzedaż} R4={KodTowaru,Sprzedaż} Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 46

147 Zależności funkcyjne między danymi Dane są: - tabela r(r), R={A,A 2,...,A n } - zbiory X, Y R W tabeli r jest spełniona zależność funkcyjna X Y wtedy i tylko wtedy, gdy dla każdej wartości x X (r) liczba wierszy w X Y (r) jest równa Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 47

148 Przykład r A B C D a b c d a2 b3 c2 d2 a3 b2 c d a4 b c3 d3 Czy {C} {D}? {C,D} (r) = q C c c2 c3 D d d2 d3 Czy {C,D} {A,B}? R (r) = q A B C D a b c d a2 b3 c2 d2 a3 b2 c d a4 b c3 d3 Czy {B,C} {C,D}? {B,C,D} (r) = q B C D b c d b3 c2 d2 b2 c d b c3 d3 Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 48

149 Przykład 2 tab( NrSklepu, AdresSklepu, KodTowaru, NazwaTowaru, Sprzedaż ) klucz={nrsklepu,kodtowaru} a) czy {NrSklepu, KodTowaru} {AdresSklepu, NazwaTowaru, Sprzedaż}? b) czy {NrSklepu, KodTowaru} {NrSklepu, KodTowaru}? c) czy {NrSklepu} {AdresSklepu}? d) czy {KodTowaru} {NazwaTowaru}? e) czy {KodTowaru} {Sprzedaż}? Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 49

150 NumerSklepu AdresSklepu SymbolTowaru NazwaTowaru,StanMagaz NumerSklepu,SymbolTowaru,Data IlośćSprzedana Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 50

151 NumerSklepu,SymbolTowaru,Data AdresSklepu NumerSklepu,SymbolTowaru,Data NazwaTowaru NumerSklepu,SymbolTowaru,Data StanMagaz Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL 5

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

- Przedmiot kończy się egzaminem - Egzamin ma formę testu teoretycznego Dr inż. Ludmiła Rekuć p. 58 B4 www.ioz.pwr.wroc.pl, ludmila.rekuc@pwr.wroc.pl Dr inż. Witold Rekuć p. 57 B4 www.ioz.pwr.wroc.pl, witold.rekuc@pwr.wroc.pl - Przedmiot kończy się egzaminem - Egzamin ma formę

Bardziej szczegółowo

Operacja Teta-złączenia. v1 v1 Θ v2

Operacja Teta-złączenia. v1 v1 Θ v2 Operacja Teta-złączenia Dane są: r(r) tabela r o schemacie R, A R s(s) tabela s o schemacie S, B S R i S nie zawierają tych samych nazw (R S = Ø) Θ {>, =,

Bardziej szczegółowo

Dr inż. Witold Rekuć Katedra Badań Operacyjnych, Finansów i Zastosowań Informatyki

Dr inż. Witold Rekuć Katedra Badań Operacyjnych, Finansów i Zastosowań Informatyki Dr inż. Witold Rekuć Katedra Badań Operacyjnych, Finansów i Zastosowań Informatyki Pokój: 517/B4 E-mail: witold.rekuc@pwr.edu.pl Telefon: 71-320-23-35 www: kbo.pwr.edu.pl/pracownik/rekuc dr inż. Witold

Bardziej szczegółowo

Dr inż. Witold Rekuć Katedra Badań Operacyjnych, Finansów i Zastosowań Informatyki

Dr inż. Witold Rekuć Katedra Badań Operacyjnych, Finansów i Zastosowań Informatyki Dr inż. Witold Rekuć Katedra Badań Operacyjnych, Finansów i Zastosowań Informatyki Pokój: 57/B4 E-mail: witold.rekuc@pwr.edu.pl Telefon: 7-0--5 www: kbo.pwr.edu.pl/pracownik/rekuc dr inż. Witold Rekuć

Bardziej szczegółowo

-Wykład kończy się zaliczeniem na ocenę na podstawie kolokwium

-Wykład kończy się zaliczeniem na ocenę na podstawie kolokwium Dr inż. Ludmiła Rekuć p. 58 B4 www.ioz.pwr.wroc.pl, ludmila.rekuc@pwr.wroc.pl Dr inż. Witold Rekuć p. 57 B4 www.ioz.pwr.wroc.pl, witold.rekuc@pwr.wroc.pl -Wykład kończy się zaliczeniem na ocenę na podstawie

Bardziej szczegółowo

Krok 1. SELECT Symbol AS KS INTO Dzielnik FROM Towary WHERE (Nazwa='Orzeszki solone') OR (Nazwa = 'Zupy CHOISE') OR (Nazwa = 'Kawa BURG');

Krok 1. SELECT Symbol AS KS INTO Dzielnik FROM Towary WHERE (Nazwa='Orzeszki solone') OR (Nazwa = 'Zupy CHOISE') OR (Nazwa = 'Kawa BURG'); Zad 2 Znaleźć miejscowości, z których klienci kupili w Naszej firmie każdy z towarów: "Zupy CHOISE","Orzeszki solone", ""Kawa BURG" (niekoniecznie każdy z klientów każdy z towarów!). Krok 1. SELECT Symbol

Bardziej szczegółowo

Wprowadzenie do SQL TEMAT 3 - Zadania dodatkowe

Wprowadzenie do SQL TEMAT 3 - Zadania dodatkowe Wprowadzenie do SQL TEMAT 3 - Zadania dodatkowe 1. Wyselekcjonować firmy z Wrocławia lub Krakowa, którym Nasza firma sprzedała cokolwiek w sierpniu 1992 (użyj funkcji Year i Month). SELECT DISTINCT FIRMY.Nr,

Bardziej szczegółowo

Podstawy języka SQL. SQL Structured Query Languagestrukturalny

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

Bardziej szczegółowo

Pawel@Kasprowski.pl Bazy danych. Bazy danych. Podstawy języka SQL. Dr inż. Paweł Kasprowski. pawel@kasprowski.pl

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

Bardziej szczegółowo

Model relacyjny. Wykład II

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

Bardziej szczegółowo

Bazy danych. Dr inż. Paweł Kasprowski

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

Bardziej szczegółowo

Model relacyjny. Wykład II

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

Bardziej szczegółowo

Wprowadzenie do SQL TEMAT 4 - Zadania dodatkowe

Wprowadzenie do SQL TEMAT 4 - Zadania dodatkowe Wprowadzenie do SQL TEMAT 4 - Zadania dodatkowe 1. Znaleźć firmy, z którymi nie była przeprowadzona żadna transakcja. (RÓŻNICA) Krok 1: utworzenie tabeli BEZ_TRANSAKCJI będącej kopią tabeli FIRMY i w której

Bardziej szczegółowo

Wprowadzenie do SQL. Instrukcja laboratoryjna. Ludmiła Rekuć, Witold Rekuć

Wprowadzenie do SQL. Instrukcja laboratoryjna. Ludmiła Rekuć, Witold Rekuć Wprowadzenie do SQL Instrukcja laboratoryjna Ludmiła Rekuć, Witold Rekuć Wrocław, 18.02.2013 Spis treści Temat 1. System zarządzania bazą danych, baza danych i jej składowe. Zakładanie tabel - definiowanie

Bardziej szczegółowo

1 Wstęp do modelu relacyjnego

1 Wstęp do modelu relacyjnego Plan wykładu Model relacyjny Obiekty relacyjne Integralność danych relacyjnych Algebra relacyjna 1 Wstęp do modelu relacyjnego Od tego się zaczęło... E. F. Codd, A Relational Model of Data for Large Shared

Bardziej szczegółowo

Wprowadzenie do SQL. Instrukcja laboratoryjna

Wprowadzenie do SQL. Instrukcja laboratoryjna Wprowadzenie do SQL Instrukcja laboratoryjna Ludmiła Rekuć, Witold Rekuć Wrocław, 2013-02-11 Spis treści Temat 1. System zarządzania bazą danych, baza danych i jej składowe. Zakładanie tabel - definiowanie

Bardziej szczegółowo

Wykład 5. SQL praca z tabelami 2

Wykład 5. SQL praca z tabelami 2 Wykład 5 SQL praca z tabelami 2 Wypełnianie tabel danymi Tabele można wypełniać poprzez standardową instrukcję INSERT INTO: INSERT [INTO] nazwa_tabeli [(kolumna1, kolumna2,, kolumnan)] VALUES (wartosc1,

Bardziej szczegółowo

Tworzenie tabel. Bazy danych - laboratorium, Hanna Kleban 1

Tworzenie tabel. Bazy danych - laboratorium, Hanna Kleban 1 Tworzenie tabel Tabela podstawowa struktura, na której zbudowana jest relacyjna baza danych. Jest to zbiór kolumn (atrybutów) o ustalonych właściwościach, w których przechowuje się dane. Dane te są reprezentowane

Bardziej szczegółowo

Autor: Joanna Karwowska

Autor: Joanna Karwowska Autor: Joanna Karwowska Klucz podstawowy PRIMARY KEY Klucz kandydujący UNIQUE Klucz alternatywny - klucze kandydujące, które nie zostały wybrane na klucz podstawowy Klucz obcy - REFERENCES Tworząc tabelę,

Bardziej szczegółowo

Widok Connections po utworzeniu połączenia. Obszar roboczy

Widok Connections po utworzeniu połączenia. Obszar roboczy Środowisko pracy 1. Baza danych: Oracle 12c - Serwer ELARA - Konta studenckie, dostęp także spoza uczelni - Konfiguracja: https://e.piotrowska.po.opole.pl/index.php?option=conf 2. Środowisko: SQL Developer

Bardziej szczegółowo

Paweł Rajba pawel@ii.uni.wroc.pl http://www.itcourses.eu/

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,

Bardziej szczegółowo

ACESS- zadania z wykorzystaniem poleceń SQL

ACESS- zadania z wykorzystaniem poleceń SQL ACESS- zadania z wykorzystaniem poleceń SQL Dane są relacje o schematach: Pracownik ( (nr integer, nazwisko text(12), etat text(10), szef integer, pracuje_od date, placa_pod Currency, placa_dod Currency,

Bardziej szczegółowo

Konstruowanie Baz Danych SQL UNION, INTERSECT, EXCEPT

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

Bardziej szczegółowo

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

PRZESTRZENNE BAZY DANYCH WYKŁAD 2 PRZESTRZENNE BAZY DANYCH WYKŁAD 2 Baza danych to zbiór plików, które fizycznie przechowują dane oraz system, który nimi zarządza (DBMS, ang. Database Management System). Zadaniem DBMS jest prawidłowe przechowywanie

Bardziej szczegółowo

Technologie baz danych

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

Bardziej szczegółowo

2010-10-21 PLAN WYKŁADU BAZY DANYCH MODEL DANYCH. Relacyjny model danych Struktury danych Operacje Integralność danych Algebra relacyjna HISTORIA

2010-10-21 PLAN WYKŁADU BAZY DANYCH MODEL DANYCH. Relacyjny model danych Struktury danych Operacje Integralność danych Algebra relacyjna HISTORIA PLAN WYKŁADU Relacyjny model danych Struktury danych Operacje Integralność danych Algebra relacyjna BAZY DANYCH Wykład 2 dr inż. Agnieszka Bołtuć MODEL DANYCH Model danych jest zbiorem ogólnych zasad posługiwania

Bardziej szczegółowo

INFORMATYKA GEODEZYJNO- KARTOGRAFICZNA Relacyjny model danych. Relacyjny model danych Struktury danych Operacje Oganiczenia integralnościowe

INFORMATYKA GEODEZYJNO- KARTOGRAFICZNA Relacyjny model danych. Relacyjny model danych Struktury danych Operacje Oganiczenia integralnościowe Relacyjny model danych Relacyjny model danych Struktury danych Operacje Oganiczenia integralnościowe Charakterystyka baz danych Model danych definiuje struktury danych operacje ograniczenia integralnościowe

Bardziej szczegółowo

Przestrzenne bazy danych Podstawy języka SQL

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

Bardziej szczegółowo

Wykład 8. SQL praca z tabelami 5

Wykład 8. SQL praca z tabelami 5 Wykład 8 SQL praca z tabelami 5 Podzapytania to mechanizm pozwalający wykorzystywać wyniki jednego zapytania w innym zapytaniu. Nazywane często zapytaniami zagnieżdżonymi. Są stosowane z zapytaniami typu

Bardziej szczegółowo

Bazy danych. Plan wykładu. Zależności funkcyjne. Wykład 2: Relacyjny model danych - zależności funkcyjne. Podstawy SQL.

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

Bardziej szczegółowo

SELECT * FROM tabela WHERE warunek wybiera dane spełniające podany warunek

SELECT * FROM tabela WHERE warunek wybiera dane spełniające podany warunek SELECT SELECT kolumna1, kolumna2,, kolumnan FROM tabela wybrane kolumny SELECT * FROM tabela wszystkie kolumny select * from Orders select CustomerID, CompanyName, Country from Customers WHERE SELECT *

Bardziej szczegółowo

Systemy GIS Tworzenie zapytań w bazach danych

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

Bardziej szczegółowo

Wstęp 5 Rozdział 1. Podstawy relacyjnych baz danych 9

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

Bardziej szczegółowo

Podstawy języka SQL. standardy SQL formułowanie zapytań operacje na strukturach danych manipulowanie danymi. Bazy danych s.5-1

Podstawy języka SQL. standardy SQL formułowanie zapytań operacje na strukturach danych manipulowanie danymi. Bazy danych s.5-1 Podstawy języka SQL standardy SQL formułowanie zapytań operacje na strukturach danych manipulowanie danymi Bazy danych s.5-1 Język SQL SQL (ang. Structured Query Language, strukturalny język zapytań) język

Bardziej szczegółowo

Grupa kursów: Wykład Ćwiczenia Laboratorium Projekt Seminarium 15 30

Grupa kursów: Wykład Ćwiczenia Laboratorium Projekt Seminarium 15 30 Zał. nr 4 do ZW 33/01 WYDZIAŁ INFORMATYKI I ZĄRZADZANIA KARTA PRZEDMIOTU Nazwa w języku polskim: Wprowadzenie do SQL Nazwa w języku angielskim: Introduction to SQL Kierunek studiów (jeśli dotyczy): Zarządzanie

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Autor: Joanna Karwowska

Autor: Joanna Karwowska Autor: Joanna Karwowska Jeśli pobieramy dane z więcej niż jednej tabeli, w rzeczywistości wykonujemy tak zwane złączenie. W SQL istnieją instrukcje pozwalające na formalne wykonanie złączenia tabel - istnieje

Bardziej szczegółowo

Tadeusz Pankowski www.put.poznan.pl/~tadeusz.pankowski. Relacyjne bazy danych. są podstawą zachodniej cywilizacji

Tadeusz Pankowski www.put.poznan.pl/~tadeusz.pankowski. Relacyjne bazy danych. są podstawą zachodniej cywilizacji Relacyjne bazy danych Tadeusz Pankowski www.put.poznan.pl/~tadeusz.pankowski 1 Model danych Relacyjne bazy danych są podstawą zachodniej cywilizacji 3 Model danych: Aspekt strukturalny: Zbiór struktur

Bardziej szczegółowo

Wykład 05 Bazy danych

Wykład 05 Bazy danych Wykład 05 Bazy danych Tabela składa się z: Kolumn Wierszy Wartości Nazwa Wartości Opis INT [UNSIGNED] -2^31..2^31-1 lub 0..2^32-1 Zwykłe liczby całkowite VARCHAR(n) n = długość [1-255] Łańcuch znaków o

Bardziej szczegółowo

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

Bardziej szczegółowo

Instrukcja CREATE TABLE

Instrukcja CREATE TABLE Podstawy języka SQL 2 Instrukcja CREATE TABLE CREATE TABLE tabela (pole_1 typ [(rozmiar)] [NOT NULL] [indeks_1] [, pole_2 typ [(rozmiar)] [NOT NULL] [indeks_2] [,...]] [, CONSTRAINT indeks_wielopolowy

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Wykład 6. SQL praca z tabelami 3

Wykład 6. SQL praca z tabelami 3 Wykład 6 SQL praca z tabelami 3 Łączenie wyników zapytań Język SQL zawiera mechanizmy pozwalające na łączenie wyników kilku pytań. Pozwalają na to instrukcje UNION, INTERSECT, EXCEPT o postaci: zapytanie1

Bardziej szczegółowo

Egzamin / zaliczenie na ocenę* 0,5 0,5

Egzamin / zaliczenie na ocenę* 0,5 0,5 Zał. nr 4 do ZW 33/01 WYDZIAŁ INFORMATYKI I ZARZĄDZANIA KARTA PRZEDMIOTU Nazwa w języku polskim: Technologia przetwarzania danych Nazwa w języku angielskim: Data processing technology Kierunek studiów

Bardziej szczegółowo

Wykład 2. Relacyjny model danych

Wykład 2. Relacyjny model danych Wykład 2 Relacyjny model danych Wymagania stawiane modelowi danych Unikanie nadmiarowości danych (redundancji) jedna informacja powinna być wpisana do bazy danych tylko jeden raz Problem powtarzających

Bardziej szczegółowo

Autor: Joanna Karwowska

Autor: Joanna Karwowska Autor: Joanna Karwowska SELECT [DISTINCT] FROM [WHERE ] [GROUP BY ] [HAVING ] [ORDER BY ] [ ] instrukcja może

Bardziej szczegółowo

CREATE DATABASE ksiegarnia_internetowa DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

CREATE DATABASE ksiegarnia_internetowa DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci; Zestaw ćwiczeń1 Dzięki DDL (Data Definition Language) można operować na strukturach, w których dane są przechowywane czyli np. dodawać, zmieniać i kasować tabele lub bazy. Najważniejsze polecenia tej grupy

Bardziej szczegółowo

Grupowanie i funkcje agregujące

Grupowanie i funkcje agregujące Grupowanie i funkcje agregujące Zadanie 1. Stwórz odpowiednią tabelę Test_agr i wprowadź odpowiednie rekordy tak, aby wynik zapytania SELECT AVG(kol) avg_all, AVG(DISTINCT kol) avg_dist, COUNT(*) count_gw,

Bardziej szczegółowo

Bazy danych - wykład wstępny

Bazy danych - wykład wstępny Bazy danych - wykład wstępny Wykład: baza danych, modele, hierarchiczny, sieciowy, relacyjny, obiektowy, schemat logiczny, tabela, kwerenda, SQL, rekord, krotka, pole, atrybut, klucz podstawowy, relacja,

Bardziej szczegółowo

Bazy danych 7. SQL podstawy

Bazy danych 7. SQL podstawy Bazy danych 7. SQL podstawy P. F. Góra http://th-www.if.uj.edu.pl/zfs/gora/ semestr letni 2005/06 Structured Query Language Używane standardy: SQL92 SQL99 SQL:2003 Żaden dostawca nie jest w pełni zgodny

Bardziej szczegółowo

8.9. Język SQL Kwerenda wybierająca w języku SQL

8.9. Język SQL Kwerenda wybierająca w języku SQL Rozdział 8 t Bazy danych program Access Program Access włączy wyłączoną zawartość, a baza danych zostanie ponownie otwarta jako w pełni funkcjonalna. W przeciwnym razie wyłączone składniki nie będą działać.

Bardziej szczegółowo

Relacyjne bazy danych. Podstawy SQL

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.

Bardziej szczegółowo

Język SQL, zajęcia nr 1

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

Bardziej szczegółowo

SQL (ang. Structured Query Language)

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

Bardziej szczegółowo

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

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)

Bardziej szczegółowo

Wstęp Wprowadzenie do BD Podstawy SQL. Bazy Danych i Systemy informacyjne Wykład 1. Piotr Syga

Wstęp Wprowadzenie do BD Podstawy SQL. Bazy Danych i Systemy informacyjne Wykład 1. Piotr Syga Bazy Danych i Systemy informacyjne Wykład 1 Piotr Syga 09.10.2017 Ogólny zarys wykładu Podstawowe zapytania SQL Tworzenie i modyfikacja baz danych Elementy dynamiczne, backup, replikacja, transakcje Algebra

Bardziej szczegółowo

Aspekty aktywne baz danych

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ć

Bardziej szczegółowo

Bazy Danych. SQL Podstawy języka III: powtórzenie. Krzysztof Regulski WIMiIP, KISiM, B5, pok. 408

Bazy Danych. SQL Podstawy języka III: powtórzenie. Krzysztof Regulski WIMiIP, KISiM, B5, pok. 408 Bazy Danych SQL Podstawy języka III: powtórzenie Krzysztof Regulski WIMiIP, KISiM, regulski@agh.edu.pl B5, pok. 408 Modyfikacja schematu relacji Utwórz tabelę wg schematu: CREATE TABLE ODDZIAL ( numer_oddzialu

Bardziej szczegółowo

Wstęp do SQL. copyright: KGiIS WGGiOŚ AGH

Wstęp do SQL. copyright: KGiIS WGGiOŚ AGH Wstęp do SQL SQL (Structured Query Language) strukturalny język zapytań używany do tworzenia, modyfikowania baz danych oraz do umieszczania i pobierania danych z baz danych. Język SQL jest językiem deklaratywnym.

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Autor: Joanna Karwowska

Autor: Joanna Karwowska Autor: Joanna Karwowska SELECT [DISTINCT] FROM [WHERE ] [GROUP BY ] [HAVING ] [ORDER BY ] [ ] instrukcja może

Bardziej szczegółowo

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

Programowanie MSQL. show databases; - pokazanie jakie bazy danych są dostępne na koncie Programowanie MSQL show databases; - pokazanie jakie bazy danych są dostępne na koncie show databases; - wyświetlenie wszystkich baz danych na serwerze create database nazwa; - za nazwa wstawiamy wybraną

Bardziej szczegółowo

Język SQL podstawy zapytań

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

Bardziej szczegółowo

Bazy danych. Andrzej Grzybowski. Instytut Fizyki, Uniwersytet Śląski

Bazy danych. Andrzej Grzybowski. Instytut Fizyki, Uniwersytet Śląski Bazy danych Andrzej Grzybowski Instytut Fizyki, Uniwersytet Śląski Wykład 5 Strukturalny język zapytań (SQL - Structured Query Language) Algebraiczny rodowód podstawowe działania w przykładach Bazy danych.

Bardziej szczegółowo

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

Bardziej szczegółowo

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

Przykłady najlepiej wykonywać od razu na bazie i eksperymentować z nimi. Marek Robak Wprowadzenie do języka SQL na przykładzie baz SQLite Przykłady najlepiej wykonywać od razu na bazie i eksperymentować z nimi. Tworzenie tabeli Pierwsza tabela W relacyjnych bazach danych jedna

Bardziej szczegółowo

Aby uruchomić program klienta i połączyć się z serwerem, należy komendę:

Aby uruchomić program klienta i połączyć się z serwerem, należy komendę: Bazy danych. Komunikacja z serwerem Aby połączyć się z serwerem i móc wykonywać czynności związane z obsługą baz, potrzebny jest program klienta. Razem z serwerem MySQL dostępny jest działający w wierszu

Bardziej szczegółowo

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

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ł

Bardziej szczegółowo

Informatyka (5) SQL. dr inż. Katarzyna Palikowska Katedra Transportu Szynowego p. 4 Hydro

Informatyka (5) SQL. dr inż. Katarzyna Palikowska Katedra Transportu Szynowego p. 4 Hydro Informatyka (5) SQL dr inż. Katarzyna Palikowska Katedra Transportu Szynowego p. 4 Hydro katpalik@pg.gda.pl katarzyna.palikowska@wilis.pg.gda.pl Język zapytań SQL Język deklaratywny (regułowy) - SQL, ProLog,

Bardziej szczegółowo

Zasady transformacji modelu DOZ do projektu tabel bazy danych

Zasady transformacji modelu DOZ do projektu tabel bazy danych Zasady transformacji modelu DOZ do projektu tabel bazy danych A. Obiekty proste B. Obiekty z podtypami C. Związki rozłączne GHJ 1 A. Projektowanie - obiekty proste TRASA # * numer POZYCJA o planowana godzina

Bardziej szczegółowo

Bazy danych 10. SQL Widoki

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

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Relacyjne bazy danych. Podstawy SQL

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.

Bardziej szczegółowo

Dr Michał Tanaś(http://www.amu.edu.pl/~mtanas)

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

Bardziej szczegółowo

BAZY DANYCH algebra relacyjna. Opracował: dr inż. Piotr Suchomski

BAZY DANYCH algebra relacyjna. Opracował: dr inż. Piotr Suchomski BAZY DANYCH algebra relacyjna Opracował: dr inż. Piotr Suchomski Wprowadzenie Algebra relacyjna składa się z prostych, ale mocnych mechanizmów tworzenia nowych relacji na podstawie danych relacji. Hdy

Bardziej szczegółowo

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

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)

Bardziej szczegółowo

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

Bardziej szczegółowo

Bazy danych. Wykład V Kwerendy. Copyrights by Arkadiusz Rzucidło 1

Bazy danych. Wykład V Kwerendy. Copyrights by Arkadiusz Rzucidło 1 Bazy danych Wykład V Kwerendy Copyrights by Arkadiusz Rzucidło 1 Wprowadzenie Istotą bazy danych jest możliwość efektywnego wyszukiwania informacji Realizację operacji wyszukiwania zapewniają kwerendy

Bardziej szczegółowo

Bazy danych SQL Server 2005

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,

Bardziej szczegółowo

opisuje nazwy kolumn, wyrażenia arytmetyczne, funkcje nazwy tabel lub widoków warunek (wybieranie wierszy)

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

Bardziej szczegółowo

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

Język SQL. Rozdział 9. Język definiowania danych DDL, część 2. Język SQL. Rozdział 9. Język definiowania danych DDL, część 2. Ograniczenia integralnościowe, modyfikowanie struktury relacji, zarządzanie ograniczeniami. 1 Ograniczenia integralnościowe Służą do weryfikacji

Bardziej szczegółowo

Bazy danych Access KWERENDY

Bazy danych Access KWERENDY Bazy danych Access KWERENDY Obiekty baz danych Access tabele kwerendy (zapytania) formularze raporty makra moduły System baz danych MS Access Tabela Kwerenda Formularz Raport Makro Moduł Wyszukiwanie danych

Bardziej szczegółowo

Odnawialne Źródła Energii I rok. Tutorial PostgreSQL

Odnawialne Źródła Energii I rok. Tutorial PostgreSQL Tutorial PostgreSQL 1. Instalacja na własnym komputerze: a. Zainstaluj program ze strony: https://www.postgresql.org/download/ Wersja odpowiednia dla systemu operacyjnego Linux, Mac, Windows Przy pierwszym

Bardziej szczegółowo

Baza danych Uczniowie.mdb

Baza danych Uczniowie.mdb Baza danych Uczniowie.mdb Zadania: 1. Tabele: Założyć bazę danych uczniowie.mdb o strukturze danych: Uczniowie-dane - zip Uczniowie1_dane - zip uczzsbd1.mdb 1) UCZNIOWIE (NRU, nazwisko, imie) a) Wpisać

Bardziej szczegółowo

Wybór wszystkich danych: SELECT * FROM employee Wybór określonych kolumn lub wyrażeń: SELECT first_name, last_name, salary FROM employee

Wybór wszystkich danych: SELECT * FROM employee Wybór określonych kolumn lub wyrażeń: SELECT first_name, last_name, salary FROM employee Polecenie SELECT instrukcja pobierająca dane z bazy danych (z tabel, widoków) użytkownik posługujący się nią musi mieć uprawnienia do pobierania danych wynikiem zapytania jest zawsze tablica o określonych

Bardziej szczegółowo

Jerzy Nawrocki, Wprowadzenie do informatyki

Jerzy Nawrocki, Wprowadzenie do informatyki Wydział Informatyki Politechnika Poznańska jerzy.nawrocki@put.poznan.pl Baza danych Bazy danych = zorganizowana kolekcja danych Bazy danych (2) Cel Agenda Przedstawić relacyjny model baz danych Era przed-relacyjna

Bardziej szczegółowo

Wykład 4. SQL praca z tabelami 1

Wykład 4. SQL praca z tabelami 1 Wykład 4 SQL praca z tabelami 1 Typy danych Typy liczbowe Typy całkowitoliczbowe Integer types - Typ INTEGER; 32-bitowa liczba ze znakiem z zakresu -2 31 do 2 31 1 - Typ SMALLINT; typ całkowity mniejszy

Bardziej szczegółowo

Ogólny plan przedmiotu. Strony WWW. Literatura BAZY DANYCH. Materiały do wykładu: http://aragorn.pb.bialystok.pl/~gkret

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

Bardziej szczegółowo

Bazy danych - Materiały do laboratoriów VIII

Bazy danych - Materiały do laboratoriów VIII Bazy danych - Materiały do laboratoriów VIII dr inż. Olga Siedlecka-Lamch Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska 23 kwietnia 2011 roku Polecenie COMMIT i ROLLBACK Polecenie

Bardziej szczegółowo

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

Blaski i cienie wyzwalaczy w relacyjnych bazach danych. Mgr inż. Andrzej Ptasznik Blaski i cienie wyzwalaczy w relacyjnych bazach danych. Mgr inż. Andrzej Ptasznik Technologia Przykłady praktycznych zastosowań wyzwalaczy będą omawiane na bazie systemu MS SQL Server 2005 Wprowadzenie

Bardziej szczegółowo

SIECI KOMPUTEROWE I BAZY DANYCH

SIECI KOMPUTEROWE I BAZY DANYCH KATEDRA MECHANIKI I ROBOTYKI STOSOWANEJ WYDZIAŁ BUDOWY MASZYN I LOTNICTWA, POLITECHNIKA RZESZOWSKA SIECI KOMPUTEROWE I BAZY DANYCH Laboratorium DB2: TEMAT: Relacyjne bazy danych Cz. I, II Cel laboratorium

Bardziej szczegółowo

SQL DDL DML TECHNOLOGIE BAZ DANYCH. Wykład 5: Język DDL i DML. Małgorzata Krętowska

SQL DDL DML TECHNOLOGIE BAZ DANYCH. Wykład 5: Język DDL i DML. Małgorzata Krętowska SQL TECHNOLOGIE BAZ DANYCH Wykład 5: Język DDL i DML. SQL (ang. StructuredQueryLanguage) strukturalny język zapytań używany do tworzenia, modyfikowania relacyjnych baz danych oraz do umieszczania i pobierania

Bardziej szczegółowo

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

Ć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

Bardziej szczegółowo

Program wykładu. zastosowanie w aplikacjach i PL/SQL;

Program wykładu. zastosowanie w aplikacjach i PL/SQL; Program wykładu 1 Model relacyjny (10 godz.): podstawowe pojęcia, języki zapytań (algebra relacji, relacyjny rachunek krotek, relacyjny rachunek dziedzin), zależności funkcyjne i postaci normalne (BCNF,

Bardziej szczegółowo

Integralność danych Wersje języka SQL Klauzula SELECT i JOIN

Integralność danych Wersje języka SQL Klauzula SELECT i JOIN Integralność danych Wersje języka SQL Klauzula SELECT i JOIN Robert A. Kłopotek r.klopotek@uksw.edu.pl Wydział Matematyczno-Przyrodniczy. Szkoła Nauk Ścisłych, UKSW Integralność danych Aspekty integralności

Bardziej szczegółowo

Informatyka sem. III studia inżynierskie Transport 2018/19 LAB 2. Lab Backup bazy danych. Tworzenie kopii (backup) bazy danych

Informatyka sem. III studia inżynierskie Transport 2018/19 LAB 2. Lab Backup bazy danych. Tworzenie kopii (backup) bazy danych Informatyka sem. III studia inżynierskie Transport 2018/19 Lab 2 LAB 2 1. Backup bazy danych Tworzenie kopii (backup) bazy danych Odtwarzanie bazy z kopii (z backup u) 1. Pobieramy skrypt Restore 2. Pobieramy

Bardziej szczegółowo

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

Bazy danych 6. Klucze obce. P. F. Góra Bazy danych 6. Klucze obce P. F. Góra http://th-www.if.uj.edu.pl/zfs/gora/ 2018 Dygresja: Metody przechowywania tabel w MySQL Tabele w MySQL moga być przechowywane na kilka sposobów. Sposób ten (żargonowo:

Bardziej szczegółowo

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

Bardziej szczegółowo

SIECI KOMPUTEROWE I BAZY DANYCH

SIECI KOMPUTEROWE I BAZY DANYCH KATEDRA MECHANIKI I ROBOTYKI STOSOWANEJ WYDZIAŁ BUDOWY MASZYN I LOTNICTWA, POLITECHNIKA RZESZOWSKA SIECI KOMPUTEROWE I BAZY DANYCH Laboratorium DB2: TEMAT: Relacyjne bazy danych Cz. I, II Cel laboratorium

Bardziej szczegółowo

Wykład 2. SQL 1 Structured Query Lenguage

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,

Bardziej szczegółowo