przydzialy
kolumnę godziny
typu liczbowego.
Rozwiązanie:
ALTER TABLE przydzialy ADD godziny NUMERIC(3);
Rozwiązanie:
ALTER TABLE projekty DISABLE CONSTRAINT un_opis;
opis_projektu
do 30 znaków.
Rozwiązanie:
ALTER TABLE projekty MODIFY opis_projektu CHARACTER VARYING (30);
Pracownicy
.
Spróbuj nałożyć więzy typu UNIQUE
na atrybut nazwisko
.
Co się dzieje?
Rozwiązanie:
INSERT INTO pracownicy(id_prac,nazwisko) VALUES(300,'Kowalski');
ALTER TABLE pracownicy ADD UNIQUE(nazwisko);
imie
z tabeli Pracownicy
.
Rozwiązanie:
ALTER TABLE pracownicy DROP COLUMN imie;
Rozwiązanie:
CREATE SEQUENCE seq START WITH 70 MAXVALUE 99 INCREMENT BY 1;
Zespoly
.
Rozwiązanie:
INSERT INTO zespoly(id_zesp, nazwa, adres) VALUES (seq.NEXTVAL, 'UKLADY CYFROWE','PIOTROWO 4');
INSERT INTO zespoly(id_zesp, nazwa, adres) VALUES (seq.NEXTVAL, 'ELEKTRONIKA','PIOTROWO 5');
nazwisko
tabeli pracownicy.
Rozwiązanie:
CREATE UNIQUE INDEX in_nazwiska ON pracownicy(nazwisko);
Rozwiązanie:
INSERT INTO pracownicy(id_prac,nazwisko) VALUES(300, 'Nowak');
Asystenci
udostępniającą identyfikator, nazwisko,
płacę i liczbę przepracowanych lat (użyj MONTHS_BETWEEN oraz SYSDATE) wszystkich asystentów.
Rozwiązanie:
CREATE VIEW asystenci(id, nazwisko, placa, lata) AS
SELECT id_prac, nazwisko, placa_pod, TRUNC(months_between(sysdate,zatrudniony)/12)
FROM pracownicy WHERE etat='ASYSTENT';
Place
udostępniającą numer zespolu, średnią, minimalną
i maksymalną płacę w zespole (wraz z dodatkami), fundusz płac (suma pieniędzy wypłacanych
miesięcznie pracownikowi) oraz liczbę wypłacanych pensji i liczbę dodatków.
Rozwiązanie:
CREATE VIEW place(id_zesp,avg_placa,min_placa,max_placa, fundusz, liczba_pensji, liczba_dodatkow) AS
SELECT id_zesp,AVG(placa_pod+nvl(placa_dod,0)),
MIN(placa_pod+nvl(placa_dod,0)),
MAX(placa_pod+nvl(placa_dod,0)),
SUM(placa_pod+nvl(placa_dod,0)),
COUNT(placa_pod),
COUNT(placa_dod)
FROM pracownicy NATURAL RIGHT OUTER JOIN zespoly
GROUP BY id_zesp;
Place
wyświetl nazwiska i płace tych pracowników,
którzy zarabiają mniej niż średnia w ich zespole.
Rozwiązanie:
SELECT nazwisko, placa_pod+NVL(placa_dod,0)
FROM pracownicy NATURAL JOIN place
WHERE placa_pod+NVL(placa_dod,0) < avg_placa;
Place_minimalne
udostępniającą dane pracowników
zarabiających poniżej 1500zł. Perspektywa musi zapewniać weryfikację danych, w taki sposób,
aby za jej pomocą nie można było podnieść pensji pracownika powyżej 1500zł.
Rozwiązanie:
CREATE VIEW place_minimalne AS
SELECT * FROM pracownicy
WHERE placa_pod < 1500
WITH CHECK OPTION;
Place_minimalne
zwiększyć pensję pracownika
o nazwisku Kotlarczyk do 1700zł. Co się dzieje?
Rozwiązanie:
UPDATE place_minimalne SET placa_pod=1700
WHERE nazwisko='Kotlarczyk';