CREATE DATABASE ; -- Normalnie se robie tutaj baze danych dodajac wszystkie rzeczy do niej ;) CREATE TABLE `sklep`.`produkt` ( `id` INT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'pole id' , `nazwa` VARCHAR(100) NOT NULL , `cena` DECIMAL(10,4) NOT NULL , PRIMARY KEY (`id`)) ENGINE = InnoDB; -- dodaje przedmiot do bazy danych kropka zamiast przecinka INSERT INTO `produkt` (`id`, `nazwa`, `cena`) VALUES (NULL, 'kremówka', '12.37'); -- tutaj ify SELECT nazwa, cena FROM produkt WHERE cena > 20 AND cena < 30 -- latwiej tu SELECT nazwa, cena FROM produkt WHERE 20 > cena > 0.8 -- ASC albo DESC w góre albo w dół SELECT nazwa, cena FROM produkt WHERE 20 > cena > 0.8 ORDER BY cena ASC -- % dodaje litery przed albo potem SELECT nazwa, cena FROM produkt WHERE 20 > cena > 0.8 AND nazwa LIKE "%Bułka%" -- count zlicza SELECT COUNT(nazwa), nazwa, cena FROM `produkt` WHERE 20 > cena > 0.8 AND nazwa LIKE "%Bułka%" -- dodaje se masno ALTER TABLE `produkt` ADD `id_kategoria` INT UNSIGNED NOT NULL AFTER `cena`, ADD `data_utworzenia` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP AFTER `id_kategoria`; -- tutaj count SELECT count(nazwa), id_kategoria FROM produkt GROUP BY id_kategoria -- data utworzenia SELECT id_kategoria, nazwa, cena FROM produkt WHERE data_utworzenia>'2018-12-15' -- zmiana UPDATE `produkt` SET nazwa = "ciastko lepsze" WHERE id = 2 UPDATE `produkt` SET nazwa = "ciastko lepsze", cena = cena+0.2*cena WHERE id = 2 -- REFERENCES ALTER TABLE `produkt` ADD FOREIGN KEY (`id_kategoria`) REFERENCES `kategoria`(`id`) ON DELETE RESTRICT ON UPDATE RESTRICT; -- łaczenie tabel SELECT p.id, p.nazwa, cena, id_kategoria,k.id, k.nazwa FROM produkt p, kategoria k WHERE id_kategoria="k.id" -- zagniezdzona kwerenda UPDATE produkt SET nazwa = "drogie" WHERE id_kategoria = (SELECT id FROM kategoria WHERE nazwa = "drogie") -- masno z concatem UPDATE produkt SET nazwa = concat('drogi',nazwa) WHERE id_kategoria = (SELECT id FROM kategoria WHERE nazwa = "drogie") -- daje update wielu UPDATE produkt SET cena = cena * 1.23 WHERE id_kategoria IN (SELECT id FROM kategoria WHERE nazwa = "drogie" OR nazwa = "słodkie") -- update z zapytaniamia UPDATE produkt SET id_kategoria = (SELECT id FROM kategoria WHERE nazwa = "bułki zagraniczne") WHERE id_kategoria = (SELECT id FROM kategoria WHERE nazwa = "bułki") -- delete DELETE FROM kategoria WHERE nazwa = "słodkie" DELETE FROM produkt WHERE id_kategoria IN (SELECT id FROM kategoria WHERE nazwa LIKE "%o%") CREATE TABLE tag ( id INTEGER UNSIGNED PRIMARY KEY NOT NULL AUTO_INCREMENT , nazwa VARCHAR(100) NOT NULL ) INSERT INTO tag (nazwa) VALUES ("bułka") INSERT INTO tag (nazwa) VALUES ("krem") INSERT INTO tag (nazwa) VALUES ("slodka") INSERT INTO tag (nazwa) VALUES ("zwykła") INSERT INTO tag (nazwa) VALUES ("droga") INSERT INTO tag (nazwa) VALUES ("tania") --CO POWODUJE OPCJA NOT NULL W PODANYM CZYMS? --CREATE TABLE tag (id INTEGER UNSIGNED NOT NULL) --A) ZABRANIA POZOSTAWIENIA POLA PUSTEGO !!!!!! --B) POZWALA NA POZOSTAWIENIE POLA PUSTEGO --C) DODAJE MOZLIWOSC PISANIA -- łaczenie elementów z tabel fajnie SELECT p.id, p.nazwa, cena, id_kategoria, t.nazwa FROM produkt p, produkt_tag pt, tag t WHERE t.nazwa="Bułka" -- nazwa AND pt.id_tag=t.id -- produkt tag id tag = tag id AND pt.id_produkt=p.id -- produkt tag id produkt = produkt id -- łączenie z inner join SELECT p.id, p.nazwa, cena, id_kategoria,k.id, k.nazwa FROM produkt p INNER JOIN kategoria k ON p.id_kategoria = k.id -- kolejne innery -- SELECT p.id, p.nazwa AS Nazwa_Produktu, p.cena, pt.id_produkt, pt.id_tag, t.nazwa AS Nazwa_Tagu FROM produkt p INNER JOIN produkt_tag pt ON p.id = pt.id_produkt RIGHT JOIN tag t ON t.id = pt.id_tag SELECT t.nazwa AS Nazwa_Tagu, count(pt.id_produkt) AS Wystapienia FROM produkt p INNER JOIN produkt_tag pt ON p.id = pt.id_produkt RIGHT JOIN tag t ON t.id = pt.id_tag GROUP BY t.nazwa ORDER BY Wystapienia DESC SELECT t.nazwa AS Nazwa_Tagu, MAX(Wystapienia) AS Wystapienia FROM tag t, (SELECT t.nazwa AS Nazwa_Tagu, count(pt.id_produkt) AS Wystapienia FROM produkt p INNER JOIN produkt_tag pt ON p.id = pt.id_produkt RIGHT JOIN tag t ON t.id = pt.id_tag GROUP BY t.nazwa ORDER BY Wystapienia DESC ) res SELECT t.nazwa AS Nazwa_Tagu, count(pt.id_produkt) AS Wystapienia FROM produkt p INNER JOIN produkt_tag pt ON p.id = pt.id_produkt RIGHT JOIN tag t ON t.id = pt.id_tag GROUP BY t.nazwa ORDER BY Wystapienia DESC LIMIT 1 Zamowienie id data klient adres zamowiony produkt id id produktu sztuki id_zamowienia SELECT id, data, klient from zamowienie SELECT p.id, p.nazwa AS Nazwa_Produktu, zp.sztuki, z.klient AS Imie_Nazwisko, z.data, z.adres, p.cena AS Cena_Netto,'23%' AS VAT ,p.cena*1.23 AS Cena_Brutto FROM produkt p INNER JOIN zamowienieprodukt zp ON zp.id_produkt = p.id INNER JOIN zamowienie z ON z.id=zp.id_zamowienie WHERE z.id=2