Ćwiczenia SQL i PHP – Podstawy baz danych (INF.03)

1. Tworzenie tabel

Cel: Uczeń potrafi utworzyć tabele w systemie zarządzania bazą danych.
Polecenie: Utwórz tabelę Klienci zawierającą pola: ID_Klienta, Imię, Nazwisko, Adres, Miasto, Kod_Pocztowy, Email i ustaw klucz główny dla ID_Klienta.
CREATE TABLE Klienci (
    ID_Klienta INT AUTO_INCREMENT PRIMARY KEY,
    Imie VARCHAR(50),
    Nazwisko VARCHAR(50),
    Adres VARCHAR(100),
    Miasto VARCHAR(50),
    Kod_Pocztowy VARCHAR(10),
    Email VARCHAR(50)
);
  
<?php
$conn = new mysqli("localhost","root","haslo","firma");
$sql = "CREATE TABLE Klienci (
    ID_Klienta INT AUTO_INCREMENT PRIMARY KEY,
    Imie VARCHAR(50),
    Nazwisko VARCHAR(50),
    Adres VARCHAR(100),
    Miasto VARCHAR(50),
    Kod_Pocztowy VARCHAR(10),
    Email VARCHAR(50)
)";
$conn->query($sql);
$conn->close();
echo "Utworzono tabelę Klienci.";
?>
  
Tabela Klienci utworzona w bazie danych.

2. Tworzenie formularzy do wprowadzania danych

Cel: Uczeń potrafi zaprojektować formularze do dodawania i modyfikowania rekordów.
Polecenie: Utwórz formularz do wprowadzania danych o klientach z polami: Imię, Nazwisko, Email, Miasto i przyciskiem Zapisz.
<?php
if(isset($_POST['submit'])){
    $imie = $_POST['imie'];
    $nazwisko = $_POST['nazwisko'];
    $email = $_POST['email'];
    $miasto = $_POST['miasto'];
    $conn = new mysqli("localhost","root","haslo","firma");
    $sql = "INSERT INTO Klienci (Imie,Nazwisko,Email,Miasto) VALUES ('$imie','$nazwisko','$email','$miasto')";
    $conn->query($sql);
    $conn->close();
    echo "Dodano klienta!";
}
?>

<form method="post">
Imię: <input type="text" name="imie"><br>
Nazwisko: <input type="text" name="nazwisko"><br>
Email: <input type="email" name="email"><br>
Miasto: <input type="text" name="miasto"><br>
<input type="submit" name="submit" value="Zapisz">
</form>
  
Formularz do wprowadzania danych klientów gotowy.

3. Rodzaje kwerend w SZBD

Cel: Poznanie typów kwerend i ich zastosowania.
Polecenie: Utwórz kwerendę wybierającą wszystkich klientów z miasta "Kraków".
SELECT * FROM Klienci WHERE Miasto='Kraków';
  
<?php
$conn = new mysqli("localhost","root","haslo","firma");
$sql = "SELECT * FROM Klienci WHERE Miasto='Kraków'";
$result = $conn->query($sql);
while($row = $result->fetch_assoc()){
    echo $row['Imie']." ".$row['Nazwisko']." - ".$row['Miasto']."<br>";
}
$conn->close();
?>
  
Wyświetlono klientów z Krakowa.

4. Tworzenie zapytań do bazy danych

Cel: Tworzenie zapytań SQL do pobierania, modyfikowania i analizowania danych.
Polecenie: Wyświetl średnią wartość zamówienia w tabeli Zamówienia.
SELECT AVG(Wartosc) AS SredniaZamowienia FROM Zamowienia;
  
<?php
$conn = new mysqli("localhost","root","haslo","firma");
$sql = "SELECT AVG(Wartosc) AS SredniaZamowienia FROM Zamowienia";
$result = $conn->query($sql);
$row = $result->fetch_assoc();
echo "Średnia wartość zamówienia: ".$row['SredniaZamowienia'];
$conn->close();
?>
  
Średnia wartość zamówienia: 245,50

5. Tworzenie i formatowanie raportów

Cel: Przygotowanie raportów prezentujących dane w czytelny sposób.
Polecenie: Utwórz raport pokazujący liczbę zamówień dla każdego klienta.
SELECT Klienci.Imie, Klienci.Nazwisko, COUNT(Zamowienia.ID_Zamowienia) AS LiczbaZamowien
FROM Klienci
LEFT JOIN Zamowienia ON Klienci.ID_Klienta = Zamowienia.ID_Klienta
GROUP BY Klienci.Imie, Klienci.Nazwisko;
  
<?php
$conn = new mysqli("localhost","root","haslo","firma");
$sql = "SELECT Klienci.Imie, Klienci.Nazwisko, COUNT(Zamowienia.ID_Zamowienia) AS LiczbaZamowien
FROM Klienci
LEFT JOIN Zamowienia ON Klienci.ID_Klienta = Zamowienia.ID_Klienta
GROUP BY Klienci.Imie, Klienci.Nazwisko";
$result = $conn->query($sql);
while($row = $result->fetch_assoc()){
    echo $row['Imie']." ".$row['Nazwisko']." - Zamówień: ".$row['LiczbaZamowien']."<br>";
}
$conn->close();
?>
  
Raport klientów i liczby zamówień wygenerowany.