Skip to content

Witaj w Świecie Jutra!

  • Technologie jutra
  • Sprzęt jutra
  • Aplikacje jutra
  • Programowanie
  • Księga Drogi
  • Renowacja
  • Różności
  • Archiwum
  • Autor
  • Home
  • Wszystko
  • Czym jest SQL (i NoSQL)?
  • Programowanie
  • Wszystko

Czym jest SQL (i NoSQL)?

Jakub Raczkowski 10 kwietnia 2024

W trzecim odcinku serii „Czym jest…?” przyjrzymy się bliżej bazom danych. Czym tak właściwie są, jakie mamy typy i jak (oraz kiedy) z nich korzystać?

Uwaga! W tej serii zajmuję się opisowym przedstawieniem tematu, a celem jest zapoznanie z zagadnieniem w sposób luźny i zrozumiały dla nowicjusza. W związku z tym wiele elementów siłą rzeczy musi zostać pominiętych. Tych z was, którzy chcieliby się dowiedzieć więcej, zapraszam do źródeł na końcu artykułu.

Zaczynacie się uczyć programowania. Piszecie pierwsze mini-aplikacje w konsoli: kalkulatory czy parsery tekstu, potem trochę bawicie się z GUI. Póki co wszystko działa w obrębie kodu który napisaliście. Jak trzeba wam jakichś danych startowych to wrzucacie je w konstruktor klasy:

list.add(new User("Maciej", 27)); 
list.add(new User("Halina", 41)); 
list.add(new User("Ignacy", 63));

Potem tak samo z wyjściem. Ogólnie ten etap możemy podsumować obrazkiem:

Co się wydarzyło w IDE, zostaje w IDE (kadr z filmu „Kac Vegas”)

Ale do czasu. W końcu bowiem przychodzi moment kiedy zaczynacie tworzyć większy projekt, coś własnego i osobistego, coś co zaczynacie traktować niemalże jak własne dziecko.

A jak działa dziecko, wie każdy – wkładamy papu w otwór wejściowy, jest to przetrawiane, a następnie wysrywane przez otwór wyjściowy.

Zatem: robimy aplikację, która ma przyjmować dane z zewnątrz, a następnie gdzieś zapisywać wyniki swoich przeliczeń. Jakie mamy możliwości?

Najoczywistszą i najprostszą opcją jest, rzecz jasna, odczyt/zapis tych danych z pomocą plików, np. tekstowych. Jeśli wrócimy do powyższego przykładu z użytkownikami (obiektami klasy User) to albo wszystkich wrzucamy do jednego pliku, albo jeden user = jeden plik. Będzie to działać wyśmienicie…

…w skali mikro.

Jeszcze spoko jak mamy dziesięciu userów, setkę, może nawet tysiąc. Ale wyobraźmy sobie, że jest ich kilkadziesiąt tysięcy i więcej, a każdy ma swój profil, ustawienia, obrazek, login i hasło.

Chcemy aby to było szybkie w działaniu.
Chcemy aby to było pewne i bezpieczne.
Chcemy aby to było wygodne w utrzymaniu.

Aby sprostać powyższym oczekiwaniom powstały relacyjne bazy danych działające w oparciu o SQL – Structured Query Language (ustrukturyzowany język zapytań).

Różne bazy danych używające SQL-a (źródło obrazka)

SQL to specjalny język który pozwala na wyszukiwanie pożądanych danych w bazie danych, np.

SELECT id, name, age FROM users;

Takie coś wyświetli nam tabelkę z wszystkimi użytkownikami, w lewej kolumnie będzie id, w prawej wiek, a pośrodku imię.

