Podstawy SQL oraz obsługa daty i czasu w SQL

Dzień dobry,

Dzisiaj zajmę się tematem podstaw SQL oraz wykorzystanie dat i czasu w SQL i przedstawię kilka zastosowań tych funkcji. 

Mój sposób na naukę SQL przestawiłem w wpisie: Nauka SQL za pomocą XAMPP

W swojej nauce SQL wykorzystuję ten sposób i osobiście polecam, tym bardziej że XAMPP ma wiele innych zastosować, które może sami odkryjecie  

Zacznę od razu od dat, ale spokojnie poniżej pojawią się podstawy i wprowadzenie do SQL. Celowo ominąłem całą teorię odnośnie wyjaśnienia pojęć baza danych, SQL i tak dalej, ponieważ tą bez problemu można znaleźć w medium o nazwie Internet.

W SQL obsługę dat umożliwią nam funkcję:


  • DATE – pozwala korzystać z daty w formacie YYYY-MM-DD

  • TIME – pozwala korzystać z czasu w formacie HH-MM-SS

  • DATETIME – pozwala korzystać z czasu w formacie YYYY-MM-DD HH-MM-SS

Przydatne też są polecenia dotyczące “chwili obecnej”. Na przykład kiedy dodajemy wiersz z nową fakturą i chcemy w łatwy sposób dodać moment utworzenia wpisu, albo gdy dodajemy nowego użytkownika dodać moment dodania użytkownika do bazy. Oto one:


  • CURDATE – wstawi do wiersza aktualną datę w formacie  YYYY-MM-DD

  • TIME – wstawi do wiersza aktualną godzinę w formacie  HH-MM-SS

  • NOW – pozwala korzystać z czasu w formacie YYYY-MM-DD HH-MM-SS

Dla przykładu utworzymy tabelę urodziny, gdzie będziemy przechowywać takie informację jak id, imię, nazwisko i datę urodzenia. Nazwiska oczywiście ze względu na to czym żyje cała Polska czyli  RODO zostaną zmienione. Można by było utworzyć tabelę bez nazwiska, ale przy tworzeniu tabeli ważne by było żeby były to unikalne, ponieważ mogą znaleźć się dwóch osobników o imieniu Łukasz urodzonych tego samego dnia 😉 

Tworzymy tabelę:

 
CREATE TABLE urodziny (
ID int NOT NULL AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(20),
last_name VARCHAR(30),
date_of_birth DATE
);

Trochę podstaw SQL:

Rozpoczęcie przygody z SQL powinniśmy zacząć od utworzenia bazy danych poleceniem CREATE DATABASE nazwa_bazy_danych. Gdy już mamy utworzoną bazę danych nową tabelę tworzymy za pomocą polecenia CREATE TABLE nazwa_tabeli następnie dodajemy do tabeli odpowiednie kolumny w formacie i określamy typ danych jaki kolumna będzie przechowywać i czasem określamy atrybut np. NOT NULL, AUTO_INCREMENT, PRIMARY KEY (nazwa_kolumny, TYPDANYCH(atrybut)). Każde polecenia należy zakończyć ;

Dane wprowadzamy w wiersze dzięki poleceniu INSERT INTO (nazwa_tabeli) następnie wprowadzamy wartości VALUES w naszym przypadku: (‘wartość_1_kolumny’,’wartość_2_kolumny’);

Dane typu string oraz daty wprowadzamy w cudzysłowie ” lub ‘ natomiast liczby bez cudzysłowu .

Wróćmy do tabeli urodziny 😉

Kilka wyjaśnień:

NOT NULL – dodaje warunek że w tej kolumnie wartość musi zostać podana

VARCHAR(30) – VARCHAR określa typ danych tekstowych, parament 30 określa maksymalną ilość znaków przechowywaną przez SQL

AUTO_INCREMENT – bardzo pomocny element w polach np. ID – dodaje kolejny numer do nowo dodanego wiersza

PRIMERY KEY – tworzy unikalny klucz do identyfikacji elementów.

 

Tabelę mamy utworzoną więc czas najwyższy dodać do niej dane.

 

