Sprawdzian kasikasi

 0    80 Datenblatt    rozir6340
Drucken spielen überprüfen
 
Frage Antworten
Relacyjne bazy danych to:
Lernen beginnen
Dane w tabelach (rekordy i pola) Powiązania przez klucze Język SQL Przykłady: MySQL, PostgreSQL, Oracle, MS SQL Server
Nierelacyjne (NoSQL) bazy danych to:
Lernen beginnen
Dokumentowe (JSON, BSON, XML) – np. MongoDB 🔗 Grafowe – np. Neo4j 🗝️ Klucz–wartość – np. Redis, DynamoDB 📊 Kolumnowe – np. Cassandra, HBase
Obiektowa baza danych:
Lernen beginnen
Dane jako obiekty (np. multimedia, struktury) Przykłady: db4o, ObjectDB
Obiektowo-relacyjna baza danych:
Lernen beginnen
Hybryda relacyjnych i obiektowych Obsługa tabel i złożonych typów danych Przykłady: PostgreSQL, Oracle
Hierarchiczna baza danych:
Lernen beginnen
Struktura drzewa (rodzic–dziecko) Szybki dostęp, mała elastyczność Przykład: IBM IMS
Sieciowa baza danych:
Lernen beginnen
Struktura grafowa (wielu rodziców i potomków) Złożone powiązania między rekordami Przykład: IDS
Rozproszona baza danych:
Lernen beginnen
Dane na wielu serwerach/lokalizacjach Skalowalność i podział danych Przykład: np. użytkownicy A–M na serwerze 1, N–Z na serwerze 2
Podstawowe elementy relacyjnej bazy danych: Tabela:
Lernen beginnen
Główna struktura danych (jak arkusz Excel) Składa się z wierszy (rekordów) i kolumn (pól) Przechowuje dane jednego typu obiektów 👉 Przykład: Tabela Studenci zawiera dane o studentach
Podstawowe elementy relacyjnej bazy danych: Rekord (wiersz):
Lernen beginnen
Pojedynczy wpis w tabeli Reprezentuje jedną jednostkę danych 👉 Przykład: ID: 1 | Imię: Anna | Nazwisko: Kowalska | Wiek: 21 | Kierunek: Informatyka
Podstawowe elementy relacyjnej bazy danych: Pole (kolumna):
Lernen beginnen
Przechowuje dane określonego typu (np. tekst, liczba, data) 👉 Przykłady pól: Imię – tekst, Wiek – liczba, Kierunek – tekst
Klucz główny (Primary Key, PK):
Lernen beginnen
Unikalny identyfikator rekordu Gwarantuje jednoznaczność danych 👉 Przykład: ID = 1 w tabeli Studenci
Klucz obcy (Foreign Key, FK):
Lernen beginnen
Powiązanie z inną tabelą przez jej klucz główny 👉 Przykład: Tabela Zapisy: StudentID → Studenci(ID)
Relacje między tabelami:
Lernen beginnen
Pozwalają łączyć dane z różnych tabel Umożliwiają tworzenie złożonych struktur danych (np. student ↔ kursy)
Tabela:
Lernen beginnen
Struktura przechowująca dane w formie wierszy i kolumn. Każda tabela dotyczy jednego typu obiektów (np. Studenci).
Rekord (wiersz):
Lernen beginnen
Pojedynczy wpis w tabeli. Reprezentuje jedną jednostkę danych (np. jednego studenta). Składa się z pól.
Pole (kolumna):
Lernen beginnen
Element tabeli przechowujący dane określonego typu (np. tekst, liczba, data). Każde pole ma nazwę i typ danych.
Relacje między tabelami: Jeden do jednego (1:1)
Lernen beginnen
Każdy rekord w jednej tabeli odpowiada dokładnie jednemu rekordowi w drugiej. Przykład logiczny: Osoba ↔ PESEL
Relacje między tabelami: Jeden do wielu (1:N):
Lernen beginnen
Jeden rekord w tabeli A może mieć wiele rekordów w tabeli B, ale rekord w tabeli B należy tylko do jednego w tabeli A. Przykład logiczny: Nauczyciel ↔ Przedmioty
Relacja wiele do wielu (M:N):
Lernen beginnen
Rekordy w jednej tabeli mogą być powiązane z wieloma rekordami w drugiej tabeli – i odwrotnie.
GRANT / REVOKE – zarządzanie uprawnieniami:
Lernen beginnen
GRANT – nadawanie uprawnień (np. SELECT, INSERT, UPDATE, DELETE) REVOKE – odbieranie wcześniej nadanych uprawnień.
CRUD – podstawowe operacje na danych:
Lernen beginnen
C – Create → INSERT INTO R – Read → SELECT U – Update → UPDATE D – Delete → DELETE.
Struktura bazy danych MySQL (InnoDB):
Lernen beginnen
Schemat bazy danych Definiuje strukturę: tabele, pola, relacje, typy danych, ograniczenia. Silnik InnoDB Domyślny silnik MySQL – zarządza danymi w plikach zwanych tablespace.
Organizacja danych w InnoDB:
Lernen beginnen
Tablespace – fizyczne pliki na dysku (np... ibd, ibdata1) Strony (pages) – jednostki danych o rozmiarze 16 KB Extent – grupa stron (zwykle 1 MB) Segmenty – logiczne obszary w tablespace.
Rodzaje segmentów (4):
Lernen beginnen
Segment danych przechowuje rekordy w tablespace; segment indeksu trzyma struktury indeksów (B‑Tree/klastrowany dla PK); segment UNDO zawiera logi cofania; inne segmenty to metadane i wolne extenty; tabela ma co najmniej 2 segmenty...
Gdzie fizycznie są dane tabeli w InnoDB?
Lernen beginnen
W tablespace – fizycznej przestrzeni dyskowej Jeśli innodb_file_per_table=ON → każda tabela ma własny plik. ibd Jeśli innodb_file_per_table=OFF → wszystkie dane w pliku ibdata1 (system tablespace)
Rodzaje przestrzeni tabel:
Lernen beginnen
System tablespace – główna przestrzeń (ibdata1), zawiera metadane, UNDO logi, dane tabel File-per-table – osobny plik. ibd dla każdej tabeli Temporary tablespaces – dla tabel tymczasowych Undo tablespaces – dla cofania transakcji.
Extent:
Lernen beginnen
Fizyczny blok danych: 1 MB = 64 strony po 16 KB Jednostka przydzielana przez InnoDB tabelom i indeksom 👉 Można porównać do „klocka” miejsca na dysku.
Segment:
Lernen beginnen
Logiczna struktura zbudowana z extentów Typy segmentów: Segment danych (rekordy tabeli) Segment indeksu (np. PRIMARY KEY) Segment UNDO (cofanie transakcji) 👉 Segment = „pojemnik logiczny”, extent = jego fizyczne części.
Relacja: segment ↔ extent ↔ strona
Lernen beginnen
Segment składa się z extentów Extent = blok 1 MB = 64 strony (po 16 KB każda) Strona (page) zawiera rekordy, indeksy, metadane.
ALTER TABLE – dodanie indeksu:
Lernen beginnen
Powstaje dodatkowy segment dla nowego indeksu 👉 W sumie: 3 segmenty w. ibd.
LOB (Large Object) – duży obiekt danych:
Lernen beginnen
LOB-y są przechowywane poza główną stroną danych – w osobnym segmencie LOB W rekordzie tabeli znajduje się tylko wskaźnik do danych LOB Segment LOB zawiera strony z rzeczywistą zawartością (np. długi tekst, plik binarny)
Pytanie: Co robi INNER JOIN?
Lernen beginnen
Zwraca tylko dopasowane rekordy z obu tabel.
Co robi LEFT JOIN?
Lernen beginnen
Zwraca wszystkie rekordy z lewej tabeli oraz dopasowania z prawej; brak dopasowania → NULL.
Co robi RIGHT JOIN?
Lernen beginnen
Zwraca wszystkie rekordy z prawej tabeli oraz dopasowania z lewej; brak dopasowania → NULL.
Jak w MySQL uzyskać FULL OUTER JOIN?
Lernen beginnen
Połączyć LEFT JOIN i RIGHT JOIN z UNION (FULL OUTER JOIN brak natywnie).
Co robi CROSS JOIN?
Lernen beginnen
Iloczyn kartezjański — każdy wiersz z pierwszej łączy się z każdym z drugiej.
Jak wybrać tylko wiersze z lewej tabeli bez dopasowania?
Lernen beginnen
LEFT JOIN ... WHERE right_fk IS NULL.
Jak wybrać tylko wiersze z prawej tabeli bez dopasowania?
Lernen beginnen
IGHT JOIN ... WHERE left_pk IS NULL.
Co to CONSTRAINT?
Lernen beginnen
Ograniczenie definiujące reguły kolumn/relacji (PRIMARY KEY, FOREIGN KEY, UNIQUE, CHECK, INDEX).
Jak sprawdzić definicję tabeli wraz z constraintami?
Lernen beginnen
SHOW CREATE TABLE nazwa_tabeli;
Jak nadać numer porządkowy w wynikach (okienkowo)?
Lernen beginnen
ROW_NUMBER() OVER (ORDER BY ...).
ak nadać numer porządkowy bez funkcji okienkowej (MySQL przed 8)?
Lernen beginnen
Zmienna sesyjna: SET @lp:=0; SELECT @lp:=@lp+1 AS lp,...
Jakie są główne kategorie typów w MySQL?
Lernen beginnen
Numeryczne, daty/czas, ciągi znaków, przestrzenne, JSON.
Zakres TINYINT i TINYINT UNSIGNED?
Lernen beginnen
TINYINT: −128...127; UNSIGNED: 0...255.
Zakres SMALLINT i SMALLINT UNSIGNED?
Lernen beginnen
SMALLINT: −32 768...32 767; UNSIGNED: 0...65 535.
Zakres INT i INT UNSIGNED?
Lernen beginnen
INT: −2 147 483 648...2 147 483 647; UNSIGNED: 0...4 294 967 295.
Po co UNSIGNED?
Lernen beginnen
Pozwala przechowywać tylko wartości nieujemne i zwiększa maksymalny dodatni zakres.
Różnica FLOAT vs DOUBLE?
Lernen beginnen
FLOAT ≈ 6–7 cyfr znaczących (pojedyncza precyzja); DOUBLE ≈ 15–16 cyfr (podwójna precyzja).
Do czego służy DECIMAL?
Lernen beginnen
Precyzyjne liczby dziesiętne (np. finanse), brak błędów zaokrągleń float.
Co robi BIT(n)?
Lernen beginnen
Przechowuje sekwencję n bitów (1–64).
Co to tryb ścisły (STRICT MODE)?
Lernen beginnen
Wymusza błędy zamiast przycinania/warnings przy wartościach poza zakresem lub nieprawidłowych danych.
Jak włączyć strict mode w sesji?
Lernen beginnen
SET sql_mode = 'STRICT_ALL_TABLES';
Co się stanie gdy w trybie bez strict wstawisz wartość poza zakresem?
Lernen beginnen
MySQL może przyciąć wartość do maksymalnej dopuszczalnej i zwrócić warning zamiast error.
Co przechowuje DATE i jaki ma format oraz zakres?
Lernen beginnen
Przechowuje datę w formacie YYYY‑MM‑DD; zakres 1000‑01‑01 do 9999‑12‑31
Co przechowuje DATETIME i jaki ma zakres?
Lernen beginnen
Przechowuje datę i godzinę w formacie YYYY‑MM‑DD HH: MM: SS; zakres 1000‑01‑01 00:00:00 do 9999‑12‑31 23:59:59
Czym różni się TIMESTAMP od DATETIME?
Lernen beginnen
TIMESTAMP konwertuje wartości do UTC przy zapisie i z powrotem do strefy przy odczycie oraz ma zakres 1970‑01‑01 ... 2038‑01‑19; często używany do rejestrowania modyfikacji.
Co przechowuje TIME i jaki ma zakres?
Lernen beginnen
Przechowuje sam czas w formacie HH: MM: SS; zakres od -838:59:59 do 838:59:59
Co przechowuje YEAR i jakie ma warianty?
Lernen beginnen
Przechowuje rok (4‑cyfrowo lub 2‑cyfrowo); typowy zakres dla 4 cyfr ~1901–2155, dla 2 cyfr 70...69 (1970–2069)
Czym różni się CHAR(n) od VARCHAR(n)?
Lernen beginnen
CHAR ma stałą długość (uzupełniany spacjami), VARCHAR ma zmienną długość do maksymalnego n (ograniczone limitem wiersza).
Podstawowe rozmiary TEXT i jego wariantów?
Lernen beginnen
TINYTEXT ≤255, TEXT ≤65,535, MEDIUMTEXT ≤16,777,215, LONGTEXT ≤4,294,967,295 znaków.
Co to ENUM i SET?
Lernen beginnen
ENUM — pojedyncza wartość z listy predefiniowanej; SET — zbiór wartości wybranych z listy (do 64 elementów).
Czym są BINARY(n) i VARBINARY(n)?
Lernen beginnen
BINARY — stała długość bajtów (uzupełniane zerami), VARBINARY — zmienna długość bajtów do n.
Podstawowe BLOBy i ich rozmiary?
Lernen beginnen
TINYBLOB ≤255 B, BLOB ≤65,535 B, MEDIUMBLOB ≤16,777,215 B, LONGBLOB ≤4,294,967,295 B.
Co przechowuje POINT, LINESTRING, POLYGON?
Lernen beginnen
POINT — pojedynczy punkt 2D; LINESTRING — sekwencja punktów tworząca linię; POLYGON — wielokąt z zamkniętym zbiorem punktów; GEOMETRY to typ ogólny dla nich wszystkich.
Do czego służy typ JSON w MySQL?
Lernen beginnen
Przechowywanie strukturalnych danych (obiekty, tablice) jako JSON z możliwością zapytań i walidacji formatu; wstawiasz i czytasz jako tekst/obiekt JSON.
SUBSTRING(str, pos, len) — co robi?
Lernen beginnen
Zwraca podciąg zaczynając od pozycji pos (1 = pierwszy znak); len opcjonalnie ogranicza długość.
REPLACE(str, from, to) — co robi?
Lernen beginnen
Zastępuje wszystkie wystąpienia from na to w str.
UPPER/LOWER — co robią?
Lernen beginnen
Konwertują tekst odpowiednio na wielkie/małe litery (wg kodowania znaków).
LENGTH vs CHAR_LENGTH — czym się różnią?
Lernen beginnen
LENGTH zwraca liczbę bajtów; CHAR_LENGTH liczbę znaków (ważne przy UTF‑8, gdzie niektóre znaki zajmują >1 bajtu).
TRIM(remstr FROM str) — co robi?
Lernen beginnen
Usuwa remstr (domyślnie spację) z początku i/lub końca ciągu; można użyć LEADING/TRAILING/BOTH.
LEFT(str, len) i RIGHT(str, len) — co robią?
Lernen beginnen
Zwracają odpowiednio lewą/prawą część ciągu o długości len.
LOCATE(substr, str[, pos]) i INSTR(str, substr) — różnica praktyczna?
Lernen beginnen
Obie zwracają pozycję pierwszego wystąpienia (1‑based); LOCATE pozwala podać start pos, INSTR ma odwrotne argumenty i obie zwracają 0 gdy brak.
Co to podzapytanie nieskorelowane?
Lernen beginnen
Samodzielne podzapytanie, wykonywane raz; wynik używany w zapytaniu zewnętrznym.
Co to podzapytanie skorelowane?
Lernen beginnen
Odnosi się do wiersza z zewnętrznego zapytania (używa jego aliasów); wykonywane dla każdego wiersza zewnętrznego.
INSTR vs LOCATE
Lernen beginnen
INSTR szuka w tekście, LOCATE zaczyna od miejsca, LOCATE ma start, INSTR tego nie chce.
NOW
Lernen beginnen
NOW zwraca bieżący czas, gdy raport prosi o fakt, zapisz go w kolumnie, będziesz mieć dokładny akt.
DATE_ADD() ADDDATE() DATE_ADD('2016-04-04', INTERVAL 10 DAY)
Lernen beginnen
Dodaj interwał do daty, licz dni lub miesiące, DATE_ADD przesunie termin, będzie wszystko w porządku.
DATEDIFF(date1, date2)
Lernen beginnen
Ile dni minęło między datami — prosto policzy DATEDIFF, wynik w dniach, bez godzin, bez żadnych sztuczek.
DATE_FORMAT(CURDATE(),'%D %M %Y')
Lernen beginnen
Chcesz ładnie wyświetlić datę, użyj DATE_FORMAT, zamieni cyfry w słowa, ułatwi każdy raport.
Specyfikatory formatowania daty:
Lernen beginnen
%W Pełna nazwa dnia tygodnia Monday %w Dzień tygodnia 0-6 1 %X Rok dla numeru tygodnia 4 cyfry 2025 %x Rok dla numeru tygodnia 4 cyfry 2025 %Y Rok 4 cyfry 2025 %y Rok 2 cyfry 25

Sie müssen eingeloggt sein, um einen Kommentar zu schreiben.