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

Podobne dokumenty
Wybór EUROPEAN będzie rozpoznawał dzień przed miesiącem, natomiast US miesiąc przed dniem.

Komunikacja z bazą danych psql

Podstawy języka SQL. SQL Structured Query Languagestrukturalny

Wykład 8. SQL praca z tabelami 5

Wykład 05 Bazy danych

Język SQL, zajęcia nr 2

Pobieranie danych z wielu tabel i łączenie wyników zapytań

Bazy danych. dr inż. Arkadiusz Mirakowski

Autor: Joanna Karwowska

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

ACESS- zadania z wykorzystaniem poleceń SQL

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

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

Zadania SELECT do schematu EDS (EMP, DEPT, SALGRADE)

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

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

Bazy danych Ćwiczenia projektowe

Język SQL, zajęcia nr 1

Paweł Rajba

Zadania z SQLa (MS SQL Server)

Wprowadzenie. Tworzenie widoków

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

Przykładowa baza danych BIBLIOTEKA

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

Relacyjne bazy danych. Podstawy SQL

CREATE DATABASE ksiegarnia_internetowa DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

Tworzenie tabeli przez select CREATE TABLE PRAC2 AS SELECT P.NAZWISKO, Z.NAZWA FROM PRAC P NATURAL JOIN ZESP Z

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

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

Widok Connections po utworzeniu połączenia. Obszar roboczy

Grupowanie i funkcje agregujące

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

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

Wykład 5. SQL praca z tabelami 2

Zbiór pytań nr 2. 1 Tabela DEPARTMENTS ma następującą strukturę:

Bazy danych - Materiały do laboratoriów VIII

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

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

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

Hurtownia Świętego Mikołaja projekt bazy danych

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

Relacyjne bazy danych. Podstawy SQL

1. Połączenie z bazą danych. W wybranym edytorze tworzymy plik sqltest.py i umieszczamy w nim poniższy kod. #!/usr/bin/python3 import sqlite3

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

SQL (ang. Structured Query Language)

Wykład 6. SQL praca z tabelami 3

Bazy danych. Polecenia SQL

E.14 Bazy Danych cz. 14 SQL Podzapytania

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

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

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

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

E.14 Bazy Danych cz. 17 SQL Widoki

SIECI KOMPUTEROWE I BAZY DANYCH

SIECI KOMPUTEROWE I BAZY DANYCH

E.14 Bazy Danych cz. 13 SQL Grupowanie danych i funkcje grupujące

Technologie baz danych

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

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

Podobnie jak wywołania funkcji w innych funkcjach, zapytania możemy zagnieżdżać w innych zapytaniach. Podzapytanie musi zostać zapisane w nawiasie.

Struktura bazy danych

Jerzy Nawrocki, Wprowadzenie do informatyki

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

Bazy Danych - Instrukcja do Ćwiczenia laboratoryjnego nr 8

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

Specyfika języka SQL powoduje, że łatwiej jest najpierw wytłumaczyć, jak korzystać z funkcji grupujących, a dopiero później jak grupować dane.

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

koledzy, Jan, Nowak, ul. Niecała 8/23, , Wrocław, , ,

Modelowanie wymiarów

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

TECHNOLOGIE BAZ DANYCH

Tworzenie modelu logicznego i fizycznego danych.

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

Lista zadań nr Wyświetlić imię i nazwisko dla każdego pracownika z departamentu DEP T NO o numerze 000.

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

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

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

Tworzenie tabel. Bazy danych - laboratorium, Hanna Kleban 1

Projekt jest finansowany ze środków Unii Europejskiej, Europejskiego Funduszu Społecznego i budŝetu państwa. Studia Podyplomowe dla Nauczycieli

SQL :: Data Definition Language

Wprowadzenie do projektowania i wykorzystania baz danych Relacje

SQL praca z tabelami 4. Wykład 7

Bazy danych 10. SQL Widoki

