Zadanie 3.

1. Utwórz sekwencję (dbo.MySequence) typu INT, o wartości minimalnej 1, z inkrementacją o 1.

2. Utwórz tabelę (dbo.Zabawki) zawierającą kolumny: ID (INT, domyślna wartość to kolejna wartość z sekwencji), KodProduktu (INT, NOT NULL), NazwaProduktu (VARCHAR(20), NOT NULL), Cena (INT, NOT NULL), Kategoria (VARCHAR(15), NOT NULL)

3. Wypełnij tabelę danymi (kod produktu, nazwa, cena, kategoria):

(12064, 'Lego Technic', 565, 'Zabawki'),
(12065, 'Lego City', 129, 'Zabawki'),
(12066, 'Lego City', 155, 'Zabawki'),
(12067, 'Lego Technic', 499, 'Zabawki'),
(12080, 'Need For Speed', 99, 'Gry'),
(12081, 'Tomb Raider', 99, 'Gry'),
(12082, 'The Sims', 159, 'Gry'),
(12083, 'Diablo', 179, 'Gry');

4. Usuń najdroższy produkt z każdej kategorii.

5. Do tabeli dodaj kolumnę Rabat, z wartością domyślną 0.

6. Przyznaj rabat wysokości 15% produktom o kodzie 12082, 12067.

7. Ustaw wartość rabatu na zero wszędzie tam, gdzie ma ma ona wartość NULL.

8. Usuń tabelę dbo.Zabawki oraz sekwencję dbo.MySequence.

Baza: Northwind, Tabela: dbo.Zabawki, Kolumny: ID, KodProduktu, Nazwaproduktu, Cena, Kategoria, Wynik: 6 rows (po modyfikacjach)

Rozwiązanie

1. CREATE SEQUENCE dbo.MySequence AS INT
MINVALUE 1;

–inkrementacja o 1 jest ustawiona domyślnie

2. CREATE TABLE dbo.Zabawki (
ID INT NOT NULL DEFAULT(NEXT VALUE FOR dbo.MySequence),
KodProduktu INT NOT NULL,
NazwaProduktu VARCHAR(20) NOT NULL,
Cena INT NOT NULL,
Kategoria VARCHAR(10) NOT NULL
);

3. INSERT INTO dbo.Zabawki (KodProduktu, NazwaProduktu, Cena, Kategoria)
VALUES
(12064, 'Lego Technic', 565, 'Zabawki'),
(12065, 'Lego City', 129, 'Zabawki'),
(12066, 'Lego City', 155, 'Zabawki'),
(12067, 'Lego Technic', 499, 'Zabawki'),
(12080, 'Need For Speed', 99, 'Gry'),
(12081, 'Tomb Raider', 99, 'Gry'),
(12082, 'The Sims', 159, 'Gry'),
(12083, 'Diablo', 179, 'Gry');

SELECT * FROM dbo.Zabawki;

4. DELETE FROM dbo.Zabawki
WHERE Cena in (
SELECT MAX(Cena)
FROM dbo.Zabawki
GROUP BY Kategoria
);

5. ALTER TABLE dbo.Zabawki
ADD Rabat INT DEFAULT(0);

6. UPDATE dbo.Zabawki
SET Rabat = 15
WHERE KodProduktu in(12082, 12067);

7. UPDATE dbo.Zabawki
SET Rabat = 0
WHERE Rabat IS NULL;

8. DROP TABLE dbo.Zabawki;

DROP SEQUENCE dbo.MySequence;

[collapse]