Powyższy obrazek nieprzypadkowo pochodzi z arkusza kalkulacyjnego, bowiem relacyjne bazy danych tak właśnie się prezentują:

  • mamy bazę, a w niej zestaw tabel (np. tabela „użytkownicy” i tabela „zdjęcia”) które możemy łączyć np. za pomocą zapytania: „pokaż mi wszystkie zdjęcia użytkownika: Michał”
  • każda tabela ma zestaw kolumn, a każda kolumna ma typ aby od razu wiadomo było co tam będzie: to może być kolumna z ciągami znaków (tutaj nazywana „Varchar”), z liczbami rzeczywistymi („integer”) albo z datami („datetime”)
  • rzędy danej tabeli to poszczególne rekordy (kolejni użytkownicy, kolejne zdjęcia itp.)

DBMS (skrót od ang. „Database Management System„) to natomiast program-zarządca konkretnej bazy danych, który czuwa nad jej bezpieczeństwem, szybkością i stabilnością oraz pozwala dokonywać zapytań z użyciem języka SQL.

Jest sporo różnych DBMS-ów, z czego najpopularniejsze to MySQL, Oracle, Postgres i MS Server od Microsoftu – tych spodziewajcie się przeglądając oferty zatrudnienia.

Różnice pomiędzy nimi są – i to nawet nie kosmetyczne. O ile podstawowa składnia SQL-a jest wszędzie taka sama, to te bardziej zaawansowane DBMS-y oferują dodatkowe słowa kluczowe i funkcje, a także dbają, aby wszystko działało najszybciej jak to możliwe.

SQL w praktyce

Na pierwszy rzut oka SQL jest nieporównywalnie łatwiejszym językiem niż. np. taka Java. Wystarczy poznać kilkanaście słówek takich jak:

  • create/drop/alter
  • select/update/delete/insert/from
  • where/when/case
  • group by/order by
  • and/or/end
  • min()/max()/avg()

Cyk i już po paru dniach zakuwania jesteśmy gotowi pisać własne zapytania. O ile jednak ułożenie frazy wyszukującej pieski po ich imieniu, grupującej po umaszczeniu i sortującej po wzroście nie nastręczy nikomu trudności, to już samo zrozumienie poniższej kobyły może doprowadzić do siwizny:

Ogólnie jednak pracując na backendzie i nie specjalizując się na bazodanowca nasze zapytania rzadko kiedy będą przekraczać rozmiarem kilka linijek, a przeważnie i tak będzie je za nas pisał Spring Data (o nim i o ORM też będzie odcinek, ale trochę później).

Tym niemniej, wiedząc, że współpraca z bazami danych jest nam prędzej czy później pisana, warto zacząć się uczyć pisać w SQL-u jeszcze w trakcie poznawania podstaw wybranego języka programowania.

A co z NoSQL?

NoSQL to skrót od Not Only SQL – tzw. nierelacyjne bazy danych. W poprzedniku mamy te relacje/zależności – tabele są ze sobą powiązane w obrębie jednego schematu, tutaj zaś możemy powiedzieć, że każdy obiekt jest tabelą samą w sobie.

Przy okazji: to nie jest wcale tak, że mamy do wyboru jedynie te dwa: SQL i NoSQL, bo rodzajów baz danych jest więcej, tylko akurat powyższe zdobyły największą popularność.

Bazy NoSQL zasługują na osobny odcinek, ale już teraz warto poznać najważniejsze różnice pomiędzy nimi, a ich relacyjnymi kuzynami:

  • pozwalają na trzymanie danych w najróżniejszych formatach
  • oferują lepsze skalowanie bazy pod potrzeby biznesu
  • wyszukiwanie może być nawet tysiąckrotnie szybsze

Jest tego więcej, ale na chwilę obecną warto sobie to po prostu zobrazować w poniższy sposób:

Baza SQL to kobieca garderoba.

Dziewczyna wybiera się na imprezę i przypomniała sobie, że ma taką fajną sukienkę, której dawno nie nosiła. Odcień niebieski, przechodzący w turkus, koronkowe, krótkie rękawy plus aksamitny pasek. Do tego rajstopy w kolorze cielistym i wysokie, zamszowe kozaki z posrebrzanymi klamerkami.

