SQL, czyli Structured Query Language, to nazwa, która może z początku wydawać się skomplikowana, lecz jest to absolutnie kluczowe narzędzie dla każdego, kto chce działać w dziedzinie programowania. SQL to język, który umożliwia nam interakcję z bazami danych, pozwalając na wprowadzanie, modyfikowanie, usuwanie i wyszukiwanie danych zapisanych w bazie. Dzisiaj zajmiemy się podstawami tego języka, aby zrozumieć jego strukturę i składnię, a tym samym nauczyć się korzystać z jego najważniejszych poleceń: SELECT, INSERT, UPDATE, DELETE oraz WHERE.

Podstawowe Polecenia SQL

Zanim zaczniemy pisać zapytania, warto zrozumieć podstawowe polecenia, które są niezbędne do interakcji z bazą danych.

SELECT – jest to polecenie, które pozwala nam na odczytanie danych z bazy. Możemy za jego pomocą zaznaczyć, które kolumny chcemy wyświetlić. Na przykład:


SELECT Imie, Nazwisko FROM Pracownicy;

W tym przypadku wybieramy kolumny „Imie” i „Nazwisko” z tabeli „Pracownicy”.

INSERT – to polecenie służy do wprowadzania nowych danych do bazy. Przykładowo:


INSERT INTO Pracownicy (Imie, Nazwisko) VALUES ('Jan', 'Kowalski');

Tutaj dodajemy nowego pracownika, Jana Kowalskiego, do tabeli „Pracownicy”.

UPDATE – polecenie, które pozwala nam na modyfikowanie istniejących danych. Przykład:


UPDATE Pracownicy SET Nazwisko = 'Nowak' WHERE Imie = 'Jan';

W tym zapytaniu zmieniamy nazwisko pracownika o imieniu „Jan” na „Nowak”.

DELETE – służy do usuwania danych z bazy. Na przykład:


DELETE FROM Pracownicy WHERE Imie = 'Jan';

Tutaj usuwamy pracownika o imieniu „Jan” z tabeli „Pracownicy”.

Warunki WHERE

Polecenie WHERE to kluczowy element zapytań SQL, który umożliwia stosowanie warunków w zapytaniach. Dzięki WHERE możemy precyzyjnie określić, na które rekordy nasze zapytanie powinno wpływać. Oto przykład:


SELECT * FROM Pracownicy WHERE Nazwisko = 'Kowalski';

W tym zapytaniu wybieramy wszystkie rekordy z tabeli „Pracownicy”, dla których kolumna „Nazwisko” jest równa „Kowalski”.

Pamiętajcie, że podstawy to dopiero początek. SQL to potężne narzędzie z wieloma zaawansowanymi funkcjami, ale zrozumienie jego podstawowej składni i struktury jest pierwszym krokiem do opanowania tego języka. W miarę jak zaczniecie się czuć pewniej z podstawami, warto eksplorować dalej i dowiadywać się więcej o zaawansowanych funkcjach SQL.

Zasady projektowania baz danych

Nauczyliście się już podstaw SQL i jesteście gotowi na kolejny krok w podróży po świecie zarządzania danymi. Teraz zanurzamy się w fascynujący proces projektowania baz danych. Język zapytań to jedno, ale prawidłowe zaprojektowanie i strukturalizowanie bazy danych to zupełnie inna para kaloszy. Omówimy podstawowe zasady normalizacji i denormalizacji, a także relacje między tabelami, aby pomóc Wam zoptymalizować wydajność i utrzymanie bazy danych.

Zasady Normalizacji i Denormalizacji

Normalizacja to proces projektowania bazy danych, który pomaga zredukować redundancję danych i zwiększyć integralność danych. Jest kilka poziomów normalizacji, z których każdy skupia się na rozwiązaniu konkretnego problemu. Ogólnie rzecz biorąc, normalizacja prowadzi do większej ilości tabel, ale każda z nich jest dobrze zdefiniowana i skupia się na pojedynczej koncepcji lub „temacie”.

Z drugiej strony, denormalizacja jest procesem, który – jak sama nazwa wskazuje – działa przeciwnie do normalizacji. Czasami, w celu zwiększenia wydajności, celowo wprowadza się redundancję danych. Choć może to prowadzić do szybszych czasów odczytu, wymaga to starannego zarządzania, aby uniknąć problemów z integralnością danych.

Relacje między Tabelami

Kluczem do efektywnego projektowania baz danych jest zrozumienie, jak tworzyć relacje między tabelami. Istnieją trzy główne typy relacji: jeden do jednego (1:1), jeden do wielu (1:n) i wiele do wielu (m:n).

  1. Jeden do jednego (1:1)
  2. Każdy rekord w jednej tabeli odpowiada jednemu i tylko jednemu rekordowi w drugiej tabeli. Przykładem może być tabela „Pracownik” i „SzczegółyPracownika”, gdzie każdy pracownik ma jedynie jeden zestaw szczegółowych informacji.

  3. Jeden do wielu (1:n)
  4. Jest to najczęściej spotykana relacja, w której jeden rekord w jednej tabeli może być powiązany z wieloma rekordami w drugiej tabeli. Na przykład, tabela „Pracownik” może być powiązana z tabelą „Zadania”, gdzie jeden pracownik może mieć wiele zadań.

  5. Wiele do wielu (m:n)
  6. W tym przypadku wiele rekordów w jednej tabeli może być powiązanych z wieloma rekordami w drugiej tabeli. Typowo, tę relację modeluje się za pomocą dodatkowej tabeli, nazywanej tabelą łączącą. Na przykład, „Studenci” i „Kursy” mogą mieć relację wiele do wielu, gdzie studenci mogą być zapisani na wiele kursów, a kursy mogą mieć wielu studentów.

