SQL Flashcards
Co oznacza skrót SQL? Z jakich elementów składa się język zapytań do baz danych?
SQL (Structure Query Language) to język zapytań do baz danych.
SQL możemy podzielić na kilka części:
DDL - Data Definition Language - cześć języka SQL, odpowiadające za tworzenie, modyfikacje czy usuwanie obiektów bazy danych, operacje takie jak CREATE, ALTER, DROP.
DML - Data Manipluation Langugage - zbiór instrukcji języka SQL, pozwalający na wykonanie operacji INSERT, UPDATE, DELETE (dodawanie, aktualizacja, usuwanie wierszy).
DQL - Data Query Language - podstawa pobierania danych, czyli SELECT.
DCL - Data Control Language - element pozwalające na dodawanie lub odbieranie uprawnień, GRANT / REVOKE.
DTL / TCL - Data Transaction Language / Transaction Control Language - cześć odpowiedzialna za obsługę transakcji: COMMIT, ROLLBACK , SAVEPOINT.
Czym jest system zarządzania bazą danych (DBMS - Database Management System)?
DBMS - Database Management System - jest zbiorem reguł (system) opisanych przez programy komputerowe, które pozwalają na manipulację (manage) wartości atrybutów kilku różnych typów jednostek uporządkowanych w sensowny sposób (database).
Czym w kontekście SQL-a jest DDL?
DDL - Data Definition Language, jest elementem języka zapytań do baz danych, który ma na celu, tworzenie, modyfikację oraz usuwanie elementów struktury bazy danych - tabele, schematy, indeksy etc.
Do kluczowych elementów składni należą operacje: CREATE, ALTER oraz DELETE.
Podaj po 1 przykładzie użycia składni dla każdego z elementów DDL
CREATE:
CREATE TABLE sales ( id SERIAL );
ALTER:
ALTER TABLE sales ADD COLUMN sales_amount NUMERIC(10,2);
DROP:
DROP TABLE sales;
Czym jest DCL w kontekście SQL-a.
DCL (Data Control Language) jest elementem języka zapytań do baz danych, który ma na celu, nadawanie i odbieranie dostępu do obiektów bazy danych.
Do kluczowych elementów składni należą operacje: GRANT / REVOKE (DENY)
GRANT - nadaję dostępy do obiektów bazodanowych
REVOKE (DENY) - odbiera dostęp do obiektów bazodanowych
Czym jest TCL w kontekście SQL-a.
TCL (Transaction Control Language) - jest elementem języka zapytań do baz danych, który ma na celu zarządzanie transakcjami w bazie danych.
Do kluczowych elementów składni należą operacje: COMMIT, ROLLBACK, SAVEPOINT.
COMMIT - potwierdza transakcje i wszystkie akcje w niej wykonane.
ROLLBACK - wycofuje transakcje i wszystkie akcje w niej wykonane mające wpływ na struktury bazy danych i samych danych.
SAVEPOINT - zapisuje stan, do którego można się odwołać wewnątrz transakcji.
Jakie elementy struktury bazy danych, możemy wyróżnić (elementy jako warstwy bazy, np. tabele, indeksy etc.)?
Do typowych elementów struktury bazy danych zaliczamy:
schemat bazy danych tabele kolumny (atrybuty / pola) wiersze (rekordy) klucze / ograniczenia (constraints) widoki indeksy procedury / funkcje
Jakie znasz standardowe typy danych - ogólne typy plus mniej więcej ich podział - na podstawie bazę danych, z którą masz największe doświadczenie.
Typy danych możemy podzielić na:
alfanumeryczne
numeryczne
data i czas
oraz inne typy, które można w większości przypadków zaliczyć jako podgrupę jednego z powyższych elementów, są to:
boolean tablice (arrays) binary json / bson xml
Jakie znasz typowe ograniczenia atrybutów (kolumn) tabeli.
PRIMARY KEY - klucz główny tabeli (relacji) - jeżeli, jest prosty tzn. jednoelementowy, jest ograniczeniem atrybutu. W przypadku złożonego klucza głównego będzie on ograniczeniem relacji.
NOT NULL / NULL - wartość nie może / może być nieokreślona
UNIQUE - wartość musi być unikalna w całej relacji
SERIAL / AUTO_INCREMENT - atrybut jest typu numerycznego z automatycznym wzrostem wartości w polu w momencie wykonywania operacji INSERT
DEFAULT wartosc - wartość domyślna dla atrybutu
CHECK warunek - ograniczenie dziedziny atrybutu np. kolumna WIEK z ograniczeniem CHECK > 14, tj. wartość atrybutu WIEK musi być wyższy od 14 w momencie wykonywania operacji INSERT
Czym jest transakcja w bazie danych?
To nic innego jak metoda wykorzystywana przez aplikację do grupowania, operacji odczytu i zapisu w jedną logiczną jednostkę.
Wynikiem transakcji jest jeden z dwóch stanów: Sukces (transakcja jest zatwierdzana) lub Porażka (transakcja jest anulowana lub wycofywana).
Czym jest ACID w relacyjnych bazach danych?
ACID gwarantem bezpieczeństwa w relacyjnych bazach danych.
Jest to zestaw mechanizmów, który ma zapewnić pewną odporność na błędy i bolączki relacyjnych baz danych.
ACID to akronim od 4 takich gwarantów:
A (Atomicity) - atomowość
C (Consistency) - spójność
I (Isolation) - izolacja
D (Durability) - trwałość
Czym w bazach danych jest kontrola współbieżności (concurrency control)? Jakie znasz problemy związane z kontrolą współbieżnością?
Kontrola Współbieżności (Concurrency Control) - zbiór funkcji dostarczanych przez bazę danych w celu zezwolenia wielu użytkownikom jednoczesnego dostępu do danych i operacji na nich.
Kontrola Współbieżności Problemy:
Dirty Read - odczytanie “aktualizowanych” (UPDATE) danych przed ich zaakceptowaniem (COMMIT) przez inną transakcję.
Phantom Read - pojawienie się nowych rekordów / lub zniknięcie istniejących podczas gdy takie samo zapytanie zostanie uruchomione po wykonaniu 1 zapytania równoważnego.
Non-Repeatable Read - powoduje pojawienie się rekordów z poprzedniego zapytania w ich zmienionej formie w momencie ponownego wykonania zapytania.
Lost Update - powoduje nadpisanie oczekującej transakcji inną transakcją zapoczątkowaną wcześniej przez inną transakcję.
Czym w bazie danych jest zakleszczenie (LOCK)?
LOCK ma miejsce gdy dwie transakcje czekają wzajemnie na zwolnienie zasobów i przynajmniej jedna z nich nie może kontynuować swojego działania.
Czym w relacyjnych bazach danych jest izolacja?
Izolacja oznacza, że jednocześnie wykonywane transakcje są od siebie odizolowane - nie mogą mieć na siebie wpływu. Jest to szczególnie ważne w sytuacji dostępu do tego samego zasobu (tej samej tabeli), w przypadku dostępu do różnych obiektów konflikt nie będzie występował.
Czym są i jakie znasz poziomy izolacji transakcji?
Poziomy izolacji transakcji (isolation levels) są standardami / podejściami radzenia sobie z problemami współbieżności transakcji.
Read Uncommited - najmniej restrykcyjny, dopuszcza 3 typy odczytów (Dirty, Phantom i Non-Repeatable Reads). Raczej nie stosowany w komercyjnych bazach danych.
Read Commited - pozwala zapytaniu na dostęp do danych, które zostały zaakceptowane (COMMIT). Brak Dirty Reads, zezwolenie na Phantom i Non-Repeatable Reads. Najczęściej stosowany poziom izolacji.
Repeatable Read - gwarantuje spójność odczytów. Zezwala jedynie na Phantom Read.
Serializable - najbardziej restrykcyjny poziom izolacji (nie dopuszcza Dirty, Non-Repeatable i Phantom Reads). Każda transakcja jest traktowana, jakby była jedyną transakcją wykonywaną w bazie danych w danym momencie.
Czym jest normalizacja bazy danych?
Normalizacja bazy danych to technika organizacji danych w bazie, jest ona systematycznym metodycznym podejście “rozbijania” tabel w celu eliminowania powtórzeń i niechcianych cech operacji dodawania, usuwania i aktualizacji wierszy.
Dwa kluczowe cele normalizacji:
Reprezentacja faktów o rzeczywistym świecie w zrozumiały sposób;
Ograniczenie nadmiarowego przechowywania faktów i zapobiegania występowaniu nieprawidłowych lub niespójnych danych;
Czym w SQL jest widok (VIEW) i jakie są jego właściwości?
Widok jest trwałą definicją tabeli pochodnej (wynikiem zapytania SELECT), która jest przechowywana w bazie danych.
W SQL tabela, którą utworzono za pomocą zapytania CREATE TABLE, nazywana jest tabelą bazową (base table). Tabelą pochodną (derived table) formalnie nazywamy wynik każdego zapytania SELECT. Tabele, których użyto do zdefiniowania widoku, są nazywane underlying tables.
Właściwości widoku:
- nie przechowuje danych - definicja widoku jest zapisana w bazie danych. Sam widok jest jedynie interfejsem odczytu danych;
- zawsze pokazuje aktualne dane - baza danych odtwarza dane za każdym razem aktualne z tabel źródłowych użytych do zbudowania widoku;