Wszystko jest na swoim miejscu, w odpowiedniej przegrodzie w szafie, w szufladzie, czy na stojaku. Aby znaleźć to co potrzeba należy wcześniej odsunąć pozostałe ubrania i przełożyć na osobną półkę, aby się nie pomięły. A po wszystkim włożyć z powrotem na miejsce.

A to trwa.

Baza NoSQL to męska sypiania.

Facet wybiera się na imprezę: potrzebuje dżinsów (mogą być trochę brudne, byleby nie śmierdziały za bardzo), koszuli w dowolnym kolorze – zbytnio nie pomiętej i jakichś adidasków.

Gościu wchodzi do pokoju i patrzy na ten obraz nędzy i rozpaczy. Skarpetki walają się po podłodze, jedyne krzesło ugina się pod ciężarem ubrań, w rogu leżą brudy od tygodnia czekające na pranie. Szafa załadowana metodą „na sportowca” – w zależności od humoru: celnym dośrodkowaniem a’la Messi albo pięknym wsadem jak u Jordana.

Ale, ale! Myliłaby się osoba postronna myśląc, że w tym bałaganie miną wieki zanim uda się cokolwiek znaleźć! Absolutnie!

Wszystko leży na swoim miejscu.
Dokładnie tam gdzie to zostawił.
Proszę nic tutaj nie ruszać!

Chłopak podnosi z podłogi najbliższe spodnie, ale niestety nie przeszły testu zapachu więc wywala je w kąt i zamiast tego łapie szybko drugie portki – te co leżały na łóżku. Już nie wącha – nie ma co kusić losu. Chwyta z szafy swoją jedyną koszulę, która nie wygląda jak wyjęta krowie z gardła, po czym spod biurka wyjmuje pudełko z nowymi Adasiami, tylko na specjalne okazje.

Cały proces zajął dwanaście i pół sekundy.


Na koniec

SQL to dla programisty konieczność, NoSQL jest wciąż opcją i to skierowaną do kogoś kto zwykłego SQL’a już zna i ma doświadczenie w zawodzie, dlatego na początkowym etapie nauki bym się na tym nie skupiał. Tym bardziej, że znając już relacyjne bazy danych, ogarnięcie pozostałych będzie znacznie łatwiejsze.

Nauka pisania zapytań nie jest szczególnie trudna i dlatego można ją śmiało połączyć z przyswajaniem podstaw np. Javy. Bardzo ważna jest tutaj systematyczność, tak aby regularne ćwiczenia wypracowały nam obycie z SQL-em.

Od siebie mogę śmiało polecić bazodanowe zadania na LeetCode, które wyglądają np. tak:

Jedno krótkie ćwiczenie na dzień nie zrujnuje nam grafiku, za to pozwoli utworzyć pewien schemat pracy i da łatwość odnajdowania się w tym środowisku. Poza tym, wraz z nabywaniem doświadczenia zrozumiecie najważniejszą prawdę SQL-a:

Nie trudno jest szybko stworzyć działające zapytanie.
Sęk w tym aby działało szybko.


Polecane materiały do rozpoczęcia przygody z SQL-em:
Kurs SQL (Kanał o wszystkim) – YT/POL
Kurs SQL (Zaprogramuj życie) – YT/POL
Rusz głową! SQL – książka

Tags: programming

Continue Reading

Previous: Czym jest Git (i GitHub/GitLab)?
Next: Czym jest JUnit (i Mockito)?

Related Stories

Mageege Moon104 – test niskoprofilowego mechanika
  • Sprzęt

Mageege Moon104 – test niskoprofilowego mechanika

11 marca 2025
Przebranżowienie cz.4
  • Programowanie

Przebranżowienie cz.4

27 lutego 2025
Smartfon Jutra
  • Sprzęt

Smartfon Jutra

15 lutego 2025

Ze świata

  • Antyweb
  • Kwantowo
  • Dwóch po dwóch
