SQL to język zapytań (ang. Structured Query Language), który zapewnia komunikację między użytkownikiem lub aplikacją, a relacyjną bazą danych. Co to oznacza? Z jego pomocą możemy nie tylko pobierać dane, ale także je wstawiać i modyfikować oraz tworzyć i modyfikować bazy danych. Język SQL składa się z zapytań (ang. query).

Podstawowe pojęcia

Zapytanie - pojedyncza instrukcja, która składa się ze słów kluczowych oraz parametrów. Istnieją różne rodzaje zapytań, np. SELECT, INSERT, itd. Tabela - jest to zbiór wierszy (rekordów) o określonej strukturze. Tabela posiada kolumny, które decydują o strukturze rekordów (kolumny to po prostu pola, z których składają się rekordy). Przykładowa tabela:

Relacja - to powiązanie między danymi (z tej samej lub z różnych tabel), np. jeżeli posiadamy tabelę Kierowcy i tabelę Autobusy, to połączenie KierowcaX - AutobusY (np. KierowcaX kieruje AutobusemY) jest relacją.

Myślisz o nauce SQL? Sprawdź nadchodzący wieczorowy kurs SQL

Zapytania

Zapytania można podzielić na kilka grup: DML (ang. Data Manipulation Language) – umieszczanie, aktualizowanie lub usuwanie danych z bazy, np. INSERT, UPDATE, DELETE DDL (ang. Data Definition Language) – operacje na strukturach bazy danych, czyli np. tworzenie lub kasowanie tabel i baz. Przykład polecenia to CREATE lub DROP DCL (ang. Data Control Language) - nadawanie uprawnień do obiektów baz danych, np. GRANT DQL (ang. Data Query Language) - pobieranie danych z bazy - do tej grupy należy tylko SELECT

Struktura zapytania SELECT

SELECT jest najpopularniejszym rodzajem zapytania i służy do pobierania danych z bazy. Zapytanie składa się ze słów kluczowych (SELECT, FROM, WHERE, …) oraz parametrów, którymi mogą być kolumny, tabele lub warunki.

Oczywiście poza SELECTem istnieje wiele innych poleceń, a najpopularniejsze z nich to: INSERT - wprowadzanie danych do bazy UPDATE - modyfikacja danych w bazie DELETE - kasowanie danych z bazy

Popularność języka

Język SQL jest bardzo popularnym językiem. Jeżeli założymy, że HTML/CSS nie są językami programowania to (wg Stack Overflow) jest on drugim najpopularniejszym językiem programowania na świecie:

Źródło: Stack Overflow - The most popular technologies of 2019

Zastosowania

1. Web development

Web development to najbardziej popularne zastosowanie baz danych, ponieważ każdy serwis WWW bazuje na danych i dzięki językowi SQL można jest pobierać lub po prostu nimi zarządzać. Aplikacje mobilne również operują na danych i zanim zostaną przesłane do naszego telefonu - wcześniej muszą zostać pobrane z bazy danych - najprawdopodobniej za pomocą SQLa.

2. Analiza danych

Poza Excelem, czy Accessem - SQL jest bardzo sprawnym narzędziem w rękach analityków. Jest wykorzystywany w statystyce, pozwala też na budowanie bardziej zaawansowanych analiz i raportów.

3. Big Data

Operacje na dużych zbiorach danych, np. za pomocą Apache Hive, w którym można wykonywać zapytania.

4. Data Science

Jak sama nazwa mówi - ta dziedzina opiera się na danych, a SQL jest niezbędny, aby je pobrać.

Najpopularniejsze bazy danych

Istnieje wiele relacyjnych baz danych, ale najpopularniejsze z nich to MySQL, SQL Server, PostgreSQL, czy Oracle. Ponownie odwołamy się do raportu Stack Overflow, który pokazuje ranking najpopularniejszych silników baz danych:

Źródło: Stack Overflow - The most popular databases of 2019 Pewnie zadajecie sobie pytanie, czy w każdej z tych baz język SQL ma taką samą składnię? Prawie tak - różnice są niewielkie, np. przy pobieraniu określonej liczby rekordów używamy:

  • SELECT TOP w SQL Server
  • LIMIT w MySQL
  • ROWNUM w Oracle

To trochę tak, jak z językiem polskim, który w każdym regionie Polski posiada specyficzne słowa. Ewentualne różnice w składni bez problemu znajdziecie w dokumentacji danej bazy danych. Być może słyszeliście o czymś takim, jak bazy NoSQL? Są to bazy, w których sposób organizacji NIE opiera się na relacjach (czyli są to bazy nierelacyjne). Co ciekawe w bazach nierelacyjnych można używać SQLa. Przykładami baz NoSQL są: MongoDB, czy Cassandra.

