Zadanie 1.
Należy zaprojektować i wykonać zapytanie szukające imion studentów, którzy uczestniczyli w kursach prowadzonych przez instruktora Hatlapę I uzyskoli w grupie ocenę 5 lub wyższą. Definiując zapytanie najpierw należy uzyskać sekcje, w których instruktorem był Hatlapa. Po zapisaniu zapytania należy je poddać edycji i uwzględnić w nim złączenie tabeli Sekcja z tabelą Raport_stopnie. Do zapytania należy dodać ograniczenie w postaci kolumny stopien.
SELECT st.imie
FROM Sekcja s, Raport_stopnie rs, Student st
WHERE s.instruktor = 'Hatlapa'
SELECT st.simie INTO ##Tymczasowa
FROM Sekcja s, Raport_stopnie rs, student st
WHERE s.instruktor = 'Hatlapa'
AND s.sekcja_nr=rs.sekcja_nr
AND (rs.stopien = '5' OR rs.stopien = '6')
SELECT*
FROM ##Tymczasowa
Zadanie 2.
Używając tabeli Student, nalezy utworzyć jej duplikat o nazwie Stutab, który zawiera takie same wiersze (wskazówka: należy przyjrzeć się definicji tabeli Student, aby zapoznać się z jej kolumnami.) Tabelę Stutab należy utworzyć za pomocą instrukcji CREATE TABLE. Dane do tabeli Stutab należy wstawić przy użyciu instrukcji INSERT INTO .. SELECT
CREATE TABLE Stutab ( STNR smallint primary key,
SIMIE varchar(20),
KIER varchar(4),
GRUPA smallint,
DURODZ datetime )
INSERT INTO Stutab
SELECT *
FROM Student
Korzystając z nowo utworzonej tabeli Stutab, należy wykonać poniższe zadania.
Należy sporządzić listę imion początkujących i zaawansowanych studentów, a także wybranych przez nich kierunków
SELECT SIMIE, KIER
FROM Stutab
Nazleży wygenerować listę imion studentów, którzy wybrali informatykę (INFO)
SELECT SIMIE
FROM Stutab
WHERE KIER = 'INFO'
Należy utworzyć widok (o nazwie wstu) zawierający imiona studentów i kursy informatyczne (INFO)
CREATE VIEW wstu AS
SELECT SIMIE, KIER
FROM Stutab
WHERE KIER = 'INFO'
Należy uzyskoać listę imion studentów i kursów informatycznych zawartych w widoku wstu, uporządkowaną według imion w kolejności malejącej
SELECT SIMIE, KIER
FROM wstu
ORDER BY SIMIE DESC
Należy zmodyfikować wiersz widoku tabeli, tak aby zmianie uległ kierunek wybrany przez studenta
UPDATE wstu
SET KIER = 'ANGL'
WHERE SIMIE = 'Zyta'
Należy wyświetlić zawartość widoku. Czy wprowadzenie zmian w widoku wstu spowoduje również modyfikację danych tabeli Stutab?
Początkowo Zyta miała przypisany kierunek INFO zmieniłam na ANGL:
UPDATE wstu
SET KIER = 'ANGL'
WHERE SIMIE = 'Zyta'
Należy wyświetlić zawartość widoku
SELECT *
FROM wstu
Widok nie posiada żadnych własnych danych. Dane są przechowywane wyłącznie w tabeli użytej do utworzenia widoku. Po zastosowaniu widoku dane są dynamicznie pobierane z tabeli, czyli widoki są zależne od powiązanych z nimi tabel i zachowują się jak filtr tych tabel.
Gdy dane z tabeli ulegną zmianie, automatycznie zostanie to uwzględnione w widoku. W związku z tym widok zawsze jest aktualny. Jeśli dane zmodyfikujemy za pomocą widoku, zawartość oryginalnej tabeli również zostanie zmieniona.
Należy ponownie spróbować zmodyfikować widok, lecz tym razem zmieniając kierunek na INFOR. Oczywiście wartość ta nie będzie poprawna, ponieważ kolumna kier tabeli Stutab może przechowywać łańcuchy liczące maksymalnie 4 znaki. Czy operacja będzie możliwa? Jaki będzie efekt końcowy?
UPDATE Stutab
SET KIER = 'INFOR'
WHERE SIMIE = 'Zyta'
Zostanie wyświetlony komunikat o błędzie, lecz operacja będzie możliwa.
Zostanie obcięty ostatni znak z „INFOR”, czyli „INFO”
Za pomocą tabeli Stutab należy utworzyć lokalną tabelę tymczasową (o nazwie #stu_tymcz) zawierającą imiona studentów i kursy informatyczne (INFO)
SELECT SIMIE, KIER INTO #stu_tymcz
FROM Stutab
WHERE KIER = 'INFO'
SELECT * FROM #stu_tymcz
Należy uzyskać listę imion studentów i kierunków zawartych w tabeli #stu_tymcz uporządkowaną według imion w kolejności rosnącej
SELECT *
FROM #stu_tymcz
ORDER BY SIMIE
Należy tak zmodyfikować wiersz tabeli #stu_tab, aby zmianie uległ kierunek wybrany przez studenta.
UPDATE #stu_tymcz
SET KIER = 'ANGL'
WHERE SIMIE = 'Zyta';
Należy wyświetlić zawartość lokalnej tabeli tymczasowej. Czy wprowadzenie zmian w tabeli tymczasowej #stu_tymcz spowoduje również modyfikację danych nadrzędnej tabeli Stutab?
SELECT *
FROM #stu_tymcz
Takie działanie nie wprowadzi żadnych zmian, ponieważ dane tabel tymczasowych są statyczne i nie uwzględniają aktualizacji oryginalnej tabeli lub tabel.
Należy ponownie spróbować zmodyfikować lokalną tabelę tymczasową, lecz tym razem zmieniając kierunek na INFOR. Oczywiście wartość ta nie będzie poprawna, ponieważ kolumna kier tabeli Stutab może przechowywać łańcuchy liczące maksymalnie 4 znaki. Czy operacja będzie możliwa? Jaki będzie efekt końcowy?
UPDATE #stu_tymcz
SET KIER = 'INFOR'
WHERE SIMIE = 'Zyta'
Operacja będzie możliwa lecz ostatni znak wyrazu „INFOR” zostanie obcięty i nieuwzględniony
Za pomocą tabeli Stutab należy utworzyć globalną tabelę tymczasową (o nazwie ##gstu_tymcz) zawierającą imiona studentów i kursy informatyczne (INFO)
SELECT SIMIE, KIER INTO ##gstu_tymcz
FROM Stutab
WHERE KIER = 'INFO'
Należy uzyskać listę imion studentów i kierunków zawartych w tabeli ##gstu_tymcz uporządkowaną według imion w kolejności rosnącej
SELECT *
FROM ##gstu_tymcz
ORDER BY SIMIE
Należy tak zmodyfikować wiersz tabeli ##gstu_tab, aby zmianie uległ kierunek wybrany przez studenta.
UPDATE ##gstu_tymcz
SET KIER = 'POLS'
WHERE SIMIE = 'Zyta';
Należy wyświetlić zawartość globalnej tabeli tymczasowej. Czy wprowadzenie zmian w tabeli tymczasowej ##gstu_tymcz spowoduje również modyfikację danych nadrzędnej tabeli Stutab?
SELECT *
FROM ##gstu_tymcz
Takie działanie nie wprowadzi żadnych zmian, ponieważ dane tabel tymczasowych są statyczne i nie uwzględniają aktualizacji oryginalnej tabeli lub tabel.
Należy ponownie spróbować zmodyfikować lokalną tabelę tymczasową, lecz tym razem zmieniając kierunek na INFOR. Oczywiście wartość ta nie będzie poprawna, ponieważ kolumna kier tabeli Stutab może przechowywać łańcuchy liczące maksymalnie 4 znaki. Czy operacja będzie możliwa? Jaki będzie efekt końcowy?
UPDATE ##gstu_tymcz
SET KIER = 'INFOR'
WHERE SIMIE = 'Zyta'
Operacja będzie możliwa lecz ostatni znak wyrazu „INFOR” zostanie obcięty i nieuwzględniony
Należy utowrzyć widok dołączany (o nazwie dol_stu), w którym znajdują się imiona studentów i wybrane przez nich kursy informatyczne.
CREATE VIEW dol_stu AS
SELECT SIMIE AS [Imie], KIER [Kierunek]
FROM Stutab
WHERE KIER = 'INFO'
SELECT * FROM dol_stu
Zadanie 4.
SELECT instruktor AS [INSTRUKTOR], kurs_num AS [numer_kursu]
FROM Sekcja
WHERE kurs_num LIKE 'INFO%'
CREATE VIEW widok4 as
select instruktor AS [INSTRUKTOR], kurs_num as [numer_kursu]
from Sekcja
where kurs_num LIKE 'INFO%'
SELECT widok4.[INSTRUKTOR], widok4.[numer_kursu]
FROM widok4
WHERE widok4.[numer_kursu] LIKE 'INFO%'
SELECT widok4a.[INSTRUKTOR], widok4a.[numer_kursu]
FROM widok4a
WHERE widok4a.[numer_kursu] LIKE 'INFO%'
ORDER BY widok4a.[INSTRUKTOR] ASC