Operacje na zbiorach i podzapytania w SQL

Pora aby zanurzyć się w bardziej złożone aspekty języka SQL, które pozwalają na tworzenie skomplikowanych zapytań do bazy danych. Skupimy się na operacjach na zbiorach, takich jak JOIN (INNER, LEFT, RIGHT, FULL), UNION, INTERSECT, oraz na podzapytaniach, które są istotnym elementem tworzenia złożonych zapytań.

Operacje na Zbiorach: JOIN, UNION, INTERSECT

Zacznijmy od zrozumienia, czym są operacje na zbiorach. Są to operacje, które manipulują wieloma rekordami naraz i umożliwiają „łączenie” danych z różnych tabel w celu uzyskania nowych widoków i informacji.

JOIN Polecenie JOIN umożliwia łączenie dwóch tabel na podstawie wspólnej kolumny. Istnieją cztery główne typy JOIN:

  1. INNER JOIN
  2. Zwraca wiersze, gdy istnieje co najmniej jedno pasujące pole w obu tabelach.

  3. LEFT JOIN (lub LEFT OUTER JOIN)
  4. Zwraca wszystkie wiersze z lewej tabeli i pasujące wiersze z prawej tabeli. Jeśli nie ma dopasowania, wynik to NULL po prawej stronie.

  5. RIGHT JOIN (lub RIGHT OUTER JOIN)
  6. Zwraca wszystkie wiersze z prawej tabeli i pasujące wiersze z lewej tabeli. Jeśli nie ma dopasowania, wynik to NULL po lewej stronie.

  7. FULL JOIN (lub FULL OUTER JOIN)
  8. Zwraca wiersze, gdy istnieje dopasowanie w jednej z tabel.

UNION i INTERSECT

UNION łączy wyniki dwóch lub więcej zapytań w jedną listę rekordów. W przypadku UNION, wszystkie duplikaty są usuwane. Jeśli chcemy zachować duplikaty, używamy UNION ALL. INTERSECT zwraca tylko te rekordy, które są wspólne dla obu zapytań.

Podzapytania

Podzapytania to zapytania umieszczone wewnątrz innego zapytania. Są one niezwykle mocne, gdyż pozwalają tworzyć zapytania, które są dynamiczne i dostosowują się do wyników innych zapytań. Podzapytania mogą być używane wraz z operacjami takimi jak SELECT, INSERT, UPDATE, DELETE oraz z operacjami na zbiorach.

Funkcje agregujące, sortowanie i grupowanie danych

Przyjrzyjmy się nieco bliżej funkcjom agregującym w SQL, które umożliwiają przeprowadzanie obliczeń na zestawach danych. Ponadto omówimy klauzule GROUP BY i ORDER BY, które służą do grupowania i sortowania wyników zapytań. Te funkcje są kluczowym narzędziem każdego, kto chce skutecznie manipulować danymi za pomocą SQL.

Funkcje Agregujące

Funkcje agregujące w SQL umożliwiają wykonywanie operacji matematycznych na zestawie wartości i zwracają pojedynczą wartość. Oto najważniejsze z nich:

  1. SUM()
  2. Sumuje wartości w wybranej kolumnie.

  3. AVG()
  4. Oblicza średnią wartość wybranej kolumny.

  5. MIN()
  6. Zwraca najmniejszą wartość z wybranej kolumny.

  7. MAX()
  8. Zwraca największą wartość z wybranej kolumny.

  9. COUNT()
  10. Zlicza ilość rekordów w wybranej kolumnie.

Na przykład, jeśli chcesz obliczyć łączną sumę sprzedaży z tabeli „Zamówienia”, możesz użyć polecenia:


SELECT SUM(sprzedaż) FROM Zamówienia;

Grupowanie i Sortowanie Danych

W SQL możemy również grupować i sortować dane za pomocą klauzul GROUP BY i ORDER BY.

GROUP BY: Używamy jej, gdy chcemy grupować nasze wyniki według określonej kolumny. Na przykład, jeśli chcemy zobaczyć łączną sprzedaż dla każdego produktu w tabeli „Zamówienia”, możemy użyć polecenia:


SELECT produkt, SUM(sprzedaż) FROM Zamówienia GROUP BY produkt;

ORDER BY: Klauzula ORDER BY umożliwia sortowanie wyników zapytania według określonej kolumny i kierunku (rosnąco lub malejąco). Na przykład:


SELECT * FROM Pracownicy ORDER BY Nazwisko ASC;