Bazy danych – zestaw pytań
1.Co to jest SQL?
SQL to skrót oznaczający Structured Query Language (strukturalny język zapytań). -SQL to standardowy język dostępu i zarządzania bazami danych. Poprzez komendy SQL-a realizowane są m.in. takie operacje jak: *definicja i modyfikacja obiektów baz danych *dostęp i aktualizacja bazy danych *czynności administracyjne *tworzenie procedur składowanych
2.Jakie operacje wykonywane są poprzez komendy SQL-a?
Poprzez komendy SQL-a realizowane są m.in. takie operacje jak:
- definicja i modyfikacja obiektów baz danych
- dostęp i aktualizacja bazy danych
- czynności administracyjne
- tworzenie procedur składowanych
3.SQL w klasyfikacji relacyjnych języków zapytań.
Język SQL należy do grupy języków nieproceduralnych i deklaratywnych, zatem daje użytkownikowi możliwość określenia (deklaracji) potrzeb bez podawania sposobu realizacji. Problem metody rozwiązania został przerzucony na SZBD.
4.Przedstaw znane Ci formy SQL-a.
Dostęp do bazy danych realizowany jest przez język SQL w dwóch trybach:
*interaktywnym (ang. Interactive SQL)– instrukcje wprowadzane są interakcyjnie (spoza środowiska aplikacji) bezpośrednio do SZBD, który natychmiast prezentuje wyniki odpowiedzi
*zanurzonym (ang. Embedded SQL)- instrukcje umieszczone są wewnątrz konstrukcji języka programowania aplikacji na dwa sposoby:
-kod statyczny (ang. Static SQL) – stały kod tworzony przy projektowaniu aplikacji przez jej projektanta
-kod dynamiczny (ang. Dynamic SQL) – jest odpowiedzią na działanie użytkownika a nie projektanta aplikacji, zatem generowany jest w trakcie działania aplikacji
5.Zdefiniuj składniki SQL-a.
Podział funkcjonalny instrukcji SQL-a: – definiowanie i modyfikacja obiektów bazy danych – wyszukiwanie i aktualizacja bazy danych – administrowanie bazą danych.
Zbiory instrukcji poszczególnych grup funkcjonalnych stanowią odpowiednio: – język definiowania danych (ang. Data Definition Language DDL) – językmanipulowaniadanymi (ang. Data Manipulation Language DML) – językkontrolidanych (ang. Data Control Language DCL)
6.Wymień znane Ci instrukcje DML-a.
Język DML stanowi zbiór instrukcji, które operują na danych w bazy danych:
– Select – wyszukiwanie danych
– Insert – tworzenie nowego rekordu w tablicy
– Update – tworzenie lub modyfikacja danych w istniejącym rekordzie
– Delete – usunięcie rekordu w tablicy
7.Wymień znane Ci instrukcje DCL-a.
Język DCL stanowi zbiór instrukcji, które odpowiadają czynnościom administracyjnym:
– Describe – opis struktury zadanej tablicy
– Grant/Revoke – nadawanie/usuwanie uprawnień
– Connect – ustanowienie połączenia
– Commit/Rolback– zatwierdzenie/cofnięcie transakcji
– Open/Close – otwieranie/zamykanie kursora
– Execute – wykonanie przygotowanego kodu
8.Z czego składają się polecenia SQL-a?
Polecenia języka SQL składają się z dwóch typów słów: – zarezerwowanych, które stanowią integralną część języka i nie mogą być modyfikowane ani dzielone pomiędzy wierszami; słowa kluczowe zwykle pisane są wielkimi literami (SELECT, GROUP BY, CREATE VIEW itp.) – zdefiniowanych przez użytkownika, które reprezentują nazwy różnych, stworzonych przez użytkownika, obiektów pisanych zwyczajowo małymi literami
9.Wymień obiekty SQL-a.
– Database - baza danych
– Table – tablela (relacja) w bazie danych
– Column – kolumna (atrybut) tabeli
– Index – tablica indeksów do tabeli
– View – perspektywa, widok tabeli lub tabel
– Synonym – alternatywna nazwa tabeli lub widoku
– Schema – schemat, grupa powiązanych ze sobą obiektów, posiadająca nazwę i znajdująca się pod kontrolą jednego identyfikatora uprawnień
– Domena – określa typ danych, logiczne kategorie porównywalnych wartości
10. Opisz definicję danych w SQL-u.
Do utworzenia nowej tabeli służy instrukcja CREATE TABLE, która wymaga podania nazwy tabeli, wszystkich kolumn (nazwa kolumny, typ danych, opcjonalnie maksymalna długość danych w kolumnie i opcja kolumny) oraz ewentualnych opcji.
11. Scharakteryzuj tekstowy typ danych w SQL-u.
Typy tekstowe:
-CHAR (N) – pole o stałej długości N znaków (ew. uzupełniane spacjami)
-VARCHAR (N) – pole o zmiennej długości nie przekraczającej N znaków
-BIT (N) – pole o stałej długości N bitów
-BIT VARING (N) - pole o zmiennej długości nie przekraczającej N bitów
12. Scharakteryzuj liczbowy typ danych w SQL-u.
Typy liczbowe: – różniące się zakresem (zależnym od SZBD) :
*INT lub INTEGER – liczba całkowita
*BIGINT – (duża) liczba całkowita o większej liczbie cyfr
*SMALLINT – (mała) liczba całkowita o mniejszej liczbie cyfr – różniące się precyzją: *REAL lub FLOAT – liczba rzeczywista zmiennoprzecinkowa
*DOUBLE PRECISION - liczba zmiennoprzecinkowa
*DECIMAL(M,N) lub NUMERIC(M,N) – liczba stałoprzecinkowa o M cyfrach znaczących i N miejscach po przecinku
13. Co to jest Interval?
INTERVAL – typ daty i godziny do zapisu przedziałów czasowych;
14. Przedstaw opcje kolumn dostępne w instrukcjach DDL-a.
*NULL/NOT NULL – pole w tej kolumnie może/nie może przyjmować wartości pustej (NULL) *UNIQUE – wartość pola musi być unikatowa w kolumnie
*PRIMARY KEY – kolumna stanowi klucz główny tabeli
*REFERENCES [nazwa_tablicy] – kolumna stanowi klucz obcy wskazujący na podaną tablicę
*DEFAULT wartość_domyślna – wszystkie pola kolumny wypełnione są wartością domyślną
*[NOT] CASE-SENSITIVE – określa, czy przy porównywaniu wartości w kolumnie znakowej mają być rozróżniane małe i wielkie litery
*AUTOINCREMENT – automatyczne nadawanie wartości pola w kolumnie podczas wstawianie nowego wiersza
*FORMAT format –wartości pól w kolumnie wyświetlane będą w podanym formacie *LABEL etykieta – nadanie etykiety (nagłówka) kolumnie przy wyświetlaniu wartości jej pól UWAGA! Opcja PRIMARY KEY automatycznie włącza opcje NOT NULL i UNIQUE!
15. Jakie znasz opcje modyfikacji schematu?
Do modyfikacji schematu tablicy służy instrukcja ALTER TABLE, która wymaga podania nazwy tablicy oraz opcji modyfikacji (dodanie kolumny, usunięcie kolumny lub modyfikacja kolumny). Opcje modyfikacji schematu dotyczą modyfikacji kolumn w zadanej tablicy:
– ADD COLUMN nazwa_kolumnytyp_danych [(długość) opcja_kol] - dodanie nowej kolumny do tablicy wymaga podanie parametrów i opcji kolumny takich jak przy tworzeniu tablicy
– DROP COLUMN nazwa_kolumny - usunięcie kolumny o podanej nazwie
– ALTER COLUMN nazwa_kolumny [opcja_kol] - modyfikacja kolumny o podanej nazwie
16. Opisz opcje dostępne w parametrach projekcji instrukcji SELECT.
*Klauzura DISTINCT- ignoruje duplikaty wartości we wskazanej kolumnie w przeciwieństwie do domyślnej klauzuli ALL nakazującej wybrać wszystkie wiersze
*klauzula TOP n [PERCENT]- tworzy listę tylko n początkowych wierszy lub n procent początkowych wierszy
*klauzula AS -po nazwie kolumny tworzy jej alias
17. Jakie znasz funkcje agregujące i gdzie w instrukcji SELECT można ich używać?
*count () – zwraca liczność zbioru
*count ([DISTINCT] nazwa kolumny) – zwraca liczbę wierszy we wskazanej kolumnie
*sum ([DISTINCT] nazwa kolumny) – zwraca sumę wartości podanej kolumny (dostępne są tylko dla typów liczbowych)
*avg ([DISTINCT] nazwa kolumny) – zwraca średnią wartość podanej kolumny (dostępne są tylko dla typów liczbowych)
*min ([DISTINCT] nazwa kolumny) – zwraca minimalną wartość podanej kolumny (kolumna może być także typu znakowego lub daty)
*max ([DISTINCT] nazwa kolumny) – zwraca maksymalną wartość podanej kolumny (kolumna może być także typu znakowego lub daty) Funkcje agregujące można stosować na liście wyboru, lub w klauzuli HAVING instrukcji SELECT. W klauzuli WHERE funkcji agregujących używać nie wolno. Funkcje agregujące można wykorzystać także w budowie wyrażeń w instrukcji SELECT z klauzulą GROUP BY.
18. Przedstaw operatory specjalne dostępne we frazie WHERE.
*IN - równy wartości z listy podanej przez użytkownika (odpowiada przyrównaniom do różnych wartości połączonych operatorem OR) lub będącej wynikiem instrukcji SELECT *BETWEEN – równy jednej z wartości z podanego przedziału (odpowiada dwóm wyrażeniom: z operatorem „>” i dolną granicą przedziału oraz z operatorem „<” i górną granicą przedziału połączonym operatorem AND)
*LIKE - równy z podanym wzorcem (dla kolumn tekstowych), który może zawierać symbole wieloznaczne: _ (podkreślenie) oznacza dopasowanie do dowolnego pojedynczego znaku, % oznacza dopasowanie do dowolnej liczby dowolnych znaków
*IS NULL - równy wartości pustej
19. Do czego służy klauzula HAVING?
Klauzura HAWING - jest to opcjonalna klauzura tylko dla grupowania, która umożliwia nałożenie warunków selekcji na powstałe grupy. W warunkach występujących po frazie HAWING mogą występować funkcję agregujące.
20. Jaki jest domyślny porządek prezentacji wyników instrukcji SELECT?
Domyślnie przyjęty jest porządek rosnący ASC w przeciwieństwie do porządku malejącego oznaczanego opcją DESC.
21.Scharakteryzuj złączenie równościowe (wewnętrzne).
Złączenia równowartościowe-wewnętrzne –charakteryzują się warunkiem równości pomiędzy kolumnami z dwóch tabel , w wyniku czego otrzymujemy podzbiór iloczynu kartezjańskiego. Podzbiór ten stanowią tylko wiersze spełniające podany w instrukcji SELECT warunek. Złączenia równowartościowe- wewnętrzne występują po frazie: *WHERE- wówczas warunek złączenia występuje w formie wyrażenia po frazie WHERE *FROM- charakteryzuję się ona zastosowaniem klauzuli [INER] JOIN .Po frazie FROM w przypadku tych samych nazw kolumn w warunku złączenia stosujemy klauzulę: JOIN lub NATURAL JOIN
22.Jakie znasz typy złączeń zewnętrznych?
Złączenia zewnętrzne- w wyniku stanowi rozszerzenie złączenia równościowego o wiersze , których wartość porównywanej kolumny jest równa NULL. Jest to domyślna opcja klauzuli JOIN-OUTER.
*Złączenia lewostronne- w wyniku znajdują się wówczas , także i te wiersze z pierwszej tabeli dla których wartość kolumny równa się NULL. Wówczas przed zastosowaniem klauzuli[OUTER] JOIN wpisujemy LEFT (lewo)
*Złączenia prawostronne- w wyniku znajdą się także te wiersze z drugiej tabeli , dla których wartośc kolumny równa się NULL. Wówczas przed zastosowaniem klauzuli [OUTER] JOIN wpisujemy RIGHT (prawo)
*Złączenie pełne – w wyniku znajdą się także te wiersze z obu tabel , dla których wartość kolumny równa się NULL. Wówczas przed zastosowaniem klauzury [OUTER] JOIN wpisujemy FULL(pełny)
*Złączenie nierównościowe- w przeciwieństwie do złączenia równowartościowego w warunku złączenia występuje inny operator porównania niż operator równości
*Samo złączenie- jest to złączenie tablicy z tą samą tablicą. Umożliwia nam to wiązanie ze sobą informacji zawartych w różnych wierszach. Samo złączenie wykorzystujemy np. do tworzenia hierarchii obiektów zapisanych w tej samej tabeli. Aby wykonać samo złączenie wymagane są aliasy tabel
23.Co to jest samozłączenie i kiedy ma zastosowanie?
Samo złączenie- Jest to jeden z typów złączeń zewnętrznych. Polega ono na złączeniu tablicy z tą samą tablicą. Umożliwia nam to wiązanie ze sobą informacji zawartych w różnych wierszach. Aby wykonać samo złączenie wymagane są aliasy tabel. Samo złączenie ma zastosowanie w przypadku tworzenia hierarchii obiektów zapisanych w tej samej tabeli.
24.Co może być źródłem danych, które chcemy wprowadzić do nowego wiersza za pomocą instrukcji INSERT?
*Użytkownik który ręcznie wprowadza wartości . Wartości te muszą być podane w nawiasach po frazie VALUES. W przypadku wybranych kolumn musi istnieć zgodność co do ilości, kolejności i typów danych z podanymi po frazie VALUES wartościami.
*Inna tablica lub tablice występujące w instrukcji SELECT. Opcje projekcji instrukcji SELECT muszą być zgodne co do ilości, kolejności i typów danych z wypełnianymi kolumnami
25.Co rozumiemy pod pojęciem aktualizacji danych i jaka instrukcja umożliwia jej dokonania?
Aktualizacja danych- jest to zmiana istniejących danych oraz wprowadzanie nowych danych do istniejących już w tablicy wierszy. Instrukcją umożliwiającą aktualizację danych jest instrukcja UPDATE. Wówczas w składni musimy podać nazwę modyfikowanej tablicy, frazę SET jak i także wyrażenie przypisujące podanej kolumnie podaną wartość. Możemy wtedy podać więcej takich wyrażeń lub też za pomocą frazy WHERE ustawić opcję selekcji wierszy do aktualizacji.
26.Co to jest widok (perspektywa)?
Widok to kombinacja wierszy i kolumn wybranych z jednej lub kilku tablic. Po utworzeniu widoku można w nim wykonywać instrukcje SELECT jak na zwykłej tablicy. W bazie danych pamiętana jest jedynie definicja widoku. Widok jest materializowany w razie potrzeby.
27. Podaj różnice pomiędzy widokiem a tablicą.
- widoki nie zawierają danych; zawierają tylko informacje, w jaki sposób zebrać te dane w razie potrzeby (tzn. z jakich tablic, kolumn i w jaki sposób)- widoków nie można indeksować ( ale można indeksować tablice wchodzącą w skład widoku)- w ogólności, nie można aktualizować danych poprzez widok
28.Co oznacza fraza WITH CHECK OPTION w tworzeniu widoków?
Gwarantuje, że wszystkie aktualizacje widoku (jeśli widok jest aktualizowany) spełniają warunki występujące we frazie WHERE instrukcji SELECT.
29. Jakie korzyści wynikają ze stosowania widoków?
- te same dane mogą być widziane w różny sposób przez różnych użytkowników- pozwalają koncentrować się na danych istotnych, a ignorować inne- wprowadzają dodatkowy poziom niezależności od danych, jeśli zmieni się coś w schemacie bazy danych, często wystarczy zmienić definicję widoku, nie zmieniając programu - wprowadzają ochronę danych przez ich ukrycie: użytkownicy „widzą” tylko widoki, czyli te dane, do których mają prawo dostępu.
30. Co to jest kursor i do czego służy?
Kursor to wskaźnik służący do sekwencyjnego poruszania się po zbiorze wynikowym zapytania. W danym momencie wskazuje na jeden wiersz ze zbioru wynikowego .
Kursory są elementem zanurzonego języka SQL. Umożliwiają:- sekwencyjne przetwarzanie przez program wyników zapytań - pobieranie wartości kolumn z wierszy pobranych przy użyciu instrukcji SELECT - przypisywanie zmiennym programowym wartości pobranych z kolumn
Po ustaleniu pozycji kursora na wierszu można: - uaktualnić wiersz- usunąć wiersz
- przetworzyć wiersz
31. Wymień fazy użycia kursora.
Deklaracja kursora: DECLARE CURSOR Otwarcie kursora: OPEN Pobranie danych: FETCH i po zakończeniu operowania kursorem Zamknięcie kursora: CLOSE
32. Jakie znasz opcje deklaracji kursora?
Deklaracja kursora to pierwsza faza i wiąże się z jego utworzeniem. Wówczas nadawana jest mu przez użytkownika nazwa i następuje skojarzenie go ze zbiorem wynikowym (instrukcja SELECT), na którym będzie działał po otwarciu.
DECLARE nazwa_kursora [INSENSITIVE] [SCROLL] CURSOR
FOR instrukcja_SELECT
[FOR {READ ONLY|UPDATE [OF nazwa_kolumny, …]}];