Do modyfikacji raz utworzonej tabeli służy polecenie ALTER TABLE
.
Możliwe zastosowania ALTER TABLE
:
ALTER TABLE pracownicy DROP CONSTRAINT fk_etat;
ALTER TABLE pracownicy ADD CONSTRAINT fk_etat FOREIGN KEY etat REFERENCES etaty(nazwa);
ALTER TABLE pracownicy DISABLE CONSTRAINT fk_etat;
ALTER TABLE pracownicy ENABLE CONSTRAINT fk_etat;
ALTER TABLE etaty ADD (xyz VARCHAR2(10));
ALTER TABLE etaty DROP COLUMN xyz;
ALTER TABLE etaty MODIFY (nazwa VARCHAR2(30));
RENAME etaty TO etaciki;
RENAME etaciki TO etaty;
przydzialy
kolumnę godziny
typu liczbowego.
opis_projektu
do 30 znaków.
Pracownicy
.
Spróbuj nałożyć więzy typu UNIQUE
na atrybut nazwisko
.
Co się dzieje?
imie
z tabeli Pracownicy
.
Do manipulacji sekwencjami służą polecenia: CREATE SEQUENCE
,
ALTER SEQUENCE
i DROP SEQUENCE
.
Przykład:
CREATE SEQUENCE seq_zesp START WITH 60 INCREMENT BY 10;
ALTER SEQUENCE seq_zesp INCREMENT BY 1;
DROP SEQUENCE seq_zesp;
seq_zesp
wyrzuci błąd przy próbie odczytania kolejnej wartości.
CREATE SEQUENCE seq_zesp START WITH 60 MAXVALUE 100 INCREMENT BY 10;
seq_zesp
:
INSERT INTO zespoly(id_zesp,nazwa,adres)
VALUES (seq_zesp.nextval, 'BAZY DANYCH', 'BANACHA 2');
seq_zesp
:
SELECT seq_zesp.currval FROM dual;
Zespoly
.
Indeksy tworzy się poleceniem CREATE INDEX
. Składnia:
CREATE [UNIQUE] INDEX nazwa ON tabela(kol1 [ASC|DESC], kol2 [ASC|DESC], ...);
Przykłady:
CREATE INDEX in_nazwiska ON pracownicy(nazwisko);
CREATE UNIQUE INDEX in_nazwiska ON pracownicy(nazwisko);
CREATE INDEX in_place ON etaty(placa_od,placa_do DESC);
nazwisko
tabeli pracownicy.
Do operowania na perspektywach służą polecenia CREATE VIEW
i DROP VIEW
. Składnia jest następująca:
CREATE VIEW nazwa[(kol1,kol2,...)] AS SELECT ... [WITH CHECK OPTION];
Przykłady:
CREATE VIEW Profesorowie(nazwisko,placa) AS
SELECT nazwisko,plana_pod + NVL(placa_dod,0) FROM Pracownicy WHERE etat = 'PROFESOR';
DROP VIEW Profesorowie;
CREATE VIEW Bogaci(id,nazwisko,etat) AS
SELECT id_prac, nazwisko, etat FROM Pracownicy
WHERE placa_pod + NVL(placa_dod,0) > (SELECT AVG(placa_pod + NVL(placa_dod,0) FROM Pracownicy);
CREATE VIEW prac_zesp(id,nazwisko,nazwa) AS
SELECT id_prac,nazwisko,nazwa FROM Pracownicy JOIN Zespoly USING(id_zesp);
Asystenci
udostępniającą identyfikator, nazwisko,
płacę i liczbę przepracowanych lat (użyj MONTHS_BETWEEN oraz SYSDATE) wszystkich asystentów.
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.
Place
wyświetl nazwiska i płace tych pracowników,
którzy zarabiają mniej niż średnia w ich zespole.
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ł.
Place_minimalne
zwiększyć pensję pracownika
o nazwisku Kotlarczyk do 1700zł. Co się dzieje?