Bazy danych lab 4


Bazy danych
Połączenia tablic
Plan laboratorium
" Wprowadzenie do laboratorium.
" Iloczyn kartezjaoski.
" Połączenia równościowe.
" Połączenia naturalne.
Wprowadzenie
SELECT * FROM products;
SELECT * FROM categories;
Iloczyn kartezjaoski
SELECT ProductName, CategoryName
from products cross join categories;
ProductName CategoryName
------------------- -------------------
'Chai' 'Beverages'
'Chang' 'Condiments'
'Aniseed Syrup' 'Confections'
'Chef Anton's Cajun Seasoning' 'Dairy Products'
'Chef Anton's Gumbo Mix' 'Grains/Cereals'
'Grandma's Boysenberry Spread' 'Meat/Poultry'
'Uncle Bob's Organic Dried Pears' 'Produce'
'Seafood'
Zadanie 1
" Wyświetl wszystkie kombinacje opisów
regionów i nazw regionów
Połączenia równościowe
SELECT ProductName, CategoryName
from products A join categories B on
A.categoryID=B.CategoryID;
Zadanie 2
" Dla każdego zamówienia (tablica orders)
wyświetl nazwisko i imię pracownika (tablica
employees)
Połączenia naturalne
SELECT ProductName, CategoryName
from products A natural join categories B;
Bazy danych
Podzapytania
Plan laboratorium
" Charakterystyka ogólnej postaci zapytania z
podzapytaniem.
" Zastosowanie podzapytao wierszowych.
" Zastosowanie podzapytao tablicowych.
" Charakterystyka operatorów ANY i ALL.
" Podzapytania w klauzuli SELECT.
Podzapytanie
" Ujęte w nawiasy zapytanie, umieszczone wewnątrz
innego zapytania (tzw. zapytania zewnętrznego),
najczęściej w warunkach klauzul WHERE i HAVING,
również w SELECT i FROM (rozwiązania specyficzne).
" Ogólny schemat stosowania podzapytao:
SELECT wyrażenie_A1, &
FROM nazwa_relacji_A1
WHERE wyrażenie_A3 operator
(SELECT wyrażenie_B1
FROM nazwa_relacji_B1
WHERE ...)
ORDER BY wyrażenie_A4;
Podzapytanie wierszowe
" Zwraca zawsze co najwyżej jeden rekord,
zawierający jedną lub wiele wartości.
" Dopuszczalne zastosowanie operatorów
logicznych: =, !=, <>, >, >=, <, <=.
" Przykład: znalezd identyfikatory zamówieo, w
których zamówiono towary o najniższych
identyfikatorach
SELECT OrderID FROM order_details where
ProductID =
(select min(ProductID)
from products);
Podzapytanie wierszowe
" Zwraca zawsze co najwyżej jeden rekord,
zawierający jedną lub wiele wartości.
" Dopuszczalne zastosowanie operatorów
logicznych: =, !=, <>, >, >=, <, <=.
" Przykład: znalezd identyfikatory zamówieo, w
których zamówiono towary o najniższych
identyfikatorach
SELECT OrderID FROM order_details where
ProductID =
(select min(ProductID)
from products);
Podzapytanie wierszowe
" Zwraca zawsze co najwyżej jeden rekord,
zawierający jedną lub wiele wartości.
" Dopuszczalne zastosowanie operatorów
logicznych: =, !=, <>, >, >=, <, <=.
" Przykład: znalezd identyfikatory zamówieo, w
których zamówiono towary o najniższych
identyfikatorach
SELECT OrderID FROM order_details where
ProductID =
1
(select min(ProductID)
from products);
Podzapytanie wierszowe
" Zwraca zawsze co najwyżej jeden rekord,
zawierający jedną lub wiele wartości.
" Dopuszczalne zastosowanie operatorów
logicznych: =, !=, <>, >, >=, <, <=.
" Przykład: znalezd identyfikatory zamówieo, w
których zamówiono towary o najniższych
identyfikatorach
SELECT OrderID FROM order_details where
ProductID =
1
(select min(ProductID)
from products);
Podzapytanie tablicowe
" Zwraca zbiór rekordów zawierających jedną
lub wiele wartości.
" Dopuszczalne zastosowanie operatorów: IN,
ANY, ALL.
" Przykład: wyświetl identyfikatory zamówieo
zawierające towary o najniższych
identyfikatorach w swoich grupach
towarowych
SELECT orderid FROM order_details
where productid in
(select min(productid)
from products
group by categoryid);
SELECT orderid FROM order_details
where productid in
(select min(productid)
from products
group by categoryid);
1
SELECT orderid FROM order_details
3
where productid in
16
(select min(productid)
11
from products
22
group by categoryid);
9
7
10
1
SELECT orderid FROM order_details
3
where productid in
16
(select min(productid)
11
from products
22
group by categoryid);
9
7
10
Operatory ALL i ANY (1)
" Stosowane razem z operatorami logicznymi w
zapytaniach z podzapytaniami tablicowymi.
" Operator ANY  warunek prawdziwy jeśli jest
spełniony dla przynajmniej jednej wartości,
odczytanej przez podzapytanie.
" Operator ALL  warunek prawdziwy jeśli jest
spełniony dla wszystkich wartości,
odczytanych przez podzapytanie.
Operatory ALL i ANY (2)
" Podaj nazwę firmy i nazwisko kontaktowe
dostawcy kiedy identyfikator dostawcy jest
większy od identyfikatora dowolnego
dostawcy dostarczającego produkty w cenie
18 dolarów
select companyname, contactname from
suppliers where supplierid > ANY (select
supplierid from products where unitprice
= 18)
Operatory ALL i ANY (3)
" Podaj nazwę firmy i nazwisko kontaktowe
dostawcy kiedy identyfikator dostawcy jest
większy od identyfikatorów wszystkich
dostawców dostarczających produkty w cenie
18 dolarów
select companyname, contactname from
suppliers where supplierid > ALL (select
supplierid from products where unitprice
= 18)
Podzapytania w klauzuli SELECT
" Podzapytanie musi zwrócid dokładnie jedną
wartośd dla każdego rekordu zapytania
zewnętrznego.
" Przykład: dla każdej kategorii wyświetl nazwę
kategorii i średnią cenę towaru w danej
kategorii
Podzapytania w klauzuli SELECT
select categoryname,
(select AVG(UnitPrice)
from products a where
b.categoryid=a.categoryid)
as srednia_cena
from categories b
DML
Plan
" Wstawianie wierszy (rekordów) do tablic.
" Polecenia COMMIT i ROLLBACK.
" Modyfikowanie wierszy (rekordów) w
tablicach.
" Usuwanie wierszy (rekordów).
Wstawianie wierszy do tablic
" INSERT INTO nazwa_relacji VALUES (wartośd1 [
DEFAULT ] [ NULL ], ..., wartośdN);
" INSERT INTO categories
VALUES (9,'Test','Kategoria testowa',NULL);
Modyfikowanie wierszy w tablicach
" UPDATE nazwa_relacji
SET
atrybut1 = wartośd * DEFAULT + * NULL +,
atrybut2 = wartośd *, ...+
[ WHERE warunek ];
" update categories
SET categoryname='Test na lab' where
categoryname = 'Test'
Zadanie 3
" Zmieo ceny wszystkich produktów których
cena wyjściowa jest niższa niż 20 $ w taki
sposób, że nowa cena będzie starą ceną
powiększoną o 11 $
Usuwanie wierszy
" DELETE [ FROM ] nazwa_relacji
[ WHERE warunek ];
" delete from products
where unitprice > 40
Zadanie 4
" Usuo zamówienia, w których występują
towary o cenie jednostkowej większej od 260$
DDL
" Tworzenie tablicy.
" Typy danych.
Tworzenie tablicy
" CREATE TABLE nazwa_relacji
(nazwa_atrybutu typ (rozmiar) [DEFAULT
wartośd_domyślna],
nazwa_atrybutu typ (rozmiar) [DEFAULT
wartośd_domyślna],
....
);
" CREATE TABLE towary (
nazwa CHARACTER VARYING (100),
cena NUMERIC(10,2) DEFAULT 200,
data_wpr TIMESTAMP DEFAULT current_timestamp
);
Typy danych - łaocuchy
Typ Opis
CHARACTER(n) Typ łaocuchowy o stałej długości
CHAR(n)
CHARACTER VARYING(n) Typ łaocuchowy o zmiennej długości
CHAR VARYING(n)
VARCHAR(n)
NATIONAL CHARACTER(n) Typ łaocuchowy o stałej długości, o
NATIONAL CHAR(n) predefiniowanym narodowym zbiorze
znaków
NATIONAL CHARACTER VARYING(n) Typ łaocuchowy o zmiennej długości, o
NATIONAL CHAR VARYING(n) predefiniowanym narodowym zbiorze
NCHAR VARYING(n) znaków
NATIONAL VARCHAR(n)
Typy danych - liczby
Typ Opis
INTEGER Typ całkowitoliczbowy
INT
SMALLINT
NUMERIC(p,s) Typ liczbowy i definiowanej precyzji i skali
DECIMAL(p,s)
FLOAT(b) Typ zmiennoprzecinkowy
DOUBLE PRECISION
REAL
Typy danych  daty i czas
Typ Opis
DATE Reprezentuje daty
TIME(n) Reprezentuje czas z dokładnością do
ułamkowej części sekundy
TIMESTAMP(n) Data i czas (połączenie DATE i TIME)
INTERVAL specyfikacja Reprezentuje okres czasu
Typy danych - inne
Typ Opis
BLOB Dane binarne o dużych rozmiarach
CLOB Dane znakowe o dużych rozmiarach
Zadanie 5
" Utwórz tablicę ZWIERZETA o następujących
atrybutach
Nazwa Typ
GATUNEK Aaocuchowy o zmiennej długości (max
100 znaków)
JAJORODNY Aaocuchowy o stałej długości (1 znak) 
przechowuje wartości T lub N
LICZBA_KONCZYN Liczbowy (max 2 cyfry)
DATA_ODKRYCIA Typ reprezentujący datę


Wyszukiwarka

Podobne podstrony:
Lab cpp
lab 2
T2 Skrypt do lab OU Rozdział 6 Wiercenie 3
IE RS lab 9 overview
lab pkm 3
lab chemia korozja
lab tsp 3
Lab
Konsp Lab TK ZiIP sem3d 1st
lab Projektowanie filtrow
Lab transopt instr
lab
lab
siso semVI lab

więcej podobnych podstron