CodeGym /Kursy /SQL SELF /Wprowadzenie do typów danych w PostgreSQL

Wprowadzenie do typów danych w PostgreSQL

SQL SELF
Poziom 15, Lekcja 0
Dostępny

To jest ten wykład, od którego spokojnie mogliśmy zacząć nasz kurs. Ale wtedy twoje pierwsze zadania i wykłady byłyby turbo nudne. Gdybyś miał jeden dzień popracować jako budowlaniec, od czego byś zaczął: od nauki rodzajów i kształtów cegieł czy pojeździłbyś przez 30 minut żurawiem wieżowym? No właśnie :)

Uczeń to nie jest naczynie, które trzeba napełnić, tylko pochodnia, którą trzeba zapalić (i nie spalić przy tym)! Staram się nie opowiadać ci wszystkiego, co wiem, tylko zrobić to tak, żeby było ciekawie. I właśnie teraz jest najlepszy moment, żeby zacząć poznawać typy danych.

Typ danych w PostgreSQL — to określenie, jakiego rodzaju info będzie trzymane w danej kolumnie tabeli. Na przykład liczby, tekst albo daty. To trochę jak wybieranie pudełka do przechowywania: małe na drobiazgi, duże na buty, przezroczyste na nici, żeby od razu wiedzieć, co gdzie leży.

Przykład:

  • Jeśli chcesz przechowywać wiek osoby, wybierasz typ liczbowy.
  • Jeśli trzeba zapisać imię, przydadzą się typy tekstowe.
  • A żeby zaznaczyć datę rejestracji, logicznie użyć typu daty.

Po co są typy danych?

Typy danych pomagają:

  1. Ograniczać wprowadzane info. Na przykład nie wrzucisz tekstu tam, gdzie oczekiwane jest liczba.
  2. Strukturyzować dane. Wiedząc dokładnie, co jest w której kolumnie, łatwiej pisać zapytania i analizować info.
  3. Oszczędzać zasoby. Używając właściwych typów, zmniejszasz zużycie pamięci.
  4. Zachować precyzję. Na przykład obliczenia finansowe wymagają liczb z ustalonym miejscem po przecinku.

Przykład na rozgrzewkę

Wyobraź sobie tabelę do przechowywania info o studentach:

id name age enrollment_date
1 Otto Mars 22 2023-01-15
2 Anna Song 19 2023-02-10

Tutaj id — to unikalny identyfikator (liczba), name — tekst, age — liczba wieku, a enrollment_date — data zapisania studenta. Wszystkie te dane mają różne typy, bo opisują różne aspekty obiektu.

Klasyfikacja typów danych w PostgreSQL

PostgreSQL daje mega elastyczność w pracy z typami danych. Poniżej masz krótką klasyfikację.

Główne kategorie typów danych:

  1. Typy liczbowe

    • Do przechowywania liczb całkowitych (np. ilość, identyfikator) i liczb z częścią dziesiętną (np. kasa).
    • Przykłady: INTEGER, NUMERIC, FLOAT.
  2. Typy tekstowe

    • Do przechowywania tekstów i stringów (np. imiona, adresy).
    • Przykłady: CHAR, VARCHAR, TEXT.
  3. Typ logiczny

    • Do przechowywania wartości logicznych TRUE (prawda) albo FALSE (fałsz).
    • Przykład: BOOLEAN.
  4. Typy do pracy z datami i czasem

    • Do przechowywania dat, czasu albo ich kombinacji.
    • Przykłady: DATE, TIME, TIMESTAMP.
  5. Typy specjalne

    • Unikalne identyfikatory, obiekty JSON, tablice i dużo więcej.
    • Przykłady: UUID, JSONB, ARRAY.

Specyfika typów danych w PostgreSQL

PostgreSQL obsługuje ogromną ilość wbudowanych typów i pozwala tworzyć customowe (użytkownika) typy danych. To sprawia, że praca z tą bazą jest mega mocna w złożonych systemach, gdzie są specyficzne wymagania co do danych.

Ciekawostka: w PostgreSQL możesz nawet trzymać dane geograficzne albo robić zapytania typu "Znajdź kawiarnię w promieniu 500 metrów ode mnie". Do takich rzeczy są specjalne typy danych.

Co daje jawne określenie typów danych?

Czasem wydaje się, że wygodnie byłoby zrobić wszystkie kolumny tekstowe — bo tekst pomieści wszystko. Ale to zły pomysł! Wskazanie odpowiednich typów pozwala:

Upraszczać zapytania. Jeśli PostgreSQL wie, że w kolumnie są tylko liczby, szybciej robi obliczenia, np. SUM().

Unikać błędów. Wyobraź sobie, że przypadkiem zapiszesz "trzydzieści dwa" zamiast 32 w kolumnie z wiekiem. Wychwycić takie błędy będzie mega trudno.

2
Zadanie
SQL SELF, poziom 15, lekcja 0
Niedostępne
Podzapytanie w `WHERE` z wykluczeniem rekordów
Podzapytanie w `WHERE` z wykluczeniem rekordów
2
Zadanie
SQL SELF, poziom 15, lekcja 0
Niedostępne
Podzapytanie w `FROM` z wyrażeniem arytmetycznym
Podzapytanie w `FROM` z wyrażeniem arytmetycznym
Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION