1Tworzenie bazy danych i tabeli
Polecenie: Utwórz bazę danych sklep i tabelę produkty z kolumnami: id, nazwa, cena, ilość, data_dodania.
CREATE DATABASE sklep;
USE sklep;
CREATE TABLE produkty (
id INT AUTO_INCREMENT PRIMARY KEY,
nazwa VARCHAR(200),
cena DECIMAL(10, 2),
ilosc INT,
data_dodania DATETIME DEFAULT CURRENT_TIMESTAMP
);
2Wstawianie danych
Polecenie: Dodaj przykładowe produkty do tabeli produkty.
INSERT INTO produkty (nazwa, cena, ilosc)
VALUES
('Produkt A', 99.99, 10),
('Produkt B', 49.99, 5),
('Produkt C', 199.99, 2);
3Wyświetlanie danych w phpMyAdmin
Polecenie: Sprawdź, czy dane zostały poprawnie wprowadzone.
SELECT *
FROM produkty;
4Tworzenie strony PHP z tabelą produktów
Polecenie: Stwórz plik PHP w folderze htdocs/sql_exercises i wyświetl dane z tabeli produkty. Przepisz kod samodzielnie.
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "sklep";
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
die("Połączenie nieudane: " . $conn->connect_error);
}
$sql = "SELECT * FROM produkty";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
echo "<table border='1'>";
echo "<tr><th>ID</th><th>Nazwa</th><th>Cena</th><th>Ilość</th><th>Data dodania</th></tr>";
while ($row = $result->fetch_assoc()) {
echo "<tr>";
echo "<td>" . $row["id"] . "</td>";
echo "<td>" . $row["nazwa"] . "</td>";
echo "<td>" . $row["cena"] . "</td>";
echo "<td>" . $row["ilosc"] . "</td>";
echo "<td>" . $row["data_dodania"] . "</td>";
echo "</tr>";
}
echo "</table>";
} else {
echo "Brak wyników";
}
$conn->close();
?>
To klasyczny przykład użycia MySQLi do pobrania i wyświetlenia danych w tabeli HTML.
5Testowanie strony
Polecenie: Otwórz przeglądarkę i wejdź na adres http://localhost/sql_exercises/. Sprawdź, czy wyświetla się tabela z danymi.
6Podstawowe zapytania SELECT
Polecenie: Przepisz i uruchom poniższe zapytania (w phpMyAdmin lub w swojej stronie PHP).
-- Wyświetl wszystkie produkty
SELECT * FROM produkty;
-- Wyświetl tylko nazwy produktów
SELECT nazwa FROM produkty;
-- Wyświetl produkty, których cena jest większa niż 50
SELECT * FROM produkty
WHERE cena > 50;
-- Posortuj produkty według ceny rosnąco
SELECT * FROM produkty
ORDER BY cena ASC;
-- Wyświetl produkty, których nazwa zawiera literę 'A'
SELECT * FROM produkty
WHERE nazwa LIKE '%A%';
7Funkcje agregujące
Polecenie: Przepisz i uruchom poniższe zapytania z funkcjami agregującymi.
-- Policz ile jest wszystkich produktów
SELECT COUNT(*) AS ilosc_produktow FROM produkty;
-- Znajdź najdroższy produkt
SELECT MAX(cena) AS najdrozszy_produkt FROM produkty;
-- Znajdź najtańszy produkt
SELECT MIN(cena) AS najtanszy_produkt FROM produkty;
-- Oblicz średnią cenę produktów
SELECT AVG(cena) AS srednia_cena FROM produkty;
-- Oblicz łączną wartość wszystkich produktów (cena * ilość)
SELECT SUM(cena * ilosc) AS laczna_wartosc FROM produkty;
8Najdroższe produkty
Polecenie: Wyświetl 3 najdroższe produkty, pokazując ich nazwę, cenę i ilość.
SELECT nazwa, cena, ilosc
FROM produkty
ORDER BY cena DESC
LIMIT 3;
9Podniesienie ceny wybranych produktów
Polecenie: Zwiększ cenę wszystkich produktów droższych niż 100 o 5%.
UPDATE produkty
SET cena = cena * 1.05
WHERE cena > 100;
10Usuwanie produktów o zerowej ilości
Polecenie: Usuń wszystkie produkty, których ilość w magazynie wynosi 0.
DELETE FROM produkty
WHERE ilosc = 0;
11Tworzenie tabeli kategorii
Polecenie: Utwórz tabelę kategorie i dodaj kolumnę id_kategorii do tabeli produkty, a następnie powiąż je kluczem obcym.
CREATE TABLE kategorie (
id_kategorii INT AUTO_INCREMENT PRIMARY KEY,
nazwa VARCHAR(100) NOT NULL
);
ALTER TABLE produkty
ADD COLUMN id_kategorii INT;
ALTER TABLE produkty
ADD CONSTRAINT fk_produkty_kategorie
FOREIGN KEY (id_kategorii)
REFERENCES kategorie(id_kategorii);
12Produkty z kategoriami
Polecenie: Wstaw kilka kategorii, przypisz je produktom, a potem wyświetl listę produktów z nazwą kategorii (JOIN).
-- Przykładowe kategorie
INSERT INTO kategorie (nazwa) VALUES
('Elektronika'),
('AGD'),
('Inne');
-- Przypisz kategorię do produktu (przykład)
UPDATE produkty
SET id_kategorii = 1
WHERE id = 1;
-- Lista produktów z kategoriami
SELECT p.nazwa,
p.cena,
k.nazwa AS kategoria
FROM produkty p
LEFT JOIN kategorie k
ON p.id_kategorii = k.id_kategorii;
13Strona PHP filtrująca produkty po minimalnej cenie
Polecenie: Dodaj do strony PHP formularz, który pozwoli wpisać minimalną cenę. Po wysłaniu formularza wyświetl tylko produkty droższe niż podana wartość.
<form method="get">
Minimalna cena:
<input type="number" step="0.01" name="min_price">
<input type="submit" value="Filtruj">
</form>
<?php
$min = isset($_GET['min_price']) ? (float)$_GET['min_price'] : 0;
$sql = "SELECT * FROM produkty WHERE cena > " . $min;
$result = $conn->query($sql);
/* dalsza część wyświetlania tabeli jak wcześniej */ ?>
14Formularz dodawania produktu
Polecenie: Stwórz formularz HTML, który pozwoli dodać nowy produkt do tabeli produkty, a w PHP wykonaj zapytanie INSERT.
<form action="" method="post">
Nazwa: <input type="text" name="nazwa" required><br>
Cena: <input type="number" step="0.01" name="cena" required><br>
Ilość: <input type="number" name="ilosc" required><br>
<input type="submit" name="dodaj" value="Dodaj produkt">
</form>
<?php
if (isset($_POST['dodaj'])) {
$nazwa = $_POST['nazwa'];
$cena = (float)$_POST['cena'];
$ilosc = (int)$_POST['ilosc'];
$sql = "INSERT INTO produkty (nazwa, cena, ilosc)
VALUES ('$nazwa', $cena, $ilosc)";
$conn->query($sql);
}
?>