Podstawy SQL - main5.amu.edu.pl

Transkrypt

Podstawy SQL - main5.amu.edu.pl
Podstawy SQL
Opis
Wyświetlenie zawartości
Algebra relacji
σTRUE (R)
tabeli
Język Transact-SQL
SELECT * FROM R
SELECT * FROM R
Suma mnogościowa
R∪S
UNION
SELECT * FROM S
SELECT * FROM R
Suma tabel
UNION ALL
(mogą wystąpić duplikaty)
SELECT * FROM S
SELECT * FROM R
WHERE NOT EXISTS
(
Różnica mnogościowa
R (A1 , A2 ) \ S (A1 , A2 )
SELECT * FROM S
WHERE R.A1 = S.A1
AND R.A2 = S.A2
)
SELECT * FROM R
WHERE EXISTS
(
Przekrój mnogościowy
R (A1 , A2 ) ∩ S (A1 , A2 )
SELECT * FROM S
WHERE R.A1 = S.A1
AND R.A2 = S.A2
)
SELECT *
Iloczyn kartezjański
R×S
FROM R CROSS JOIN S
albo SELECT * FROM R, S
Projekcja
πA1 ,A3 (R (A1 , A2 , A3 ))
SELECT DISTINCT A1 , A3
FROM R
Projekcja na kolumny
SELECT A1 , An−1 , An
(mogą wystąpić duplikaty)
FROM R
Selekcja
σA1 =a∨A2 =b (R (A1 , A2 ))
Złączenie wewnętrzne
(należy podać warunek
złączenia)
SELECT * FROM R
WHERE A1 = a OR A2 = b
SELECT *
R (A1 , A2 ) 1 R (A2 , A3 )
FROM R INNER JOIN S
ON R.A2 = S.A2
Opis
Algebra relacji Język Transact-SQL
Złączenie zewnętrzne
lewostronne
Złączenie zewnętrzne
prawostronne
Złączenie zewnętrzne
pełne
R (A1 , A2 )
SELECT *
+ 1R.A2 =S.A2
FROM R LEFT OUTER JOIN S
R (A2 , A3 )
ON R.A2 = S.A2
R (A1 , A2 )
SELECT *
1 +R.A2 =S.A2
FROM R RIGHT OUTER JOIN S
R (A2 , A3 )
ON R.A2 = S.A2
R (A1 , A2 )
SELECT *
+ 1 +R.A2 =S.A2
FROM R FULL OUTER JOIN S
R (A2 , A3 )
ON R.A2 = S.A2
Podzielenie R (A1 , A2 ) ÷ S (A2 )
SELECT DISTINCT R.A1 FROM R AS alias R1
WHERE NOT EXISTS
(
SELECT * FROM S
WHERE NOT EXISTS
(
SELECT * FROM R AS alias R2
WHERE alias R2.A2 = S.A2
AND alias R2.A1 = alias R1.A1
)
)
albo
SELECT DISTINCT A1 FROM R AS alias R1
WHERE
(
SELECT COUNT (*) FROM S
)=(
SELECT COUNT (*) FROM R AS alias R2
WHERE alias R2.A1 = alias R1.A1
)
Zadania
Tabele w bazie danych:
• studenci(nr indeksu, imie, nazwisko, plec, adres),
• rekrutacja(imie, nazwisko, plec, adres, punkty)
• przedmioty(symbol, nazwa, punkty),
• egzaminy(nr indeksu, przedmiot, ocena).
Zadanie 1. Napisać zapytanie SQL do bazy danych zwracające następujące informacje:
a) Listę wszystkich studentów.
b) Nazwy wszystkich przedmiotów egzaminacyjnych.
c) Listę nazw miast, z których pochodzą studenci i rekruci.
d ) Listę wszystkich studentek: imię, nazwisko, numer indeksu (w podanej kolejności).
e) Listę rekrutów (imię i nazwisko), którzy przekroczyli próg 150 punktów.
f ) Łączną listę (imię, nazwisko, indeks) „starych” studentów i „nowych” studentów (tych, którzy się
zakwalifikowali).
g) Listę wszystkich studentów, którzy wzięli udział w nowej rekrutacji.
h) Listę studentów, którzy nie zdawali jakiegokolwiek egzaminu.
i ) Listę studentów, którzy nie zaliczyli sesji (WSKAZÓWKA: funkcja ISNULL({nazwa argumentu},
{wartość jaką zastępowana jest wartość NULL})).
j ) Listę studentów, którzy zdali wszystkie egzaminy.
k ) Listę studentów, którzy zdali wszystkie egzaminy na 5.
Zadanie 2. Czy w bazie danych są błędy? Należy się zastanowić, gdzie w bazie mogą wystąpić niespójności
i jak można je wykryć (odpowiednie zapytania SQL).
Zadanie 3*. Wykonać skrypt (listę poleceń INSERT), który mógłby posłużyć do przeniesienia danych
pomiędzy bazami o tych samych tabelach: egzaminy, przedmioty, studenci i rekrutacja.
WSKAZÓWKA: Niech nią będzie poniższe zapytanie SQL:
SELECT ’przedmiot ”’, nazwa, ”’ ma’ + ’ ’ + ’symbol ”’ + symbol + ””
FROM przedmioty

Podobne dokumenty