Narzędzia wykorzystywane w pracy z SQL

Istnieje wiele narzędzi służących do pracy z bazami danych, a my wypiszemy kilka najpopularniejszych z nich:

  • Sequel Pro - służy do zarządzania bazą danych MySQL. Dostępne na Mac OS.
  • MySQL Workbench - rozbudowane narzędzie dla administratorów i architektów baz danych MySQL, a także dla deweloperów. Dostępne na platformach Windows, Linux and Mac OS X.
  • HeidiSQL - edytor SQL dla baz MariaDB, MySQL, Microsoft SQL or PostgreSQL
  • phpMyAdmin - dostępne w przeglądarce narzędzie służace do zarządzania bazą danych MySQL
  • Microsoft SQL Server Management Studio - zarządzanie bazami danych SQL Server, Azure SQL Database oraz Azure SQL Data Warehouse
  • dbForge - rozbudowane narzędzia do zarządzania bazami MySQL, SQL Server, PostgreSQL i Oracle
  • Poza tym większość programistycznych IDE zawiera integrację z SQL, np: wszystkie produkty JetBrains’a

Jak rozpocząć naukę SQLa?

Istnieją dokumentacje, tutoriale, lub kursy online, które z pewnością przydadzą się przy rozpoczęciu nauki SQLa, poniżej kilka z nich:

Powyższe materiały do dobry wstęp do nauki, więc jeżeli chcecie kontynuować naukę, zrealizować projekt i pracować z trenerem, który pomoże Wam rozwiązać każdy problem i skonsultuje rozwiązanie - rozważcie nasze kursy Data Science.

Myślisz o nauce SQL? Sprawdź nadchodzący wieczorowy kurs SQL

Jak przejść od teorii do praktyki?

Jeżeli chcecie jak najszybciej zacząć pisać swoje pierwsze zapytania, możecie skorzystać z narzędzi online, które pozwalają na wykonywanie komend w przeglądarce. Z pewnością pomogą Wam one oswoić się z zapytaniami i w praktyce zrozumieć, jak to wszystko działa. Takimi narzędziami są http://sqlfiddle.com/ lub https://www.db-fiddle.com/ - to narzędzia online, które pozwalają na ćwiczenia z SQLem bez konieczności instalacji bazy danych.

Od jakiej bazy zacząć?

Proponujemy MySQL, ponieważ jest bardzo popularna, łatwa w instalacji, posiada wiele darmowych narzędzi oraz tutoriali. Jeżeli chcecie spróbować,  instalator MySQL “all-in-one” znajdziecie tutaj: MySQL Installer Inną opcją jest SQL Server - zarządzanie tą bazą jest również bardzo proste dzięki Microsoft SQL Server Management Studio, w którym wiele zapytań możemy wyklikać, a następnie obejrzeć ich składnię.

Przeczytaj także: Data Science - chwilowy trend czy zawód przyszłości

Poszukiwanie pracy

Pamiętaj, że znajomość danego języka programowania praktycznie nigdy nie jest jedyną kompetencją, którą posiadają początkujący programiści lub analitycy. Zazwyczaj jest to jedna z kilku kompetencji, którą posiadają developerzy, czy analitycy. Na przykład programista znając dobrze bazy danych, może być niezależny od administratora baz danych. Dzięki temu będzie w stanie optymalizować zapytania lub śledzić błędy, a w szczególnych przypadkach nawet zaprojektować bazę danych. Ofert pracy możecie szukać na:

Myślisz o nauce SQL? Sprawdź nadchodzący wieczorowy kurs SQL

Proceduralny SQL

Podczas webinaru pojawiło się pytanie o to, co znaczy proceduralny SQL (PL/SQL). Otóż jest to rozszerzenie języka SQL, które pozwala tworzyć procedury składające się z wielu zapytań z wykorzystaniem pętli, instrukcji warunkowych, czy operacji na zmiennych. W rezultacie, wynikiem działania procedury jest odpowiednio przetworzony zbiór danych. Korzyść ze stosowania procedur jest taka, że operacje na danych (często dużych zbiorach) są wykonywane bezpośrednio na bazie. W rezultacie unikamy wielokrotnego przesyłania danych między bazą, a aplikacją, co znacząco może zwiększyć wydajność całego systemu.

Video z webinaru (live demo)

Artykuł powstał na podstawie webinaru “Dlaczego warto uczyć się SQL?” Uczestnikami byli: Michał Giergielewicz, Piotr Kątny, Andrzej Kiesz