podstawy_sql.pdf

(74 KB) Pobierz
297329320 UNPDF
PodstawySQL
Opis Algebrarelacji J¦zykTransact-SQL
Wy±wietleniezawarto±ci
TRUE ( R ) SELECT * FROM R
tabeli
Sumamnogo±ciowa R[S
SELECT * FROM R
UNION
SELECT * FROM S
Sumatabel
SELECT * FROM R
UNIONALL
(mog¡ wyst¡pi¢ duplikaty)
SELECT * FROM S
SELECT * FROM R
WHERENOTEXISTS
(
Ró»nicamnogo±ciowa R ( A 1 ,A 2 ) \S ( A 1 ,A 2 )
SELECT * FROM S
WHERE R.A 1 = S.A 1
AND R.A 2 = S.A 2
)
SELECT * FROM R
WHEREEXISTS
(
Przekrójmnogo±ciowy R ( A 1 ,A 2 ) \S ( A 1 ,A 2 )
SELECT * FROM S
WHERE R.A 1 = S.A 1
AND R.A 2 = S.A 2
)
SELECT *
FROM R CROSSJOIN S
albo SELECT * FROM R, S
Projekcja A 1 ,A 3 ( R ( A 1 ,A 2 ,A 3 )) SELECTDISTINCT A 1 , A 3
FROM R
SELECT A 1 , A n − 1 , A n
FROM R
Selekcja A 1 = a _ A 2 = b ( R ( A 1 ,A 2 )) SELECT * FROM R
WHERE A 1 = a OR A 2 = b
(mog¡ wyst¡pi¢ duplikaty)
Zł¡czeniewewn¦trzne
(nale»y poda¢ warunek
R ( A 1 ,A 2 ) 1
R ( A 2 ,A 3 )
SELECT *
FROM R INNERJOIN S
zł¡czenia)
ON R.A 2 = S.A 2
Iloczynkartezja«ski R×S
Projekcjanakolumny
297329320.004.png 297329320.005.png
Opis AlgebrarelacjiJ¦zykTransact-SQL
Zł¡czeniezewn¦trzne
R ( A 1 ,A 2 )
SELECT *
+
FROM R LEFTOUTERJOIN S
1
lewostronne
R .A 2 = S .A 2
R ( A 2 ,A 3 )
ON R.A 2 = S.A 2
Zł¡czeniezewn¦trzne
R ( A 1 ,A 2 )
SELECT *
+ R .A 2 = S .A 2
R ( A 2 ,A 3 )
FROM R RIGHTOUTERJOIN S
ON R.A 2 = S.A 2
1
prawostronne
Zł¡czeniezewn¦trzne
R ( A 1 ,A 2 )
+ 1 + R .A 2 = S .A 2
R ( A 2 ,A 3 )
SELECT *
FROM R FULLOUTERJOIN S
pełne
ON R.A 2 = S.A 2
Podzielenie R ( A 1 ,A 2 ) ÷S ( A 2 )
SELECTDISTINCT R.A 1 FROM R AS alias R1
WHERENOTEXISTS
(
SELECT * FROM S
WHERENOTEXISTS
(
SELECT * FROM R AS alias R2
WHERE alias R2.A 2 = S.A 2
AND alias R2.A 1 = alias R1.A 1
)
)
albo
SELECTDISTINCT A 1 FROM R AS alias R1
WHERE
(
SELECTCOUNT (*) FROM S
) = (
SELECTCOUNT (*) FROM R AS alias R2
WHERE alias R2.A 1 = alias R1.A 1
)
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).
297329320.006.png 297329320.007.png 297329320.001.png 297329320.002.png 297329320.003.png
Zadanie1. 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 ( f nazwa argumentu g ,
f warto±¢ jak¡ zast¦powana jest warto±¢ NULL g )).
j ) List¦ studentów, którzy zdali wszystkie egzaminy.
k ) List¦ studentów, którzy zdali wszystkie egzaminy na 5.
Zadanie2. 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).
Zadanie3*. 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
Zgłoś jeśli naruszono regulamin