Język SQL – ciąg dalszy DML (Data Manipulation Language)

Slides:



Advertisements
Podobne prezentacje
Copyright © The OWASP Foundation Permission is granted to copy, distribute and/or modify this document under the terms of the OWASP License. The OWASP.
Advertisements

Podział i zastosowanie
Dr inż. Andrzej Szuwarzyński Dr inż. Marcin Forkiewicz
Hibernate zapytania.
Bazy danych i inżynieria oprogramowania
Bazy danych II Instrukcja SELECT Piotr Górczyński 25/08/2001.
Bazy danych - SQL.
Relacyjny model danych
Podejście relacyjne Podejście relacyjne opiera się na wykorzystaniu do przedstawiania danych modelu relacyjnego i zarządzania nimi matematycznego modelu.
Bazy danych 8. SQL podstawy P. F. Góra semestr letni 2004/05.
PHP + MySQL część II.
Język SQL ma ciekawe możliwości tworzenia zapytań
25/08/ Bazy danych II Piotr Górczyński MS Access – Action Query.
Generyczne Repozytorium Dokumentów w XML
Rozdział 2: Język bazy danych - SQL
(c) 1999, Instytut Informatyki Politechniki Poznańskiej Rozdział 2: Język bazy danych - SQL Proste zapytania.
(c) 1999, Instytut Informatyki Politechniki Poznańskiej Rozdział 9: Język manipulowania danymi DML (Data Manipulation Language)
(c) 1999, Instytut Informatyki Politechniki Poznańskiej Rozdział 4: Język bazy danych - SQL Połączenia.
(c) 1999, Instytut Informatyki Politechniki Poznańskiej Rozdział 3: Język bazy danych - SQL Funkcje grupowe.
SQL – Structured Query Language (2)
WYZWALACZE (TRIGGERY) Wyzwalacz jest specjalnym rodzajem procedury składowanej, która może być wykonana w odpowiedzi na jedną z trzech sytuacji: UPDATE.
SQL-owskie szlaki górskie
SQLDziałanie select * from tab_kredyt wyświetla wszystko z tab_kredyt select Kredytobiorca, Bank, rodzaj, data_zawarcia, klasyfikacja from tab_kredyt.
SQL select kredytobiorca,bank, rodzaj, data_zawarcia, klasyfikacja,kwota, terminzapadalnosci-data_zawarcia iledni from tab_kredyt where (terminzapadalnosci-data_zawarcia)>1095.
Zapytania SQL: wydajność i optymalizacja
Wykład 8 Wojciech Pieprzyca
BD-LAB6 Wojciech Pieprzyca
Projektowanie fizycznej bazy danych
WYKONYWANIE ZAPYTAŃ Przygotował Lech Banachowski na podstawie: 1.Raghu Ramakrishnan, Johannes Gehrke, Database Management Systems, McGrawHill, 2000 (książka.
Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego Relacyjne Bazy Danych (Oracle) Prezentacja jest współfinansowana.
Odwzorowania relacyjno-obiektowe Hibernate zapytania.
Język SQL – podstawy zapytań
Bazy Danych Wykład 1 S. Kozielski.
Relacyjny model danych
Język SQL (Structured Query Language) DDL (Data Definition Language)
Przykład włamania do aplikacji internetowej poprzez modyfikację zapytań SQL Skrypty ASP Serwer bazy danych MS SQL Server Piotr Kuźniacki BDi.
SQL ("Structured Query Language" - "Strukturalny Język Zapytań"), opracowany przez firmę IBM jest rozwinięciem języka SEQUEL (“Structured English QUEry.
OPERACJA DZIELENIA W SQL
SQL – zapytania posumowanie
SQL – Structured Query Language (3)
Przetwarzanie w oknie - nowa siła zapytań
MySQL – ODBC - ACCESS.
Wykład 4 Prowadzący: dr Paweł Drozda. Trzy typy instrukcji Wstawianie – INSERT INTO Usuwanie – DELETE FROM Aktualizacje - UPDATE dr Paweł Drozda.
Tworzenie bazy danych – mySQL
Delphi i Acad cd.. l_poz := MSpace.Count; Label3.Caption:=IntToStr(l_poz); ent:=Mspace.Item(0); for l_poz := 0 to MSpace.Count-1 do begin; ent:=Mspace.Item(l_poz);
Instrukcje: CREATE, INSERT, UPDATE, DELETE, DROP
Użytkownicy i przywileje Sesja - przykład Błędy Komunikacja międzyskryptowa Wykład 83PD Technologie internetowe.
SQL - Structured Query Language
Łączenie tabel Odpowiedzi.
SQL – część II.
Język manipulacji danymi – SQL cz. I
Temat 1: Strukturalny język zapytań SQL
1 SBD, L.Banachowski Podstawy SQL - języka relacyjnych i obiektowo-relacyjnych baz danych (SQL2, SQL'1999, Oracle) Powtórzenie wyk ł adu 3.
Wykład II Język SQL – polecenia DQL Powtórzenie wiadomości – cz. 1
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski 1 informatyka +
Bazy Danych W04: JOIN (złączenia) Wojciech St
Autor: Damian Urbańczyk
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski 1 informatyka +
Komendy SQL do pracy z danymi
Język SQL – polecenie Select
Bazy Danych Wprowadzenie
BAZY DANYCH Microsoft Access Akademia Górniczo-Hutnicza Wydział Elektrotechniki, Automatyki, Informatyki i Inżynierii Biomedycznej Katedra Automatyki i.
1 Instrukcja SELECT : SELECT[DISTINCT  ALL] {*  [wyrażenie_kolumnowe [AS nowa_nazwa]],[…]} FROMNazwaTabeli [alias],[...] [WHEREwarunek_selekcji_wierszy]
Wybieranie wierszy: 1 Warunek WHERE Rodzaje warunków: - liczbowe - liczbowe z zakresu - znakowe.
Warszawska Wyższa Szkoła Informatyki Andrzej Kuska Promotor : dr inż. Paweł Figat Konsultant : mgr inż. Andrzej Ptasznik.
Zapytania ( 3.0 ) wyrażenia zapytaniowe - querry expressions przestrzeń nazw LINQ - Language-Integrated Query 3 etapy : 1. określenie źródła danych, 2.
Podstawy SQL.
Widoki (views) - Perspektywy:
Strukturalny język zapytań SQL - historia
J2EE: Bazy danych c.d. Język zapytań EJB QL.
Zapis prezentacji:

Język SQL – ciąg dalszy DML (Data Manipulation Language) Wykład S. Kozielski

Wstawianie wierszy INSERT INTO <tablica> [(<lista kolumn>)] VALUES (<lista wartości>)   Przykład: wstawianie wierszy do tablicy: uczniowie (nazwisko, wzrost, waga, klasa) insert into uczniowie values (‘Malina’,183,79.5,3) insert into uczniowie (nazwisko,klasa) values (‘Jaworek’,1)

Wstawianie wierszy - c.d. INSERT INTO <tablica> [(<lista kolumn>)] <instrukcja SELECT>

Modyfikowanie (aktualizacja) wierszy UPDATE <tablica> SET <kolumna> = <wyrażenie>, ... [WHERE <warunek>]   Przykład: update uczniowie set wzrost = wzrost + 2 where nazwisko = ‘Malina’ update uczniowie set klasa = 3 where klasa = 2

Usuwanie wierszy DELETE FROM <tablica> [WHERE <warunek>]   Przykład: delete from uczniowie where klasa = 3

Wyszukiwanie danych SELECT <> FROM <> WHERE <> GROUP BY <> HAVING <> ORDER BY <> UNION ...

Fraza SELECT – opis uproszczony SELECT [ALL|DISTINCT]{<wyrażenie> [AS <nazwa>], ... | *}   <wyrażenie>::= <kolumna> | <alias>.<kolumna> | <kwalifikator>.<kolumna> | <wyrażenie określonego typu> | <funkcja agreująca> <kwalifikator>::= <tablica> | <perspektywa> | <synonim>

Przykłady zapytań dotyczących tablicy: Przykłady zapytań dotyczących tablicy: uczniowie (nazwisko, wzrost, waga, klasa) select * from uczniowie   select nazwisko, klasa select nazwisko, waga – (wzrost - 100) select nazwisko, waga – (wzrost - 100) as ‘nadwaga’

select max(wzrost) from uczniowie select klasa select distinct klasa Przykłady zapytań - c.d. select max(wzrost) from uczniowie   select klasa select distinct klasa

Fraza FROM – wariant bez złączeń FROM <element> [<alias>], ...   <element>::= <tablica>|<perspektywa> | <synonim>|<konstruktor tablicy>

WHERE <warunek> Fraza WHERE WHERE <warunek>

Warunki filtrujące (zwykłe) <wyrażenie> <op> <stała> <wyrażenie> <op> <wyrażenie> <op>::= =, >, >=, <, <=, !=, <>   <wyrażenie> [NOT] BETWEEN <dół> AND <góra> <wyrażenie> [NOT] IN (<lista wartości>)

Przykłady select * from uczniowie where klasa = 4   where waga – (wzrost - 100) > 10 where wzrost beetwen 178 and 183 where klasa in (1,2)

<wyrażenie> [NOT] LIKE <wzorzec tekstowy>   znaki zastępcze we wzorcu tekstowym: _ : zastępuje 1 znak, % : zastępuje 0, 1, 2, 3, ... znaków

Przykłady select * from uczniowie where nazwisko like ‘Kowalsk_’   where upper(nazwisko) like ‘KOWALSK_’ where upper(nazwisko) like ‘KOWAL%’

Warunki łączące Tablice bazy danych: Zespoły (nrz, nazwa, nrpk) Pracownicy (nrp, nazwisko, nrz, . . . ) Wypłaty (nrp, nrt, kwota) Tematy (nrt, nazwa, nrpk)

Warunki łączące select nazwisko, kwota, nrt from pracownicy, wypłaty where pracownicy.nrp = wypłaty.nr select p.nazwisko, w.kwota, w.nrt, p.nrp from pracownicy p, wypłaty w where p.nrp = w.nrp

Złączenie tabel Pracownicy Wypłaty nrp nrt kwota 2 300 3 150 1 200 nrp nazwisko adres nrz 1 Lipowski Ruda 2 Grabski Zabrze 3 Jaworek Gliwice

Pracownicy  Wypłaty nrp nazwisko adres nrz nrt kwota 2 Grabski Zabrze 1 300 3 Jaworek Gliwice 150 Lipowski Ruda 200

Pracownicy  Wypłaty  Tematy nrp nazwisko adres nrz nrt kwota nazwa kier. 2 Grabski Zabrze 1 300 Pr. przetwor. 3 Jaworek Gliwice 150 Pr. reaktora Lipowski Ruda Pr. zasilacza 200

select nazwisko, kwota, nrt from pracownicy p, wypłaty w where p.nrp = w.nrp and nrz = 4 and kwota > 2000

select distinct z.nazwa from zespoły z, pracownicy p, wypłaty w, tematy t where z.nrz = p.nrz and p.nrp = w.nrp and w.nrt = t.nrt and t.nazwa = ‘Projekt sterownika’

select p2.nazwisko from pracownicy p1, pracownicy p2 where p1.nazwisko = ‘Bukowy’ and p1.nrz = p2.nrz and p2.nazwisko <> ‘Bukowy’

select p2.nazwisko from pracownicy p1, wypłaty w, tematy t, pracownicy p2 where p1.nazwisko = ‘Grabski’ and p1.nrp = t.nrpk and t.nrt = w.nrt and w.nrp = p2.nrp

Złączenia zewnętrzne select nazwisko, kwota, nrt from pracownicy p, wypłaty w where p.nrp = w.nrp

Złączenie naturalne r (A, B, C) s (C, D) q (A, B, C, D) ————  ——— = —————   a1 b1 c1 c1 d1 a1 b1 c1 d1 a2 b2 c2 c5 d5 a4 b4 c1 d1 a3 b3 c3 a4 b4 c1

Złączenie zewnętrzne r (A, B, C) s (C, D) (+) q (A, B, C, D) ————  ———— = —————   a1 b1 c1 c1 d1 a1 b1 c1 d1 a2 b2 c2 c5 d5 a4 b4 c1 d1 a3 b3 c3 a2 b2 c2 a4 b4 c1 a3 b3 c3

Złączenia zewnętrzne select nazwisko, kwota, nrt from pracownicy p, wypłaty w where p.nrp = w.nrp (+)

Zapis złączeń w standardzie SQL-2 (SQL-92) SELECT <> FROM <rodzaj złączenia>   <rodzaj złączenia>::= <tab A> [<typ złączenia>] JOIN <tab B> <tab A> [<typ złącz.>] JOIN <tab B> USING (<kolumna>, ...) <tab A> [<typ złączenia>] JOIN <tab B> ON <warunek> <typ złączenia>::= INNER|{LEFT|RIGHT|FULL}[OUTER]

select nazwisko, kwota, nrt from pracownicy join wypłaty lub from pracownicy join wypłaty using (nrp) from pracownicy p join wypłaty w on p.nrp = w.nrp  

Złączenie zewnętrzne Zapis klasyczny select nazwisko, kwota, nrt from pracownicy p, wypłaty w where p.nrp = w.nrp (+) Zapis w SQL-2 from pracownicy p left outer join wypłaty w on p.nrp = w.nrp

Warunki filtrujące z pytaniami zagnieżdżonymi SELECT <> FROM <> WHERE <początek warunku> ( SELECT <> WHERE < . . . >)

<początek warunku>::= 1) <wyrażenie> <op> 2) <wyrażenie> <op> {ANY|ALL} 3) <wyrażenie> <op> [NOT] IN 4) [NOT] EXISTS

Baza danych: Zespoły (nrz, nazwa, nrpk) Pracownicy (nrp, nazwisko, nrz, premia) Wypłaty (nrp, nrt, kwota) Tematy (nrt, nazwa, nrpk)

ad 1) <wyrażenie> <op> select nazwisko from pracownicy where nrp = (select nrpk from zespoły where nazwa = ‘Zespół Wdrożeń’)

ad 1) <wyrażenie> <op> select nazwisko from pracownicy where nrz = 3 and premia > (select premia where nazwisko = ‘Jaworek’)

ad 2) <wyrażenie> <op> {ANY|ALL} select nazwa from tematy where nrt = any (select nrt from wypłaty)

ANY select nazwisko from pracownicy where nrp = any (select nrp from wypłaty where kwota > 2000)

ALL select nazwisko, wzrost from uczniowie where klasa = 1 and wzrost > all (select wzrost where klasa = 3)

select nazwisko from pracownicy p where 2000 < all (select kwota from wypłaty w where w.nrp = p.nrp)

ad 3) <wyrażenie> [NOT] IN select nazwa from tematy where nrt in (select nrt from wypłaty)

select nazwa from zespoły where nrz in (select nrz from pracownicy where nrp in (select nrp from wypłaty where nrt in (select nrt from tematy where nazwa = ‘Projekt sterownika’)))