Aspekty aktywne baz danych

Bazy danych. Dr inż. Paweł Kasprowski

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

Transakcje W poprzednich częściach instrukcje języka SQL traktowane były jak indywidualne operacje (transakcje)

Wydział Elektrotechniki, Informatyki i Telekomunikacji Instytut Informatyki i Elektroniki Instrukcja do zajęć laboratoryjnych

Baza danych Uczniowie.mdb

WPROWADZENIE DO JĘZYKA SQL

Struktura drzewa w MySQL. Michał Tyszczenko

a) ile wynosiła populacja najbardziej i najmniej ludnego z województw (oraz jakie były ich nazwy)

BAZA DANYCH SIECI HOTELI

BAZY DANYCH. CREATE TABLE dbo.wydzialy (ID INT, Akronim VARCHAR(4) NOT NULL, Wydzial VARCHAR(30) NOT NULL, CONSTRAINT Kluczyk PRIMARY KEY(ID) )

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

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

MS SQL Język definiowania danych (DDL): ćwiczenia

Systemy GIS Tworzenie zapytań w bazach danych

Autor: Joanna Karwowska

Transkrypt:

Schemat bazy danych, wczytanej z pliku create_tables.sql Relacji między tabelami klucze obce Klucz obcy jako ograniczenie dla kolumny customer_id INTEGER NOT NULL REFERENCES customer(customer_id), CONSTRAINT orderinfo_pk PRIMARY KEY(orderinfo_id)); 14 listopada 2011 Strona 1

Klucz obcy jako ograniczenie dla tabeli customer_id INTEGER NOT NULL, CONSTRAINT orderinfo_pk PRIMARY KEY(orderinfo_id), CONSTRAINT orderinfo_customer_id_fk FOREIGN KEY(customer_id) REFERENCES customer(customer_id)); Ponownie wypełniamy tabelę orderinfo (pop_orderinfo.sql) Zawartość tabeli orderinfo SELECT orderinfo_id, customer_id FROM orderinfo; Próba usunięcia rekordu customer_id = 3 z tablicy customer DELETE FROM customer WHERE customer_id =3; 14 listopada 2011 Strona 2

Próba wstawienia rekordu odnoszącego się do nieistniających wartość z tabeli customer INSERT INTO orderinfo(customer_id, date_placed, shipping) VALUES (250, '07-25-2000', 0.00); Ograniczenia dla klucza obcego DROP TABLE orderline; CREATE TABLE orderline( orderinfo_id INTEGER NOT NULL, item_id INTEGER NOT NULL, quantity INTEGER NOT NULL, CONSTRAINT orderline_pk PRIMARY KEY(orderinfo_id, item_id), CONSTRAINT orderline_orderinfo_id_fk FOREIGN KEY(orderinfo_id) REFERENCES orderinfo (orderinfo_id), CONSTRAINT orderline_item_id_fk FOREIGN KEY(item_id) REFERENCES item (item_id)); Ustawienie kluczy obcych implikuje kolejność wypełniania tabel :item, orderinfo, orderline Obsługa naruszeń integralności podczas aktualizacji i usuwania rekordów. customer_id INTEGER NOT NULL, CONSTRAINT orderinfo_pk PRIMARY KEY(orderinfo_id), CONSTRAINT orderinfo_customer_id_fk FOREIGN KEY(customer_id) REFERENCES customer(customer_id)on DELETE CASCADE); Usunięcie wiersza z tabeli customer, powoduje usunięcie wszystkich powiązanych z nim rekordów w tablicy ordeline. 14 listopada 2011 Strona 3

