Utwórz bazę danych sklep i tabelę produkty z kolumnami id, nazwa, cena oraz opis.
CREATE DATABASE sklep; USE sklep; CREATE TABLE produkty ( id INT AUTO_INCREMENT PRIMARY KEY, nazwa VARCHAR(100), cena DECIMAL(10, 2), opis TEXT );
Dodaj kilka produktów do tabeli, w tym nazwę, cenę i opis.
INSERT INTO produkty (nazwa, cena, opis) VALUES ('Produkt A', 50.00, 'Opis produktu A'); INSERT INTO produkty (nazwa, cena, opis) VALUES ('Produkt B', 75.00, 'Opis produktu B');
Dodaj kolumnę kategoria do tabeli produktów.
ALTER TABLE produkty ADD COLUMN kategoria VARCHAR(50);
Zaktualizuj cenę i opis produktu 'Produkt A'.
UPDATE produkty SET cena = 55.00, opis = 'Nowy opis produktu A' WHERE nazwa = 'Produkt A';
Usuń produkt 'Produkt B' z tabeli.
DELETE FROM produkty WHERE nazwa = 'Produkt B';
Stwórz formularz do dodawania nowych produktów do bazy danych (z formularza HTML).
Skorzystaj z PHP do obsługi formularza i zapisywania danych w tabeli.
Stwórz plik add_product.php, który odbiera dane z formularza i dodaje je do bazy danych.
prepare('INSERT INTO produkty (nazwa, cena, opis) VALUES (?, ?, ?)'); $stmt->execute([$nazwa, $cena, $opis]); } ?>
Stwórz formularz, który umożliwi aktualizację danych produktów (np. ceny, opisu).
Stwórz stronę, która wyświetla listę produktów z bazy danych.
query('SELECT * FROM produkty'); while ($row = $stmt->fetch()) { echo $row['nazwa'] . ' - ' . $row['cena'] . ' zł
'; } ?>
Stwórz formularz do usuwania produktów po ID.
Zadanie: Wybierz produkty, których cena jest wyższa niż 100.
SELECT * FROM produkty
WHERE cena > 100;
Zadanie: Załóżmy, że masz tabelę zamowienia
z kolumnami id
, produkt_id
, data
. Połącz tabelę zamowienia
z tabelą produkty
na podstawie produkt_id
i wybierz nazwę produktu oraz datę zamówienia.
SELECT produkty.nazwa, zamowienia.data
FROM zamowienia
JOIN produkty ON zamowienia.produkt_id = produkty.id;
Zadanie: Oblicz średnią cenę produktów w tabeli produkty
.
SELECT AVG(cena) AS srednia_cena
FROM produkty;
Zadanie: Pogrupuj produkty w tabeli produkty
po cenach, licząc ile produktów znajduje się w danej grupie cenowej.
SELECT cena, COUNT(*) AS liczba_produktow
FROM produkty
GROUP BY cena;
Zadanie: Stwórz widok, który będzie zawierał tylko produkty o cenie powyżej 100.
CREATE VIEW drogie_produkty AS
SELECT * FROM produkty
WHERE cena > 100;
Zadanie: Stwórz formularz w PHP, który pozwala na dodanie nowego produktu do tabeli produkty
i wyświetli wprowadzone dane.
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "sklep";
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$nazwa = $_POST['nazwa'];
$cena = $_POST['cena'];
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
die("Błąd połączenia: " . $conn->connect_error);
}
$stmt = $conn->prepare("INSERT INTO produkty (nazwa, cena) VALUES (?, ?)");
$stmt->bind_param("sd", $nazwa, $cena);
$stmt->execute();
echo "Produkt dodany!";
$conn->close();
}
?>
Wyświetl wszystkie produkty, których cena jest wyższa niż 50 zł.
SELECT * FROM produkty WHERE cena > 50;
Posortuj produkty według ceny w porządku rosnącym.
SELECT * FROM produkty ORDER BY cena ASC;
Policz, ile produktów jest w każdej kategorii.
SELECT kategoria, COUNT(*) FROM produkty GROUP BY kategoria;
Znajdź produkty, których cena jest wyższa niż średnia cena wszystkich produktów.
SELECT * FROM produkty WHERE cena > (SELECT AVG(cena) FROM produkty);
Dołącz tabelę kategorii i wyświetl produkty wraz z nazwą kategorii.
SELECT produkty.nazwa, produkty.cena, kategorie.nazwa FROM produkty JOIN kategorie ON produkty.kategoria_id = kategorie.id;
Oblicz łączną cenę wszystkich produktów.
SELECT SUM(cena) AS suma_cen FROM produkty;
Stwórz procedurę, która doda nowy produkt do bazy.
DELIMITER // CREATE PROCEDURE add_product(IN p_nazwa VARCHAR(100), IN p_cena DECIMAL(10,2), IN p_opis TEXT) BEGIN INSERT INTO produkty (nazwa, cena, opis) VALUES (p_nazwa, p_cena, p_opis); END // DELIMITER ;
Stwórz wyzwalacz, który zapisuje operacje w tabeli logi.
CREATE TABLE logi ( id INT AUTO_INCREMENT PRIMARY KEY, operacja VARCHAR(255), data TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); DELIMITER // CREATE TRIGGER after_insert_product AFTER INSERT ON produkty FOR EACH ROW BEGIN INSERT INTO logi (operacja) VALUES ('Dodano nowy produkt: ' + NEW.nazwa); END // DELIMITER ;
Stwórz funkcję, która obliczy cenę po zastosowaniu zniżki na produkt.
DELIMITER // CREATE FUNCTION oblicz_znizke(p_cena DECIMAL(10,2), p_znizka DECIMAL(5,2)) RETURNS DECIMAL(10,2) BEGIN RETURN p_cena - (p_cena * p_znizka / 100); END // DELIMITER ;
Stwórz procedurę do zmiany ceny produktu na podstawie ID.
DELIMITER // CREATE PROCEDURE update_price(IN p_id INT, IN p_cena DECIMAL(10,2)) BEGIN UPDATE produkty SET cena = p_cena WHERE id = p_id; END // DELIMITER ;