INSERT INTO urodziny (name, last_name, date_of_birth)
VALUES
('Lukasz','Przykladowe','1985-01-11'),
('Piotr','Jakies','1984-09-30'),
('Magda','Testowa',CURDATE());

Oto nasza tabela 🙂

i jej dane: 

Do zobaczenia jak wygląda nasza tabela z danymi użyliśmy polecenia SELECT. Jest to podstawowa klauzula języka SQL

W podstawowym zapisie używamy: 

SELECT * FROM nazwa_tabeli WHERE warunek;

Dla wyjaśnienia:

* – powoduje wyświetlenie wszystkich kolumn tabeli (all) w przypadku kiedy chcemy konkretne kolumny podajemy zamiast * nazwy kolumn

FROM – z jakiej tabeli chcemy wynik

WHERE – określenie warunku – przykłady pokaże w dalszej części.

Ja jestem tym Łukaszem o nazwisku Przykladowe 😉

Teraz chciałbym skorzystać z magii SQL i dowiedzieć się w jakim dniu tygodnia się urodziłem (uznajmy że tego nie wiem ) i w którym dniu roku w moim przypadku to nie trudne do obliczenia ;D

SELECT name, last_name, DAYNAME(date_of_birth) AS Dzień_tygodnia, DAYOFYEAR(date_of_birth) AS Dzień_roku FROM urodziny WHERE name = 'Lukasz';


Yeeah dowiedziałem się, że urodziłem się w piątek 11 dnia roku 1985.

W powyższym zapytaniu użyliśmy kilka nowych poleceń SQL

AS – czyli alias który użyjemy w celu nadania kolumnie innej nazwy

WHERE – potężne narzędzie do filtrowania rekordów. W naszym przypadku chcieliśmy wiersze gdzie warunkiem było imię (name) – Lukasz.

Do naszej tabeli dodaliśmy Magdę nowego członka rodziny, który urodził się dzisiaj. Dlatego w przyszłości gdybyśmy chcieli sprawdzić kto dzisiaj ma urodziny użyjemy w naszej tabeli:

SELECT * FROM urodziny WHERE date_of_birth = CURDATE();

Magda dopiero co się urodziła więc nie ma potrzeby sprawdzić ile dni żyje na naszej pięknej ziemi. W takim przypadku sprawdzmy ile dni żyje tym razem Piotrek, który urodził się 30-09-1984 roku. W tym przypadku użyjemy DATEDIFF

SELECT DATEDIFF(NOW(), date_of_birth) FROM urodziny WHERE name = 'Piotr';

Chciałbym trochę więcej napisać o WHERE.

WHERE można używać do modyfikacji lub usuwania konkretnego wiersza. Tutaj należy zachować ostrożność!! ]

Dla przykładu w dacie urodzenia Piotra zrobiliśmy błąd i chcemy zmodyfikować jego datę urodzenia i ustawić prawidłową 1984-09-29:

UPDATE urodziny
SET date_of_birth = '1984-09-29'
WHERE ID = 2;

Niestety pokłóciliśmy się z Piotrem poważnie i jesteśmy tak bezczelni, że nie chcemy pamiętać o jego urodzinach i chcemy usunąć go z naszej tabeli . Tutaj zastosujemy DELETE:

DELETE FROM urodziny
WHERE ID = 2;

Gdy już doszliśmy do etapu usunięcia konkretnego wiersza, trzeba wspomnieć o czymś strasznym czyli usunięciu całej tabeli lub bazy danych

DROP TABLE nazwa_tabeli; – usuwa całą tabelę

DROP DATABASE nazwa_bazy_danych; – usuwa bazę danych

Tym przykrym wydarzeniem (kłótnia z Piotrem) chciałbym zakończyć ten wpis i życzyć miłego dnia 

Oczywiście artykuł ten nie wyczerpuję potęgi SQL i stanowi jedynie wprowadzenie i ma zachęcić do poszerzenia wiedzy odnośnie SQL.

 

Dodaj komentarz

Bądź pierwszy!

Powiadom o
avatar
wpDiscuz