ad 4) [NOT] EXISTS select nazwa from tematy t where exists (select * from wypłaty w where w.nrt = t.nrt)

select nazwisko from pracownicy p where not exists (select * from wypłaty w where w.nrp = p.nrp)

select nazwisko from pracownicy p where not exists (select * from tematy t from wypłaty w where w.nrt = t.nrt and w.nrp = p.nrp))

Funkcje agregujące SUM (<arg>) AVG (<arg>) MAX (<arg>) MIN (<arg>) COUNT (<arg>)   <arg>::= [ALL|DISTINCT]<wyrażenie> oraz COUNT(*)

select count(*) from pracownicy   select sum(kwota), avg(kwota), max(kwota) from wypłaty

select sum(kwota), avg(kwota), max(kwota) from wypłaty where nrt = 3   select sum(kwota), max(kwota), count(p.nrp) from pracownicy p, wypłaty w where p.nrp = w.nrp and nrz = 4

select max(waga - (wzost - 100)) from uczniowie   select count(nrp), count(distinct nrp), count(distinct nrt) from wypłaty

select nazwisko, wzrost from uczniowie where wzrost = (select max(wzrost) from uczniowie)

select klasa, nazwisko, wzrost from uczniowie u1 where wzrost = (select max(wzrost) from uczniowie u2 where u2.klasa = u1.klasa)

