Pawel@Kasprowski.pl Bazy danych. Bazy danych. Zapytania SELECT. Dr inż. Paweł Kasprowski. pawel@kasprowski.pl



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

Paweł Rajba

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

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

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

Bazy danych 10. SQL Widoki

Język SQL, zajęcia nr 2

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

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

Przykładowa baza danych BIBLIOTEKA

Administracja i programowanie pod Microsoft SQL Server 2000

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

Bazy danych. Dr inż. Paweł Kasprowski

Podstawy języka SQL. SQL Structured Query Languagestrukturalny

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

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

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

Bazy danych 2. Wykład 5 Structured Query Language (SQL) c.d. DDL

Uprawnienia, role, synonimy

CREATE USER

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

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

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

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

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

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

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

ACESS- zadania z wykorzystaniem poleceń SQL

Systemowe aspekty baz

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

Instytut Mechaniki i Inżynierii Obliczeniowej fb.com/groups/bazydanychmt/

Bazy Danych i Usługi Sieciowe

Wykład 8. SQL praca z tabelami 5

Baza danych inside. Biologiczne Aplikacje Baz Danych

SQL język zapytań (query language) cz.1

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

Grupowanie i funkcje agregujące

Relacyjne bazy danych. Podstawy SQL

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

Bazy danych. dr inż. Arkadiusz Mirakowski

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

Wykład 05 Bazy danych

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

Bazy Danych - Instrukcja do Ćwiczenia laboratoryjnego nr 8

Bazy danych i usługi sieciowe

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

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

Widok Connections po utworzeniu połączenia. Obszar roboczy

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

Systemowe aspekty baz danych

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

Relacyjne bazy danych. Podstawy SQL

Język SQL, zajęcia nr 1

Tworzenie tabel. Bazy danych - laboratorium, Hanna Kleban 1

Relacji między tabelami klucze obce. Schemat bazy danych, wczytanej z pliku create_tables.sql. Klucz obcy jako ograniczenie dla kolumny

BAZA DANYCH SIECI HOTELI

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

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

Zaawansowane bazy danych i hurtownie danych studia zaoczne II stopnia, sem. I

SQL - DDL. 1 Tabele systemowe. 2 Typy danych

SQL 4 Structured Query Lenguage

Aspekty aktywne baz danych

Programowanie w SQL procedury i funkcje. UWAGA: Proszę nie zapominać o prefiksowaniu nazw obiektów ciągiem [OLIMP\{nr indeksu}] Funkcje użytkownika

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

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

TEST E.14 BAZY DANYCH

Wprowadzenie do projektowania i wykorzystania baz danych Relacje

SQL (ang. Structured Query Language)

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

Zbiór pytań nr 5. 2 Które stwierdzenie opisuje najlepiej zbiór uprawnień dostępny po wykonaniu

Przestrzenne bazy danych Podstawy języka SQL

Wykład 5. SQL praca z tabelami 2

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

kończy wysyłanie danych do pliku tworzy strukturę tabeli wyświetla opis struktury tabeli zmiana nazwy tabeli usuwanie tabeli

Laboratorium nr 4. Temat: SQL część II. Polecenia DML

Instalacja MySQL.

Ćwiczenie 14 autoryzacja

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

Język SQL. Rozdział 8. Język manipulowania danymi DML

Systemy GIS Tworzenie zapytań w bazach danych

Bazy danych 9. Klucze obce Transakcje

Bazy danych 9. Klucze obce Transakcje. P. F. Góra

Microsoft SQL Server Podstawy T-SQL

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

Bazy danych - Materiały do laboratoriów VIII

Hurtownia Świętego Mikołaja projekt bazy danych

Bazy danych i usługi sieciowe

Kowalski Marcin Wrocław, dn Jaśkiewicz Kamil Bazy Danych 1 Podstawy Projekt Temat: Baza danych do zarządzania projektami

Laboratorium Bazy danych SQL 3 1

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

LAB 3 (część 1 Projektu)

Podstawy języka T-SQL : Microsoft SQL Server 2016 i Azure SQL Database / Itzik Ben-Gan. Warszawa, Spis treści

Bazy danych 9. SQL Klucze obce Transakcje

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

Oracle11g: Wprowadzenie do SQL

Wprowadzenie. Tworzenie widoków

Wykład 2. SQL 1 Structured Query Lenguage

Autor: Joanna Karwowska

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

Transkrypt:

Bazy danych Zapytania SELECT Dr inż. Paweł Kasprowski pawel@kasprowski.pl

Przykład HAVING Podaj liczebność zespołów dla których najstarszy pracownik urodził się po 1940 select idz, count(*) from prac p group by idz having min(dataur)> 1940

Filtr na grupę Podaj nazwy zespołów w których jest więcej niż jeden pracownik o nazwisku KOWALSKI select z.idz,nazwa from zesp z join prac p on z.idz=p.idz where nazwisko='kowalski' group by z.idz,nazwa having count(*)>1

Filtr na grupę Podaj nazwiska pracowników, którzy mają średnią wypłat z projektu nr 10 większą niż 1000 select nazwisko from wyplaty w join prac p on w.idp=p.idp where idpr=10 group by p.idp,nazwisko having avg(kwota)>1000

Użycie wyrażeń ń Podaj nazwiska pracowników, dla których różnica pomiędzy najwyższą a najniższą wypłatą jest większa niż 1000 select nazwisko from wyplaty w join prac p on w.idp=p.idp group by p.idp,nazwisko having max(kwota)-min(kwota)>1000

Użycie wyrażeń ń Podaj nazwiska pracowników, dla których różnica pomiędzy najwyższą a najniższą wypłatą w projekcie nr 10 jest większa niż 1000 select nazwisko from wyplaty w join prac p on w.idp=p.idp where idpr=10 group by p.idp,nazwisko having max(kwota)-min(kwota)>1000min(kwota)>1000

Użycie wyrażeń ń Podaj nazwiska pracowników, dla których różnica pomiędzy najwyższą a najniższą wypłatą w projekcie DYSK jest większa niż 1000 select nazwisko from wyplaty w join prac p on w.idp=p.idp join projekty pr on pr.idpr=w.idpr where nazwa='dysk'' group by p.idp,nazwisko having max(kwota)-min(kwota)>1000

Zagnieżdżenia i Podaj nazwiska pracowników, którzy zarobili w sumie więcej niż 4000 select nazwisko from wyplaty w join prac p on w.idp=p.idp group by p.idp,nazwisko having sum(kwota) >4000

Zagnieżdżenia i Podaj nazwiska pracowników, którzy zarobili w sumie więcej niż pracownik MISIURA select nazwisko from wyplaty w join prac p on w.idp=p.idp group by p.idp,nazwisko having sum(kwota) >(suma zarobków MISIURY)

