Narzędzia użytkownika

Narzędzia witryny


notatki:bazy_danych

Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

Poprzednia rewizja po obu stronachPoprzednia wersja
Nowa wersja
Poprzednia wersja
notatki:bazy_danych [2025/05/13 12:03] administratornotatki:bazy_danych [2025/05/16 17:25] (aktualna) administrator
Linia 1: Linia 1:
-====== Tworzenie zapytań SQL w MySQL ======+====== MySQL: Wstęp projekt bazy Sklep ====== 
 + 
 +Możesz podążać za tutorialem poprzez stronę: https://wiki.ostrowski.net.pl/php_mysql/sklep.php
  
 W tym artykule wykorzystamy przykładową bazę danych sklepu internetowego z trzema tabelami: klienci, towary i zamówienia. Przedstawimy definicje tabel w SQL oraz dodamy po 10 przykładowych rekordów do każdej z nich. Następnie omówimy różne rodzaje zapytań na tych danych, w tym: W tym artykule wykorzystamy przykładową bazę danych sklepu internetowego z trzema tabelami: klienci, towary i zamówienia. Przedstawimy definicje tabel w SQL oraz dodamy po 10 przykładowych rekordów do każdej z nich. Następnie omówimy różne rodzaje zapytań na tych danych, w tym:
Linia 15: Linia 17:
 Zacznijmy od zdefiniowania struktury bazy danych sklepu. Utworzymy trzy tabele:  Zacznijmy od zdefiniowania struktury bazy danych sklepu. Utworzymy trzy tabele: 
 <WRAP right 25%> <WRAP right 25%>
-{{:notatki:pasted:20250513-114421.png}}\\+{{:notatki:pasted:20250513-114421.png?300}}\\
 Po wykonaniu skryptu powinniśmy uzyskać coś takiego Po wykonaniu skryptu powinniśmy uzyskać coś takiego
 </WRAP> </WRAP>