select nrp, nrt, kwota from wypłaty w1 where kwota = (select max(kwota) from wypłaty w2 where w2.nrt = w1.nrt)

Grupowanie – fraza GROUP BY select nrz, count(*) from pracownicy group by nrz

select nrt, sum(kwota), max(kwota), count(*) from wypłaty group by nrt

select nrz, sum(kwota) from pracownicy p, wypłaty w where p.nrp = w.nrp group by nrz

select nazwisko, sum(kwota) from pracownicy p, wypłaty w where p.nrp = w.nrp group by nazwisko, p.nrp

SELECT <lista kolumn 1>,<lista funkcji agr.> FROM <> WHERE <> GROUP BY <lista kolumn 2>   <lista kolumn 1>  <lista kolumn 2>

Filtrowanie grup – fraza HAVING HAVING <warunek filtrujący> select nrz, count(*) from pracownicy group by nrz having count(*) > 20 or count(*) < 5

select nazwisko, p.nrp, sum(kwota) from pracownicy p, wypłaty w where p.nrp = w.nrp group by nazwisko, p.nrp having sum(kwota) > 10000

select nazwisko, p.nrp, sum(kwota) from pracownicy p, wypłaty w where p.nrp = w.nrp group by nazwisko, p.nrp having sum(kwota) > (select sum(kwota) from pracownicy pp, wypłaty ww where pp.nrp = ww.nrp and nazwisko = ‘Jaworek’)