Zagnieżdżenia i Podaj nazwiska pracowników, którzy zarobili w sumie więcej niż pracownik MISIURA select nazwisko from wyplaty w join prac p on w.idp=p.idp group by p.idp,nazwisko having sum(kwota) >( select sum(kwota) from wyplaty w join prac p on w.idp=p.idp where nazwisko='misiura'' )

Przykłady zapytań ń (24) Podaj pracowników, którzy mają wypłatę w każdym projekcie select nazwisko from pracownicy p where not exists( select * from projekty pr where not exists( select * from wyplaty where idp = p.idp and idpr = pr.idpr)) Podwójne zagnieżdżenie!

Przykłady zapytań ń (24a) Podaj pracowników, którzy mają wypłatę w każdym projekcie liczba projektów w których mają wypłaty jest równa całkowietej liczbie projektów select nazwisko from pracownicy p join wyplaty w on p.idp=w.idp group by idp,nazwisko having count(distinct idpr)=(liczba wszyskich projektów)

Przykłady zapytań ń (24a) Podaj pracowników, którzy mają wypłatę w każdym projekcie liczba projektów w których mają wypłaty jest równa całkowietej liczbie projektów select nazwisko from pracownicy p join wyplaty w on p.idp=w.idp group by idp,nazwisko having count(distinct idpr)=(select count(*) from projekty)

Widoki (perspektywy) Wirtualne tabele oparte na zapytaniach SQL CREATE VIEW <nazwa>[<nazwy kolumn>] AS <select> Wszelkie zmiany w tabelach bazowych są od razu widoczne w widoku Widoczny jak zwykła tabela Nasz przykład: create view ildzieci as select idp, count(*) as ldz from dzieci group by idp select avg(ldz) from ildzieci

Zalety widoków Uproszczenie częstych zapytań Przyspieszenie i zapytań ń (dla widoków materializowanych) Uproszczenie ograniczenia dostępu do danych Ukrycie prawdziwej struktury bazy Lepsza kontrola aktualizacji ali acji

Aktualizacja widoków Widok do aktualizacji nie może zawierać: agregacji group by / having distinct union (Oracle aktualizuje UNION ALL) Powinien być oparty na jednej j tabeli - standard rozszerzany w niektórych serwerach (np. Oracle, SQL Server) Nieaktualizowalne widoki mogą być aktualizowane za pomocą triggerów

Więzy referencyjne Daklaracje kluczy głównych i obcych Deklaracja klucza głównego zapewnia unikalność w ramach klucza (SZBD tym się zajmuje) Deklaracja klucza obcego wiąże dany atrybut (kolumnę) z innym atrybutem w innej ą y y ( ę) y y j tabeli

Więzy referencyjne Klucze: PRIMARY KEY i FOREIGN KEY Składnia: CREATE TABLE prac( ) idp int PRIMARY KEY,..., idz int FOREIGN KEY REFERENCES zespoly(idz) [ ON DELETE RESTRICT CASCADE SET NULL ] [, ON UPDATE RESTRICT CASCADE SET NULL ]

ON DELETE RESTRICT (domyślne) nie pozwala na usunięcie, jeśli są dzieci CASCADE wraz z rodzicem usuwa wszystkie dzieci SET NULL wpisuje dzieciom NULL w pole FK

Więzy referencyjne Zapewniają spójność danych nie będzie pracownika z nieistniejącego zespołu Opisują strukturę danych i pomagają w jej analizie widać połączenia między tabelami Ułatwiają serwerowi (właściwie optymalizatorowi) wykonanie zapytań wiadomo jak będą wyglądać zapytania

Uprawnienia i Brak jednolitego standardu MySQL użytkownicy definiowani wraz z adresem (adam@domena.pl) SQL Server użytkownicy serwerowi + użytkownicy bazodanowi, schematy, role Oracle schematy, użytkownicy, role Tworzenie uzytkowników CREATE USER <username> IDENTIFIED BY <pass> Nie działa w ten sposób w SQL Server 2000, Centura itd.

Nadawanie uprawnień ń GRANT nadaje uprawnienie GRANT <upr> [ON <obiekt>] TO <user> np. grant select on prac to janek REVOKE zabiera uprawnienie REVOKE <upr> [ON <obiekt>] FROM <user> np. revoke update on prac from janek Uprawnienia do obiektów (tabel, widoków): SELECT, INSERT, UPDATE, DELETE do poleceń, np. CREATE VIEW, DBA, ALTER DATABASE dodanie WITH GRANT OPTION umożliwia delegację uprawnień

Role Rola to grupa użytkowników Użytkownik może ż należeć ż ć do wielu ról Uprawnienia dla ról określa się tak samo jak dla użytkowników Nie w każdym serwerze są dostępne (np. nie w MySQL) Dodatkowe uprawnienie: DENY DENY <upr> [ON <obiekt>] TO <user> Zabrania temu użytkownikowi/roli dostępu niezależnie od innych uprawnień

Dziękuję za uwagę Do zobaczenia... materiały dostępne pod adresem: www.kasprowski.pl pl