customer_id INTEGER NOT NULL, CONSTRAINT orderinfo_pk PRIMARY KEY(orderinfo_id), CONSTRAINT orderinfo_customer_id_fk FOREIGN KEY(customer_id) REFERENCES customer(customer_id)on DELETE SET NULL); Usunięcie wiersza z tabeli customer, powoduje wstawienie w powiązanych z nim rekordach w polu customer_id wartości NULL. DROP TABLE customer RESTRICT; Złączenia Wszystkie zamówienia złożone przez Ann Stones SELECT c.fname, o.date_placed FROM customer c, orderinfo o WHERE c.customer_id = o.customer_id AND c.fname = Ann AND c.lname = Stones ; SELECT c.fname, o.date_placed FROM customer c JOIN orderinfo o ON c.customer_id=o.customer_id WHERE c.fname = 'Ann' AND c.lname = 'Stones'; Wszystkie zamówienia złożone przez Ann Stones wraz z identyfikatorami produktów SELECT customer.fname, customer.lname, orderinfo.date_placed, orderline.item_id,orderline.quantity FROM customer, orderinfo, orderline WHERE customer.customer_id = orderinfo.customer_id AND orderinfo.orderinfo_id = orderline.orderinfo_id AND customer.fname = 'Ann' AND customer.lname = 'Stones'; SELECT customer.fname, customer.lname, orderinfo.date_placed, orderline.item_id,orderline.quantity FROM ((customer JOIN orderinfo ON customer.customer_id = orderinfo.customer_id) JOIN orderline ON orderinfo.orderinfo_id = orderline.orderinfo_id) WHERE customer.fname = 14 listopada 2011 Strona 4 'Ann' AND customer.lname = 'Stones';

Wszystkie zamówione przez Ann Stones produkty. SELECT customer.fname, customer.lname, orderinfo.date_placed, item.description, quantity FROM customer, orderinfo, orderline, item WHERE customer.customer_id = orderinfo.customer_id AND orderinfo.orderinfo_id = orderline.orderinfo_id AND orderline.item_id = item.item_id AND customer.fname = 'Ann' AND customer.lname = 'Stones'; SQL funkcje agregujące. Ilu klientów mieszka w Bingham?. SELECT COUNT(*)FROM customer WHERE town = 'Bingham'; Ilu klientów mieszka w poszczególnych miastach?. SELECT COUNT(*), town FROM customer GROUP BY town; Ilu klientów mieszka w poszczególnych miastach i ile jest tam osób o tych samych nazwiskach?. SELECT COUNT(*), lname, town FROM customer GROUP BY town, lname; Uwaga! Używanie funkcji grupującej wewnątrz klauzuli WHERE nie jest poprawne. Należy wykorzystać klauzulę HAVING Znaleźć nazwiska wszystkich klientów i miast, skąd oni pochodzą z wyjątkiem miasta Lincoln. Istotne są tylko te miasta gdzie jest więcej niż jeden klient.. SELECT lname, town FROM customer WHERE town <> 'Lincoln'; SELECT COUNT(*) AS number,lname, town FROM customer WHERE town <> 'Lincoln' GROUP BY lname, town; SELECT COUNT(*) AS number,lname, town FROM customer WHERE town <> 'Lincoln' GROUP BY lname, town HAVING COUNT(*)>1; Do ilu klientów nie znamy numeru telefonu?. 14 SELECT listopada COUNT 2011 (phone)from customer; Strona 5