Konstruktor tablicy w frazie FROM SELECT <> FROM <konstruktor tablicy> select max(suma) from (select sum(kwota) as suma from wypłaty group by nrp)

Konstruktor tablicy na liście SELECT select nrp, nazwisko, (select sum(kwota) from wypłaty w where w.nrp = p.nrp) as suma from pracownicy p

Porządkowanie wyników wyszukiwania – fraza ORDER BY ORDER BY {<wyrażenie> |<nr>} [ASC|DESC], ... select * from pracownicy order by nrz, nazwisko

select nazwisko, waga–(wzrost-100), klasa from uczniowie order by klasa, waga–(wzrost–100) desc lub order by 3,2 desc

Fraza UNION (i frazy pokrewne: INTERSECT, MINUS, ...) SELECT <lista kolumn 1> FROM <> . . . UNION [ALL] SELECT <lista kolumn 2>

select nrpk from zespoły union from tematy Fraza UNION - przykład select nrpk from zespoły union from tematy

select nrpk from zespoły union all from tematy Fraza UNION - przykład select nrpk from zespoły union all from tematy

Fraza INTERSECT - przykład select nrpk from zespoły intersect from tematy

select nrpk from zespoły minus from tematy Fraza MINUS - przykład select nrpk from zespoły minus from tematy