Linia 316: Linia 318:
  
 Dzięki tym przykładowym zapytaniom możesz ćwiczyć pracę z bazą danych i stopniowo rozwijać swoje umiejętności SQL. Pamiętaj, że kluczem jest praktyka – warto eksperymentować na różnych danych i zadaniach, aby lepiej opanować składnię i możliwości MySQL. Dzięki tym przykładowym zapytaniom możesz ćwiczyć pracę z bazą danych i stopniowo rozwijać swoje umiejętności SQL. Pamiętaj, że kluczem jest praktyka – warto eksperymentować na różnych danych i zadaniach, aby lepiej opanować składnię i możliwości MySQL.
 +
 +== Pełen dump bazy danych ==
 +<code mysql>
 +-- Adminer 5.2.1 MySQL 8.0.42 dump
 +
 +SET NAMES utf8;
 +SET time_zone = '+00:00';
 +SET foreign_key_checks = 0;
 +SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO';
 +
 +DROP DATABASE IF EXISTS `sklep`;
 +CREATE DATABASE `sklep` /*!40100 DEFAULT CHARACTER SET utf8mb3 COLLATE utf8mb3_polish_ci */ /*!80016 DEFAULT ENCRYPTION='N' */;
 +USE `sklep`;
 +
 +DELIMITER ;;
 +
 +CREATE PROCEDURE `LiczbaZamowienDlaKlienta` (IN `client_id` int)
 +BEGIN SELECT COUNT(*) AS liczba_zamowien 
 +FROM zamowienia 
 +WHERE id_klienta = client_id; 
 +END;;
 +
 +DELIMITER ;
 +
 +DROP TABLE IF EXISTS `klienci`;
 +CREATE TABLE `klienci` (
 +  `id_klienta` int NOT NULL,
 +  `imie` varchar(50) COLLATE utf8mb3_polish_ci DEFAULT NULL,
 +  `nazwisko` varchar(50) COLLATE utf8mb3_polish_ci DEFAULT NULL,
 +  `miasto` varchar(50) COLLATE utf8mb3_polish_ci DEFAULT NULL,
 +  `wiek` int DEFAULT NULL,
 +  PRIMARY KEY (`id_klienta`)
 +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_polish_ci;
 +
 +INSERT INTO `klienci` (`id_klienta`, `imie`, `nazwisko`, `miasto`, `wiek`) VALUES
 +(1, 'Jan', 'Kowalski', 'Warszawa', 34),
 +(2, 'Anna', 'Nowak', 'Gdańsk', 28),
 +(3, 'Piotr', 'Wiśniewski', 'Poznań', 45),
 +(4, 'Katarzyna', 'Wójcik', 'Gdańsk', 51),
 +(5, 'Michał', 'Kamiński', 'Wrocław', 39),
 +(6, 'Agnieszka', 'Lewandowska', 'Katowice', 23),
 +(7, 'Tomasz', 'Zieliński', 'Warszawa', 62),
 +(8, 'Ewa', 'Szymańska', 'Lublin', 31),
 +(9, 'Adam', 'Dąbrowski', 'Łódź', 27),
 +(11, 'Karolina', 'Mazur', 'Gdynia', 29);
 +
 +DROP TABLE IF EXISTS `towary`;
 +CREATE TABLE `towary` (
 +  `id_towaru` int NOT NULL,
 +  `nazwa` varchar(100) COLLATE utf8mb3_polish_ci DEFAULT NULL,
 +  `kategoria` varchar(50) COLLATE utf8mb3_polish_ci DEFAULT NULL,
 +  `cena` decimal(10,2) DEFAULT NULL,
 +  PRIMARY KEY (`id_towaru`)
 +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_polish_ci;
 +
 +INSERT INTO `towary` (`id_towaru`, `nazwa`, `kategoria`, `cena`) VALUES
 +(1, 'Telewizor 55\"', 'Elektronika', 2499.99),
 +(2, 'Laptop', 'Elektronika', 3299.00),
 +(3, 'Smartfon', 'Elektronika', 1999.49),
 +(4, 'Regał na książki', 'Meble', 459.20),
 +(5, 'Krzesło biurowe', 'Meble', 349.00),
 +(6, 'T-shirt męski', 'Odzież', 59.99),
 +(7, 'Sukienka damska', 'Odzież', 129.50),
 +(8, 'Buty sportowe', 'Obuwie', 179.99),
 +(9, 'Słuchawki bezprzewodowe', 'Elektronika', 149.99),
 +(10, 'Książka \"SQL dla początkujących\"', 'Książki', 79.90);
 +
 +DROP TABLE IF EXISTS `zamowienia`;
 +CREATE TABLE `zamowienia` (
 +  `id_zamowienia` int NOT NULL,
 +  `id_klienta` int DEFAULT NULL,
 +  `id_towaru` int DEFAULT NULL,
 +  `ilosc` int DEFAULT NULL,
 +  `DATA` date DEFAULT NULL,
 +  PRIMARY KEY (`id_zamowienia`),
 +  KEY `fk_zamowienia_klienci` (`id_klienta`),
 +  KEY `fk_zamowienia_towary` (`id_towaru`),
 +  CONSTRAINT `fk_zamowienia_klienci` FOREIGN KEY (`id_klienta`) REFERENCES `klienci` (`id_klienta`) ON DELETE CASCADE ON UPDATE CASCADE,
 +  CONSTRAINT `fk_zamowienia_towary` FOREIGN KEY (`id_towaru`) REFERENCES `towary` (`id_towaru`) ON DELETE RESTRICT ON UPDATE CASCADE
 +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_polish_ci;
 +
 +INSERT INTO `zamowienia` (`id_zamowienia`, `id_klienta`, `id_towaru`, `ilosc`, `DATA`) VALUES
 +(1, 1, 1, 1, '2024-01-15'),
 +(2, 2, 3, 2, '2024-01-17'),
 +(3, 1, 2, 1, '2024-02-03'),
 +(4, 3, 5, 4, '2024-02-20'),
 +(5, 4, 4, 2, '2024-03-05'),
 +(6, 5, 8, 1, '2024-03-15'),
 +(7, 6, 10, 3, '2024-03-17'),
 +(8, 7, 9, 1, '2024-03-18'),
 +(9, 2, 6, 5, '2024-03-20'),
 +(10, 1, 7, 2, '2024-04-01');
 +
 +-- 2025-05-13 10:05:07 UTC
 +</code>
notatki/bazy_danych.1747130597.txt.gz · ostatnio zmienione: przez administrator