Tego o instaxie nikt nam nie mówi. Znów się go pozbywam
Żarty się skończyły. Oto perfumy dla graczy
Uważaj na Switcha 2. Nintendo rozpoczyna śledztwo
Europa ma swoje DNSy. Będziesz chciał z nich skorzystać
mObywatel szykuje prawdziwą bombę. Warto czekać!
Nintendo Switch 2 zrobiło to dobrze. Mam tylko wątpliwości, czy jest się z czego cieszyć
Tytuły anime to absurd. Ale winni są czytelnicy
Kto stoi za MacAllisterem? Marka z Castoramy pod lupą.
Dobra wiadomość! Nie trzeba kupować tego dodatku do Switcha, wystarczy smartfon
Głośnik Bluetooth w sensownej cenie. Najlepsze alternatywy dla JBL Charge.
T-Mobile nie uniknie wysokiej kary. Sąd stanął po stronie klientów
Elektronika na pokładzie samolotu. Zasady, o których musisz wiedzieć!
Energia kosmiczna. Jak w przyszłości będzie wyglądać zasilanie poza Ziemią?
Czy klawiatury mechaniczne są tylko dla komputerowych świrusów?
Wyciekł film promujący nowe urządzenie Garmin. Potwierdza przecieki
Weekend z darmowymi hitami. Warto skorzystać już teraz
Budowlańcy mogą mieć problem. Te cacka zabiorą im robotę
Dexter z Leroy Merlin: Sprawdzamy, co kryje się za niską ceną
Nintendo pokazuje gdzie ma swoich fanów. Obrzydliwy skok giganta na kasę
YouTube przegina. Tam reklam jeszcze nie było
Ocalić od zapomnienia
Ostatni kwant
ALH 84001 – meteoryt, o którym mówiono nawet w Białym Domu
HESS zarejestrował kosmiczny elektron o niespotykanej energii [Phys. Rev. Lett.]
Matka ciemnej materii – recenzja biografii “Vera Rubin. Życie”
Satelita, który zerwał się ze smyczy
Wiadomość od Carla Sagana do przyszłych eksploratorów Marsa
Ile najdłużej może trwać zaćmienie Słońca?
Nowa największa liczba pierwsza ma ponad 41 milionów cyfr [GIMPS]
Pulsar 4U 1820-30 wykonuje 716 obrotów na sekundę [AJ]
Nasze podsumowanie Comic Con Baltics 2025
Mała wielka mysz. Glorious Model O 2 mini – recenzja
Tak było na Comic Con Baltics 2025 w Wilnie (Relacja)
O przedsprzedaży Pixel 9a w samochodzie – Odcinek #122
Obejrzeliśmy Ukryty Poziom na raz – No Movie Ci
Premiera Nintendo Switch 2, seriale, i piwniczne artefakty – Odcinek #121
Ludzieee, wy tego używacie? Recenzja klawiatury Trust GXT 867 Acira
Sympatyczny mały flagowiec. Samsung Galaxy S25 – recenzja
Recenzja pionowej myszy Natec Crake 2. Się wziął gruby i nawrócił
Podsumowanie 2024 roku: Gry, Smartfony, Seriale – Odcinek #120

To może cię zainteresować:

Mageege Moon104 – test niskoprofilowego mechanika
  • Sprzęt

Mageege Moon104 – test niskoprofilowego mechanika

11 marca 2025
Przebranżowienie cz.4
  • Programowanie

Przebranżowienie cz.4

27 lutego 2025
Smartfon Jutra
  • Sprzęt

Smartfon Jutra

15 lutego 2025
Czym jest Swagger?
  • Programowanie

Czym jest Swagger?

22 lipca 2024
  • Technologie jutra
  • Sprzęt jutra
  • Aplikacje jutra
  • Programowanie
  • Księga Drogi
  • Renowacja
  • Różności
  • Archiwum
  • Autor
Copyright © All rights reserved. | DarkNews by AF themes.