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
W kosmosie wybuchł "kosmiczny wulkan". Fenomenalne zjawisko!
To może być przełom w komunikacji. Teleportowali stan kwantowy między fotonami
Najważniejsze serialowe premiery 2026: na to wszyscy czekamy
Ile grania to za dużo? Naukowcy wskazują konkretną granicę
Apple Watch uratował mi zdrowie. Ta historia może być również o Tobie
Akumulatory Parkside: petarda z Lidla czy mina z opóźnionym zapłonem?
Budżetowy Xiaomi jeszcze tańszy. W takiej cenie to kradzież
Brakuje gier średnich. Ale nie w taki sposób, jak myślisz
Wkrętarka Parkside z RGB w mega promocji. Teraz 150 zł taniej
Nowe Xiaomi SU7 to pokaz technologiczny. Chiński gigant idzie na całość
Twój Samsung Galaxy S24 ma problemy z wyświetlaczem? Spokojnie, to nie usterka
Ogniwa wodorowe w 2026: gdzie „dowożą”, a gdzie wciąż nie dają rady
Disney ma dla fanów klasyków niespodziankę. Bardzo nieprzyjemną
Znaleźliśmy "chmurę żelaza" w kosmosie. Nieprawdopodobne, a jednak!
Życie bez haseł w 2026 roku. Raz to ustawiasz i logowania przestają boleć.
Komórki „nagrywają” swoje życie. Oto jak naukowcy to odkryli
Najwyższa pora na zmiany: Passkey zamiast hasła w 2026
YouTube rozluźnia zasady. Szykujcie się na zalew szamba
Festiwal nowych błędów w Windows 11 czas zacząć. To już nie jest śmieszne
Kosmos to już nie badania. To projekt wizerunkowy państw i miliarderów
To by było na tyle, jeśli chodzi o możliwość ugody
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]
30 lat konsoli PlayStation – Odcinek #130
Omawiamy serię The Walking Dead (gość: Stary Gracz)
Nikt nie potrzebuje cienkich smartfonów – Odcinek #129
To ostatni dzwonek na kolekcjonowanie gier i filmów
Najlepsza relacja z PGA 2025 (Poznań Game Arena)
Bumblebee wśród klawiatur. Marvo Meqa 80W – recenzja
Pierwsze spotkanie z Omoda 7 Super Hybrid
Logitech MX Master 4, Wednesday, 1670 sezon 2 – Odcinek #128
Tani pad, który chciał być jak DualSense. Test Monka Contra GT-96
Secret Service i prasa komputerowa w Polsce – Odcinek #127

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.