Polecenie CREATE DATABASE
jest fundamentalnym krokiem w tworzeniu nowej bazy danych w MySQL.
Składnia polecenia:
CREATE DATABASE nazwa_bazy_danych;
Przykład:
CREATE DATABASE MojaBazaDanych;
Polecenie to powoduje stworzenie nowej pustej bazy danych o nazwie „MojaBazaDanych”.
Zasady nazewnictwa i struktury:
Polecenie CREATE TABLE
służy do tworzenia nowych tabel w bazie danych MySQL.
Składnia polecenia:
CREATE TABLE nazwa_tabeli ( kolumna1 typ_danych_1, kolumna2 typ_danych_2, ... );
Przykład:
CREATE TABLE Klienci ( ID INT AUTO_INCREMENT PRIMARY KEY, Imię VARCHAR(50), Nazwisko VARCHAR(50), Email VARCHAR(100) UNIQUE );
W powyższym przykładzie tworzymy tabelę „Klienci” z kolumnami: „ID”, „Imię”, „Nazwisko”, „Email”. Kolumna „ID” jest kluczem głównym z automatycznie rosnącym wartościami.
MySQL oferuje różne typy danych, które można przypisać kolumnom w tabeli.
INT
: Liczby całkowite.VARCHAR(n)
: Ciągi znaków o zmiennej długości, gdzie n
to maksymalna liczba znaków.DATE
, TIME
, DATETIME
: Typy dla daty i czasu.FLOAT
, DOUBLE
: Liczby zmiennoprzecinkowe.BOOLEAN
: Wartość logiczna (prawda/fałsz).PRIMARY KEY:
Unikalny identyfikator dla każdego rekordu w tabeli.
Przykład:
ID INT PRIMARY KEY
AUTO_INCREMENT:
Automatyczne inkrementowanie wartości klucza głównego.
Przykład:
ID INT AUTO_INCREMENT PRIMARY KEY
UNIQUE:
Wartość w danej kolumnie musi być unikalna dla każdego rekordu.
Przykład:
Email VARCHAR(100) UNIQUE
FOREIGN KEY:
Tworzy relację między dwiema tabelami.
Przykład:
ID_Klienta INT, FOREIGN KEY (ID_Klienta) REFERENCES Klienci(ID)
Wartościowe jest zrozumienie i poprawne zdefiniowanie typów danych oraz ograniczeń, aby tabela spełniała określone wymagania biznesowe i była efektywna podczas operacji na danych.
Polecenie INSERT INTO
służy do dodawania nowych rekordów do tabeli.
Składnia:
INSERT INTO nazwa_tabeli (kolumna1, kolumna2, ...) VALUES (wartość1, wartość2, ...);
Przykład:
INSERT INTO Klienci (Imię, Nazwisko, Email) VALUES ('Jan', 'Kowalski', 'jan.kowalski@email.com');
Polecenie DELETE FROM
służy do usuwania rekordów z tabeli.
Składnia:
DELETE FROM nazwa_tabeli WHERE warunek;
Przykład:
DELETE FROM Klienci WHERE ID = 1;
To usunie klienta o identyfikatorze 1 z tabeli „Klienci”.
Polecenie UPDATE
umożliwia aktualizację istniejących rekordów w tabeli.
Składnia:
UPDATE nazwa_tabeli SET kolumna1 = wartość1, kolumna2 = wartość2 WHERE warunek;
Przykład:
UPDATE Klienci SET Email = 'nowy.email@email.com' WHERE ID = 1;
To zaktualizuje adres e-mail klienta o identyfikatorze 1.
Służy do pobierania danych z tabeli.
Składnia:
SELECT kolumna1, kolumna2, ... FROM nazwa_tabeli;
Przykład:
SELECT Imię, Nazwisko, Email FROM Klienci;
Zwróci wszystkie rekordy z tabeli „Klienci” z kolumnami „Imię”, „Nazwisko” i „Email”.
Filtracja danych:
Polecenie SELECT może być rozszerzone o warunki, aby filtrować wyniki.
Składnia:
SELECT kolumna1, kolumna2, ... FROM nazwa_tabeli WHERE warunek;
Przykład:
SELECT Imię, Nazwisko FROM Klienci WHERE Nazwisko = 'Kowalski';
Zwróci imiona i nazwiska klientów o nazwisku „Kowalski”.
AND
, OR
, NOT
są używane do łączenia warunków.=
, !=
(lub <>
), <
, >
, <=
, >=
służą do porównywania wartości.Poznanie tych operacji pozwoli efektywnie zarządzać danymi w bazie MySQL, a filtracja danych umożliwi precyzyjne wybieranie potrzebnych informacji.
W MySQL, klauzula WHERE
jest używana w poleceniu SELECT
, UPDATE
, DELETE
do filtrowania wyników lub danych, które są poddawane operacjom. Operatory logiczne są używane w połączeniu z WHERE
, aby tworzyć bardziej złożone warunki.
Podstawowe użycie:
SELECT kolumna1, kolumna2, ... FROM nazwa_tabeli WHERE warunek;
Przykład:
SELECT Imię, Nazwisko FROM Klienci WHERE Nazwisko = 'Kowalski';
Zwróci imiona i nazwiska klientów o nazwisku „Kowalski”.
AND:
Łączy warunki i zwraca wyniki, które spełniają oba warunki.
SELECT * FROM Tabela WHERE warunek1 AND warunek2;
OR:
Łączy warunki i zwraca wyniki, które spełniają przynajmniej jeden z warunków.
SELECT * FROM Tabela WHERE warunek1 OR warunek2;
NOT:
Odwraca wartość logiczną warunku, czyli zwraca wyniki, które nie spełniają warunku.
SELECT * FROM Tabela WHERE NOT warunek;
Kombinacja Operatorów Logicznych:
Można łączyć operatory logiczne, tworząc bardziej zaawansowane warunki.
SELECT * FROM Tabela WHERE warunek1 AND (warunek2 OR warunek3) AND NOT warunek4;
Operatory logiczne w połączeniu z klauzulą WHERE
pozwalają na elastyczne filtrowanie danych w bazie MySQL. To kluczowe narzędzie do precyzyjnego pobierania, aktualizowania lub usuwania danych zgodnie z określonymi kryteriami.
LEFT JOIN
to rodzaj złączenia (join) w języku SQL, które zwraca wszystkie rekordy z lewej tabeli i dopasowuje je do rekordów z prawej tabeli na podstawie warunku złączenia. Jeżeli nie ma dopasowania w prawej tabeli, to dla kolumn z prawej tabeli zostaną zwrócone wartości NULL.
SELECT tabela1.kolumna1, tabela1.kolumna2, ..., tabela2.kolumna1, tabela2.kolumna2, ... FROM tabela1 LEFT JOIN tabela2 ON tabela1.warunek_złączenia = tabela2.warunek_złączenia;
tabela1
i tabela2
to tabele, które chcemy połączyć.kolumna1, kolumna2, ...
to kolumny, które chcemy wybrać z obu tabel.ON
określa warunek złączenia, czyli kiedy rekordy z obu tabel są ze sobą powiązane.Przykład:
Mamy dwie tabele: Klienci
i Zamówienia
. Chcemy uzyskać listę klientów wraz z ich zamówieniami (jeżeli takie mają), z zachowaniem wszystkich klientów, nawet tych, którzy nie złożyli zamówień.
SELECT Klienci.ID, Klienci.Imię, Klienci.Nazwisko, Zamówienia.ID_Zamówienia, Zamówienia.Kwota FROM Klienci LEFT JOIN Zamówienia ON Klienci.ID = Zamówienia.ID_Klienta;
W tym przykładzie Klienci
to lewa tabela, a Zamówienia
to prawa tabela. ON Klienci.ID = Zamówienia.ID_Klienta
określa warunek złączenia, gdzie ID klienta w tabeli Klienci
musi być równy ID klienta w tabeli Zamówienia
.
Rezultatem tego złączenia będą wszyscy klienci wraz z ich zamówieniami (jeżeli takie mają). Jeżeli klient nie ma zamówienia, kolumny związane z zamówieniem będą zawierały wartości NULL. Zastosowanie LEFT JOIN
umożliwia uwzględnienie wszystkich rekordów z lewej tabeli (tutaj Klienci
) niezależnie od tego, czy mają one odpowiedniki w prawej tabeli (Zamówienia
).
ORDER BY
to klauzula w języku SQL, która jest używana do sortowania wyników zapytania. Pozwala na określenie, według których kolumn lub wyrażeń mają być posortowane wyniki. Można sortować wyniki w porządku rosnącym (ASC
, domyślne) lub malejącym (DESC
).
Składnia ORDER BY:
SELECT kolumna1, kolumna2, ... FROM nazwa_tabeli ORDER BY kolumna1 [ASC|DESC], kolumna2 [ASC|DESC], ...;
kolumna1, kolumna2, ...
to kolumny, według których chcemy posortować wyniki.ASC
oznacza sortowanie rosnące (domyślne).DESC
oznacza sortowanie malejące.Przykład:
Załóżmy, że mamy tabelę Pracownicy
z kolumnami ID
, Imię
, Nazwisko
i Wynagrodzenie
. Chcemy wyświetlić listę pracowników posortowaną według wynagrodzenia w kolejności malejącej:
SELECT ID, Imię, Nazwisko, Wynagrodzenie FROM Pracownicy ORDER BY Wynagrodzenie DESC;
W wyniku tego zapytania otrzymamy listę pracowników, posortowaną według kolumny Wynagrodzenie
malejąco.
ORDER BY
można również używać do sortowania wyników na podstawie wielu kolumn. Na przykład:
SELECT Imię, Nazwisko, DataZatrudnienia, Wynagrodzenie FROM Pracownicy ORDER BY DataZatrudnienia ASC, Wynagrodzenie DESC;
W tym przypadku wyniki zostaną posortowane najpierw według daty zatrudnienia rosnąco, a następnie według wynagrodzenia malejąco.
Klauzula LIMIT
w języku SQL jest używana do ograniczania liczby wierszy zwracanych przez zapytanie. Jest szczególnie przydatna, gdy chcemy zobaczyć tylko pierwsze kilka wyników z ogromnej tabeli lub kiedy pracujemy nad stroną paginacji.
Składnia LIMIT:
SELECT kolumna1, kolumna2, ... FROM nazwa_tabeli LIMIT liczba_wierszy;
kolumna1, kolumna2, ...
to kolumny, które chcemy wybrać.liczba_wierszy
określa maksymalną ilość wierszy, które mają być zwrócone.Przykład:
Załóżmy, że mamy tabelę Produkty
i chcemy zobaczyć tylko pierwsze trzy produkty z tabeli:
SELECT ID_Produktu, Nazwa, Cena FROM Produkty LIMIT 3;
W wyniku tego zapytania otrzymamy trzy pierwsze wiersze z tabeli Produkty
.
Klauzulę LIMIT
można również łączyć z ORDER BY
, aby uzyskać ograniczoną ilość wyników, ale posortowaną według określonego kryterium.
Przykład:
SELECT ID_Produktu, Nazwa, Cena FROM Produkty ORDER BY Cena DESC LIMIT 5;
To zapytanie zwróci pięć produktów z tabeli Produkty
, posortowanych malejąco według ceny.
Tworzenie Bazy Danych Składającej się z Trzech Tabel:
Tabela Osób (Osoby
):
Kolumny: ID_Osoby
(klucz główny), Imię
, Nazwisko
, Inkeds
(informacja o posiadaniu tatuaży).
CREATE TABLE Osoby ( ID_Osoby INT AUTO_INCREMENT PRIMARY KEY, Imię VARCHAR(50), Nazwisko VARCHAR(50), Inkeds BOOLEAN );
Tabela Adresów (Adresy
):
Kolumny: ID_Adresu
(klucz główny), ID_Osoby
(klucz obcy), Miasto
, Ulica
, Kod_Pocztowy
.
CREATE TABLE Adresy ( ID_Adresu INT AUTO_INCREMENT PRIMARY KEY, ID_Osoby INT, Miasto VARCHAR(50), Ulica VARCHAR(50), Kod_Pocztowy VARCHAR(10), FOREIGN KEY (ID_Osoby) REFERENCES Osoby(ID_Osoby) );
Tabela Kontaktów (Kontakty
):
Kolumny: ID_Kontaktu
(klucz główny), ID_Osoby
(klucz obcy), Email
, Telefon
.
CREATE TABLE Kontakty ( ID_Kontaktu INT AUTO_INCREMENT PRIMARY KEY, ID_Osoby INT, Email VARCHAR(100), Telefon VARCHAR(20), FOREIGN KEY (ID_Osoby) REFERENCES Osoby(ID_Osoby) );
Uzupełnienie Tabeli 5 Przykładowymi Danymi:
Tabela Osób (Osoby
):
INSERT INTO Osoby (Imię, Nazwisko, Inkeds) VALUES ('Anna', 'Nowak', TRUE), ('Jan', 'Kowalski', FALSE), ('Karolina', 'Wiśniewska', TRUE), ('Piotr', 'Lewandowski', FALSE), ('Ewa', 'Mazurek', TRUE);
Tabela Adresów (Adresy
):
INSERT INTO Adresy (ID_Osoby, Miasto, Ulica, Kod_Pocztowy) VALUES (1, 'Warszawa', 'Aleje Jerozolimskie 123', '00-111'), (2, 'Kraków', 'ul. Floriańska 45', '30-001'), (3, 'Gdańsk', 'ul. Długa 67', '80-001'), (4, 'Poznań', 'ul. Wielka 11', '60-101'), (5, 'Wrocław', 'Rynek 22', '50-102');
Tabela Kontaktów (Kontakty
):
INSERT INTO Kontakty (ID_Osoby, Email, Telefon) VALUES (1, 'anna.nowak@email.com', '123-456-789'), (2, 'jan.kowalski@email.com', '987-654-321'), (3, 'karolina.wisniewska@email.com', '555-777-999'), (4, 'piotr.lewandowski@email.com', '111-222-333'), (5, 'ewa.mazurek@email.com', '444-888-000');
Pobierz Wszystkie Osoby z Ich Adresami:
SELECT Osoby.Imię, Osoby.Nazwisko, Adresy.Miasto, Adresy.Ulica, Adresy.Kod_Pocztowy FROM Osoby LEFT JOIN Adresy ON Osoby.ID_Osoby = Adresy.ID_Osoby;
Znajdź Osoby z Tatuażami:
SELECT * FROM Osoby WHERE Inkeds = TRUE;
Pobierz Osoby z Ich Kontaktami:
SELECT Osoby.Imię, Osoby.Nazwisko, Kontakty.Email, Kontakty.Telefon FROM Osoby LEFT JOIN Kontakty ON Osoby.ID_Osoby = Kontakty.ID_Osoby;
Sortuj Osoby Według Nazwiska Rosnąco:
SELECT * FROM Osoby ORDER BY Nazwisko ASC;
Znajdź Osoby z Adresami w Warszawie:
SELECT Osoby.Imię, Osoby.Nazwisko, Adresy.Miasto, Adresy.Ulica, Adresy.Kod_Pocztowy FROM Osoby LEFT JOIN Adresy ON Osoby.ID_Osoby = Adresy.ID_Osoby WHERE Adresy.Miasto = 'Warszawa';
Te przykładowe zapytania ilustrują różne scenariusze korzystania z utworzonej bazy danych, obejmujące różne aspekty związane z danymi osobowymi, adresami i kontaktami.