SQL Flashcards
(60 cards)
Co to jest baza danych?
Oprogramowanie majace na celu pomoc w zarzarzadzaniu danymi
Co to jest relacyjna bazy danych?
Relacyjna baza danych, zaproponowana przez Edgara Codda, to struktura przechowująca dane zorganizowane w tabelach, gdzie relacje między nimi są określone poprzez klucze, umożliwiając efektywne zarządzanie i analizę danych w sposób spójny i zgodny z zasadami teorii relacyjnych baz danych.
Co to jest Tabela?
Tabela (inaczej encja, klasa obiektów, relacja) – to podstawowa struktura modelowania niezależnych, odrębnych obiektów, o których informacje chcemy przechowywać w bazie.
Każda tabela powinna przechowywać informacje jedynie o ściśle określonych obiektach konkretnego typu. Na przykład informacje dotyczące pracowników (tabela Pracownicy), albo tylko samochodów, zamówień, produktów itp. – każda typ = nowa tabela . Informacje w ramach tabeli, powinny być więc jednorodne ze względu na typ obiektu którego dotyczą.
Co to jest kolumna?
ATRYBUT w praktyce, to nic innego jako KOLUMNA. Zatem tłumacząc na model relacyjny, każda TABELA opisana jest za pomocą zbioru KOLUMN. Każda KOLUMNA jest ściśle określona TYPEM DANYCH, czyli przechowuje wartości jednorodne, z określonej DZIEDZINY (tego samego typu np. liczby, znaki, daty etc). Nazwa kolumny w ramach tabeli musi być unikalna, bo silnik musi jednoznacznie wiedzieć do którego atrybutu będziemy się odnosić.
Wiersz + Duplikaty
To pojedynczy egzemplarz, czyli obiekt opisany wszystkimi ATRYBUTAMI danej RELACJI. KROTKA to nic innego jak WIERSZ czy REKORD. W języku programistów możemy mówić o EGZEMPLARZU danej KLASY.
Każda tabela to zbiór wierszy. Zgodnie z matematyczną teorią zbiorów, każdy z definicji jest nieuporządkowany. Stąd każda tabela to zbiór elementów (wierszy) w którym zakładamy, że kol
ejność nie jest ustalona.
Teoria zbiorów, mówi o jeszcze jednej bardzo ważnej zasadzie. Braku duplikatów w zbiorze.
Wartość informacyjna każdego duplikatu w zbiorze jest równa zero. Co więcej wprowadza dużo zamieszania. Jak obsłużyć sytuację, kiedy chcielibyśmy zmodyfikować tylko jeden z nich? Jak mielibyśmy wskazać ten o który nam chodzi skoro są identyczne?
KLUCZ PODSTAWOWY/GLOWNY (PRIMARY KEY)
Klucz podstawowy/glowny służy do zapewnienia, że dane w określonej kolumnie są unikatowe. Kolumna nie może mieć wartości NULL i musi być najkrotsza. Jest to albo istniejąca kolumna tabeli, albo kolumna, która jest generowana przez bazę danych zgodnie ze zdefiniowaną sekwencją.
Klucz główny (Primary Key) jest unikalnym identyfikatorem dla każdego rekordu w tabeli, a klucz obcy (Foreign Key) to kolumna, która odnosi się do klucza głównego w innej tabeli. Klucze obce umożliwiają nawiązywanie relacji między różnymi tabelami w bazie danych.
KLUCZ OBCY (Foreign Key)
Klucz obcy to kolumna lub grupa kolumn w tabeli relacyjnej bazy danych, która zapewnia łącze między danymi w dwóch tabelach. Jest to kolumna (lub kolumny), która odwołuje się do kolumny (najczęściej klucza podstawowego) innej tabeli.
Nierelacyjna baza danych (NoSQL):
Nierelacyjne bazy danych, często nazywane bazami danych NoSQL, są przeznaczone do obsługi danych nieustrukturyzowanych i nie są powiązane z tradycyjnym modelem relacyjnej bazy danych.
Nierelacyjna baza danych to struktura przechowująca dane, która nie korzysta z tradycyjnych tabel i relacji, a zamiast tego wykorzystuje różne modele przechowywania, takie jak dokumenty, grafy czy kolumny, co umożliwia elastyczne zarządzanie różnorodnymi typami danych. MONGODB
OLAP
Online Analytical Processing to technologia umożliwiająca dynamiczną analizę dużych zbiorów danych, pozwalając użytkownikom na przeglądanie, manipulowanie i analizowanie informacji w wielowymiarowy sposób w celu efektywnego podejmowania decyzji biznesowych.
Innymi słowy, jest używane do efektywnego kosztowo i czasowo analizowania ogromnych danych z różnych źródeł, przeprowadzania złożonych analiz i generowania raportów.
Przykłady hurtowni danych OLAP to:
Amazon Redshift, Snowflake, Microsoft Azure Synapse Analytics i Google BigQuery.
ROZNICE SQL vs NOSQL
Struktura danych:
Relacyjne bazy danych używają tabel z predefiniowanym schematem (strukturą), w których dane są zorganizowane w wierszach i kolumnach.
Bazy danych NoSQL są bez schematu lub mają schemat dynamiczny, co pozwala na większą elastyczność w przechowywaniu danych.
Skalowalność: Relacyjne bazy danych zwykle skalują się w pionie przez zwiększenie mocy (procesora CPU, pamięci RAM) pojedynczego serwera. Bazy danych NoSQL są przeznaczone do skalowania w poziomie przez dodanie większej liczby serwerów do bazy danych. Język zapytań: Relacyjne bazy danych używają języka SQL (Structured Query Language) do definiowania danych i manipulowania nimi. Bazy danych NoSQL używają różnych języków zapytań lub interfejsów API w zależności od typu bazy danych. Możliwości zastosowania: Relacyjne bazy danych są odpowiednie dla aplikacji ze złożonymi zapytaniami i transakcjami, w których integralność danych ma kluczowe znaczenie. Bazy danych NoSQL są często używane w scenariuszach wymagających wysokiej skalowalności, elastyczności i obsługi dużych ilości danych bez struktury.
OLTP
Online Transaction Processing to technologia przetwarzania transakcyjnego online, która obsługuje bieżące, operacyjne operacje biznesowe, zapewniając szybkie i niezawodne wprowadzanie danych oraz aktualizacje w czasie rzeczywistym.OLTP oznacza Online Transaction Processing. OLTP jest używane do przetwarzania transakcji w czasie rzeczywistym. W prostych słowach, OLTP to baza danych produkcyjna, która zarządza takimi rzeczami jak zamówienia użytkowników, subskrypcje, zapasy itp.
OLTP scales vertically odnosi się do strategii zwiększania wydajności poprzez dodawanie zasobów do jednego, silnego serwera w systemie OLTP.
NULL
Specjalna wartość, która wskazuje na to, ze w danym polu lub kolumnie jest brak wartosci, jest puste lub nieznane
Constraints
Constrain to ograniczenie lub reguła narzucona na dane w kolumnie do utrzymania integralności danych, kontrolując dopuszczalne wartości lub relacje między nimi; przykłady obejmują klucze główne, klucze obce, unikalność oraz reguły sprawdzania.
Rodzaje Constrainow
Primary Key Constraint:
Określa unikalny identyfikator dla każdego rekordu w tabeli. Zapewnia jednoznaczną identyfikację rekordów.
Unique Constraint:
Zapewnia, że wartości w danej kolumnie (lub grupie kolumn) są unikalne, ale pozwala na wartość NULL.
Foreign Key Constraint:
Ustanawia relację między tabelami, gdzie klucz w jednej tabeli odnosi się do klucza w innej tabeli. Zapewnia integralność referencyjną.
Check Constraint:
Określa warunek, który wartości w danej kolumnie muszą spełnić, aby były zapisywane w bazie danych.
NOT NULL Constraint:
Wymusza, że każda wartość w danej kolumnie musi być różna od NULL.
Default Constraint:
Określa wartość domyślną dla danej kolumny, która będzie używana, jeśli nie zostanie dostarczona żadna inna wartość.
JOINY
- (INNER) JOIN: Returns records that have matching values in both tables
- LEFT (OUTER) JOIN: Returns all records from the left table, and the matched records from the right table
- RIGHT (OUTER) JOIN: Returns all records from the right table, and the matched records from the left table
- FULL (OUTER) JOIN: Returns all records when there is a match in either left or right table
CROSS JOIN to rodzaj złączenia (join), które łączy każdy wiersz z jednej tabeli z każdym wierszem z drugiej tabeli. Nie ma żadnych warunków dotyczących dopasowania wierszy między tabelami, co oznacza, że każdy wiersz z jednej tabeli jest łączony z każdym wierszem z drugiej tabeli.
W kontekście dwóch zbiorów, iloczyn kartezjański to zbiór wszystkich możliwych uporządkowanych par elementów, gdzie pierwszy element pochodzi z pierwszego zbioru, a drugi z drugiego zbioru.
SELF JOIN aliasujemy tabele ta1, ta2
SQL injection
Atak polegający na wprowadzeniu złośliwego kodu SQL do zapytania SQL, które jest dynamicznie tworzone przez aplikację. Atakujący wykorzystuje braki w zabezpieczeniach wejściowych, takich jak formularze na stronie internetowej, aby wstrzyknąć złośliwy kod SQL do zapytania, które jest później przetwarzane przez bazę danych. Atak ten ma na celu manipulowanie zapytaniami SQL w celu uzyskania dostępu do poufnych informacji, modyfikowania danych w bazie danych lub wykonywania innych niepożądanych operacji.
Trigger (wyzwalacz)
Trigger (wyzwalacz) - operacja w skutek wystąpienia określonego zdarzenia. Zdarzenia,ktore moga wywowalywac trigger to DML(inster,update, delete) i DDL(create, alter) Mozemy np. w momencie insertowanie danych sprawdzic jakis warunek tych danych
Normalizacja
To technika projektowania bazy danych używana do organizowania danych w relacyjnej bazie danych w celu zmniejszenia nadmiarowości i poprawy integralności danych.
Celem normalizacji jest ustrukturyzowanie schematu bazy danych w sposób, który minimalizuje duplikowanie danych i zależność, co prowadzi do bardziej wydajnej i łatwiejszej w utrzymaniu bazy danych.
Istnieje kilka normalnych form (1NF, 2NF, 3NF, BCNF itp.), z których każda odnosi się do różnych aspektów redundancji i zależności. Najczęstsze z nich to:
OFFSET 5 ROWS i FETCH NEXT 10 ROWS ONLY
OFFSET 5 ROWS
Oznacza, że pominięte zostaną pierwsze 5 wierszy wyników posortowanych według kolumny.
FETCH NEXT 10 ROWS ONLY
Oznacza, że następnie zostaną pobrane 10 wierszy.
Pierwsza postać normalna (1NF):
Zapewnia, że każda kolumna zawiera wartości niepodzielne i że wszystkie wpisy w kolumnie mają ten sam typ danych.
Druga postać normalna (2NF):
Opiera sie na 1NF i zapewnia, ze wszystkie kolumny zalezne sa od jednego klucza glownego. W praktyce dzielimy tabele na dwie, zeby zniwelowac redundancje danych i jasno okreslic jakie dane chcemy przechowywac w danej tabeli. Czyli np. nie laczyc marki samochodu z id pracownika(gdzie jest to klucz glowny tabeli pracownicy)
Trzecia postać normalna (3NF):
Opiera się na 2NF i eliminuje zależności przechodnie. Gwarantuje, że atrybuty niebędące kluczami nie są zależne od innych atrybutów niebędących kluczami.
Oznacza to, że dane muszą być logicznie uporządkowane i nie może być “pośrednich” zależności między kolumnami niekluczowymi.
ACID
To akronim oznaczający atomowość, spójność, izolację i trwałość. Jest to zestaw właściwości, które gwarantują niezawodność i integralność transakcji w systemie relacyjnej bazy danych. Te właściwości zapewniają, że transakcje bazy danych są przetwarzane niezawodnie nawet w przypadku błędów, awarii systemu lub jednoczesnego dostępu wielu użytkowników.
Atomicity:
Atomowość zapewnia, że transakcja jest traktowana jako pojedyncza, niepodzielna jednostka pracy. Albo wszystkie operacje w ramach transakcji zostały zakończone pomyślnie, albo żadna z nich nie jest. Jeśli jakakolwiek część transakcji zakończy się niepowodzeniem, cała transakcja zostanie wycofana do stanu początkowego, zachowując spójność bazy danych.
Właściwości ACID mają kluczowe znaczenie dla utrzymania integralności i niezawodności danych w systemach baz danych, szczególnie w sytuacjach, gdy wiele transakcji może być wykonywanych jednocześnie. Te właściwości pomagają zagwarantować, że baza danych pozostaje w prawidłowym i spójnym stanie, nawet w obliczu nieoczekiwanych zdarzeń lub błędów podczas przetwarzania transakcji. Większość systemów zarządzania relacyjnymi bazami danych (RDBMS), takich jak MySQL, PostgreSQL i Oracle, jest zgodna z zasadami ACID.