Zadania Proszę rozbudować skrypt z poprzednich zajęć, tak aby tworzył tabele zgodnie ze schematem. Tabela dept powinna składać się z następujących pól: deptno numer departamentu - numeric (2,0) klucz główny; dname nazwisko departamentu - varchar(14); loc numer lokalu - varchar(13); W tabeli emp pole depno jest kluczem obcym łączący z tabelą Wypełnienie tabeli emp INSERT INTO EMP VALUES(7369,'SMITH','CLERK',7902,'17-12-1980',800,NULL,20); INSERT INTO EMP VALUES(7499,'ALLEN','SALESMAN',7698,'20-2-1981',1600,300,30); INSERT INTO EMP VALUES(7521,'WARD','SALESMAN',7698,'22-2-1981',1250,500,30); INSERT INTO EMP VALUES(7566,'JONES','MANAGER',7839,'2-4-1981',2975,NULL,20); INSERT INTO EMP VALUES(7654,'MARTIN','SALESMAN',7698,'28-9-1981',1250,1400,30); INSERT INTO EMP VALUES(7698,'BLAKE','MANAGER',7839,'1-5-1981',2850,NULL,30); INSERT INTO EMP VALUES(7782,'CLARK','MANAGER',7839,'9-6-1981',2450,NULL,10); INSERT INTO EMP VALUES(7788,'SCOTT','ANALYST',7566,date '13-JUL-87'-85,3000,NULL,20); INSERT INTO EMP VALUES(7839,'KING','PRESIDENT',NULL,'17-11-1981',5000,NULL,10); INSERT INTO EMP VALUES(7844,'TURNER','SALESMAN',7698,'8-9-1981',1500,0,30); INSERT INTO EMP VALUES(7876,'ADAMS','CLERK',7788,date '13-JUL-87'-51,1100,NULL,20); INSERT INTO EMP VALUES(7900,'JAMES','CLERK',7698,'3-12-1981',950,NULL,30); INSERT INTO EMP VALUES(7902,'FORD','ANALYST',7566,'3-12-1981',3000,NULL,20); INSERT INTO EMP VALUES(7934,'MILLER','CLERK',7782,'23-1-1982',1300,NULL,10); Wypełnienie tabeli dept INSERT INTO DEPT VALUES (10,'ACCOUNTING','NEW YORK'); INSERT INTO DEPT VALUES (20,'RESEARCH','DALLAS'); INSERT INTO DEPT VALUES (30,'SALES','CHICAGO'); INSERT INTO DEPT VALUES (40,'OPERATIONS','BOSTON'); 14 listopada 2011 Strona 6

Wypełnienie tabeli salgrade INSERT INTO SALGRADE VALUES (1,700,1200); INSERT INTO SALGRADE VALUES (2,1201,1400); INSERT INTO SALGRADE VALUES (3,1401,2000); INSERT INTO SALGRADE VALUES (4,2001,3000); INSERT INTO SALGRADE VALUES (5,3001,9999); Wykonując kolejne polecenia, proszę kwerendy zapisywać do pliku 1. Wyświetlić nazwiska i nazwy departamentów wszystkich pracowników w kolejności alfabetycznej. 2. Wyświetl nazwiska pracowników zatrudnionych w Dallas 3. Wyświetl nazwiska i pensje pracowników oraz ich klasę zaszeregowania 4. Wybierz nazwiska, pensje i klasę zaszeregowania. Pracowników(emp) których zarobki odpowiadają klasie 3 5. Wyświetl nazwiska i pensje pracowników którzy zarabiają mniej od swoich kierowników 6. Wyświetl stanowiska występujące w działach 10 i 30 7. Oblicz średni zarobek w firmie 8. Znajdź minimalne zarobki na stanowisku CLERK 9. Ilu pracowników zatrudniono w departamencie 20 10. Jakie są średnie zarobki na każdym stanowisku pracy 11. Jakie są maksymalne zarobki dla każdego stanowiska 12. Wyświetlić średnie zarobki dla departamentów zatrudniających powyżej 3 pracowników 13. Jaka jest różnica między najwyższą i najniższą pensją? 14. Ilu podwładnych ma każdy kierownik? 15. Jaka jest średnia pensja w każdej klasie zarobkowej? 16. Ilu pracowników jest w każdej klasie zarobkowej? 17. Znaleźć pracowników z pensją równą minimalnej pensji w firmie 18. Wyświetlić nazwy działów w których pracują urzędnicy (CLERK) 19. Którzy pracownicy zarabiają powyżej średniej w swoich departamentach? 20. Znaleźć departamenty w których nie ma pracowników. 14 listopada 2011 Strona 7