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