- 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