Tagi: delete from

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]

Zadanie 2.

1. Utwórz tabelę (u mnie nazywa się Tab1) zawierającą trzy kolumny: id (będącą identyfikatorem, zaczynającym od wartości 1 z inkrementacją o 1), orderid (typ numeryczny), company (typ tekstowy). Żadna z kolumn nie przyjmuje wartości NULL.

2. Utworzoną tabelę wypełnij danymi, pochodzącymi z tabeli dbo.Orders; niech będzie to 10 najnowszych zamówień (OrderID) oraz odpowiadające im firmy (CustomerID).

3. Dodaj wiersz z numerem zamówienia 11078 i firmą LILAS.

4. Usuń pierwsze trzy wiersze (id od 1 do 3).

5. Zmień nazwę firmy z LILAS na ABCDE.

6. Zwróć przedostatni dodany rekord (bazując na identyfikatorze id).

7. Usuń tabelę stworzoną w punkcie 1.

Baza: Northwind, Tabela: dbo.Orders, Kolumny: OrderID, CustomerID, Wynik: 8 rows (po modyfikacjach)

z2

 

 

 

 

 

 

 

Rozwiązanie

1. CREATE TABLE dbo.Tab1 (
id INT NOT NULL IDENTITY(1,1),
orderid INT NOT NULL,
company VARCHAR(10) NOT NULL
);

 

2. INSERT INTO dbo.Tab1(orderid, company)
SELECT OrderID, CustomerID
FROM dbo.Orders
ORDER BY OrderID DESC
OFFSET 0 ROWS FETCH FIRST 10 ROWS ONLY;

 

3. INSERT INTO dbo.Tab1(orderid, company)
VALUES (11078, 'LILAS');

 

4. DELETE FROM dbo.Tab1
WHERE id in (1, 2, 3);

 

5. UPDATE dbo.Tab1
SET company = 'ABCDE'
WHERE company = 'LILAS';

 

6. SELECT *
FROM dbo.Tab1
WHERE id = IDENT_CURRENT('dbo.Tab1') - 1;

 

7. DROP TABLE dbo.Tab1;

[collapse]

Zadanie 1.

1. Całą zawartość tabeli dbo.Employees (baza Northwind) przekopiuj do dbo.Emp1 (za pomocą polecenia SELECT INTO). W dalszej części modyfikujemy tabelę dbo.Emp1.

2. Dla pracownika o ID 3, do imienia dodaj ‚A.’ (np. Jan -> Jan A.)

3. Pracownikowi o ID 8 zmień nazwisko na Smith.

4. Usuń dwóch najstarszych pracowników (wg daty urodzenia).

5. Po wykonaniu ćwiczeń usuń tabelę dbo.Emp1

Baza: Northwind, Tabela: dbo.Employees, Kolumny: EmployeeID, FirstName, LastName, BirthDate

Screen przedstawia zawartość tabeli po wykonaniu punktów 1-4.

z1

 

 

 

 

 

 

 

Rozwiązanie

1. SELECT * INTO dbo.Emp1
FROM dbo.Employees;

2. UPDATE dbo.Emp1
SET FirstName = FirstName + ' A.'
WHERE EmployeeID = 3;

3. UPDATE dbo.Emp1
SET LastName = 'Smith'
WHERE EmployeeID = 8;

4. DELETE FROM dbo.Emp1
WHERE EmployeeID IN (
SELECT TOP(2) EmployeeID
FROM dbo.Emp1
ORDER BY BirthDate);

5. DROP TABLE dbo.Emp1;

[collapse]