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:
- W3Schools Online Web Tutorials
- DoFactory: SQL Database Tutorial - zawiera też przykładową bazę danych
- Khan Academy: wstęp do SQL
- SQL Tutorial for Beginners
- Corsera: Learn SQL Online Course
- Skillshare: SQL Master in 90 minutes
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