--1. Na podstawie diagramu utwórz bazę danych o następujących tabelach:
CREATE TABLE ustroje_polityczne
(
id NUMBER(3) CONSTRAINT ustroje_polityczne_idPK PRIMARY KEY,
nazwa VARCHAR2(45) NOT NULL
);
CREATE TABLE jezyki
(
id NUMBER(3) CONSTRAINT jezyki_idPK PRIMARY KEY,
nazwa VARCHAR2(20) NOT NULL CONSTRAINT jezyki_nazwaUNQ UNIQUE
);
CREATE TABLE panstwa
(
id NUMBER(3) CONSTRAINT panstwa_idPK PRIMARY KEY,
nazwa VARCHAR2(50) NOT NULL,
powierzchnia NUMBER NOT NULL CONSTRAINT panstwa_powierzchniaCH CHECK(powierzchnia >= 0),
ludnosc NUMBER NOT NULL CONSTRAINT panstwa_ludnoscCH CHECK(ludnosc >= 0),
stolica VARCHAR2(30) CONSTRAINT panstwa_stolicaNN NOT NULL,
dewiza VARCHAR2(60),
data_odzyskania_niepodlegosci DATE,
id_ustroju NUMBER(3) NOT NULL CONSTRAINT panstwa_id_ustrojuFK REFERENCES ustroje_polityczne(id)
);
CREATE TABLE panstwa_jezyki
(
id_panstwa NUMBER(3) CONSTRAINT panstwa_jezyki_id_panstwaFK REFERENCES panstwa(id) ON DELETE CASCADE,
id_jezyka NUMBER(3) CONSTRAINT panstwa_jezyki_id_jezykaFK REFERENCES jezyki(id) ON DELETE CASCADE,
CONSTRAINT panstwa_jezykiPK PRIMARY KEY(id_panstwa,id_jezyka)
);
--2. Utwórz indeks na kolumnie NAZWA w tabeli PANSTWA.
CREATE INDEX panstwa_nazwaINDEX ON panstwa(nazwa);
--3. Utwórz indeks unikalny na kolumnie NAZWA w tabeli USTROJE_POLITYCZNE.
CREATE UNIQUE INDEX ustroje_polityczne_nazwaINDEX on ustroje_polityczne(nazwa);
--4. Wyświetl informacje o ograniczeniach nałożonych na tabelę PANSTWA.
SELECT * FROM USER_CONSTRAINTS
WHERE TABLE_NAME = 'PANSTWA';
--5. Wyświetl informacje o indeksach stworzonych dla tabeli USTROJE_POLITYCZNE.
SELECT * FROM USER_INDEXES
WHERE TABLE_NAME = 'USTROJE_POLITYCZNE';
--6. Wyświetl informacje o indeksach stworzonych dla tabeli JEZYKI.
SELECT * FROM USER_INDEXES
WHERE TABLE_NAME = 'JEZYKI';
--7. Wpisz do tabel dane wykorzystując poniższe informacje.
CREATE SEQUENCE panstwa_idSEQ
START WITH 1
INCREMENT BY 1;
INSERT INTO ustroje_polityczne
VALUES(1,'REPUBLIKA PARLAMENTARNA');
INSERT INTO ustroje_polityczne
VALUES(2,'MONARCHIA KONSTYTUCYJNA');
INSERT INTO ustroje_polityczne
VALUES(3,'REPUBLIKA FEDERALNA');
INSERT INTO ustroje_polityczne
VALUES(4,'REPUBLIKA');
INSERT INTO ustroje_polityczne
VALUES(5,'MONARCHIA PARLAMENTARNA');
INSERT INTO jezyki
VALUES(1,'ANGIELSKI');
INSERT INTO jezyki
VALUES(2,'NIEMIECKI');
INSERT INTO jezyki
VALUES(3,'FRANCUSKI');
INSERT INTO jezyki
VALUES(4,'SUAHILI');
INSERT INTO jezyki
VALUES(5,'WŁOSKI');
INSERT INTO jezyki
VALUES(6,'CZESKI');
INSERT INTO jezyki
VALUES(7,'POLSKI');
INSERT INTO jezyki
VALUES(8,'ROMANSZ');
INSERT INTO jezyki
VALUES(9,'HISZPAŃSKI');
INSERT INTO panstwa
VALUES(panstwa_idSEQ.NEXTVAL,'CZECHY',78866,10507566,'PRAGA','PRAWDA ZWYCIEZA',NULL,1);
INSERT INTO panstwa_jezyki
VALUES(1,6);
INSERT INTO panstwa
VALUES(panstwa_idSEQ.NEXTVAL,'SZWAJCARIA',41290,7725200,'ZURYCH','JEDEN ZA WSZYSTKICH, WSZYSCY ZA JEDNEGO',TO_DATE('24.10.1648','DD.MM.YYYY'),3);
INSERT INTO panstwa_jezyki
VALUES(2,2);
INSERT INTO panstwa_jezyki
VALUES(2,3);
INSERT INTO panstwa_jezyki
VALUES(2,5);
INSERT INTO panstwa_jezyki
VALUES(2,8);
INSERT INTO panstwa
VALUES(panstwa_idSEQ.NEXTVAL,'KENIA',582650,3753840,'NAIROBI','PRACUJEMY RAZEM',TO_DATE('12.12.1963','DD.MM.YYYY'),4);
INSERT INTO panstwa_jezyki
VALUES(3,4);
INSERT INTO panstwa_jezyki
VALUES(3,1);
INSERT INTO panstwa
VALUES(panstwa_idSEQ.NEXTVAL,'POLSKA',322575,38173000,'WARSZAWA',NULL,TO_DATE('11.11.1918','DD.MM.YYYY'),5);
INSERT INTO panstwa_jezyki
VALUES(4,7);
INSERT INTO panstwa
VALUES(panstwa_idSEQ.NEXTVAL,'WIELKA BRYTANIA',244820,62300000,'LONDYN','BOG I MOJE PRAWO',NULL,5);
INSERT INTO panstwa_jezyki
VALUES(4,1);
--8. Po wstawieniu danych zatwierdź zmiany.
COMMIT;
--9. Wyświetl kolejno zawartość poszczególnych tabel.
SELECT * FROM ustroje_polityczne;
SELECT * FROM jezyki;
SELECT * FROM panstwa;
SELECT * FROM panstwa_jezyki;
--10. Zmień ludność Polski na 38538447.
UPDATE panstwa
SET ludnosc = 38538447
WHERE nazwa = 'POLSKA';
--11. Zmień powierzchnię Polski na 312679 (powierzchnia administracyjna).
UPDATE panstwa
SET powierzchnia = 312679
WHERE nazwa = 'POLSKA';
--12. Zatwierdź zmiany.
COMMIT;
--13. W kolumnie STOLICA zmień Warszawę na Kraków. Wyświetl nazwy stolic wszystkich państw.
UPDATE panstwa
SET stolica = 'KRAKOW'
WHERE nazwa = 'POLSKA';
SELECT stolica FROM panstwa;
--14. Wycofaj zmianę. Wyświetl nazwy stolic wszystkich państw.
ROLLBACK;
SELECT stolica FROM panstwa;
--15. Spraw, aby kolumna STOLICA nie była wymagana i w miejsce stolicy Szwajcarii wpisz wartość pustą.
ALTER TABLE panstwa
DISABLE CONSTRAINT panstwa_stolicaNN;
UPDATE panstwa
SET stolica = NULL
where nazwa = 'SZWAJCARIA';
--16. Jako stolicę Szwajcarii wpisz BERNO i spraw, aby kolumna STOLICA na nowo była wymagana.
UPDATE panstwa
SET stolica = 'BERNO'
WHERE nazwa = 'SZWAJCARIA';
ALTER TABLE panstwa
ENABLE CONSTRAINT panstwa_stolicaNN;
--18. Usuń wiersz zawierający dane Kenii. Jeśli potrzeba usuń najpierw rekordy pokrewne.
DELETE FROM panstwa
WHERE nazwa = 'KENIA'; --panstwa_jezyki zalatwia ON DELETE CASCADE
--19. Zmień nazwę tabeli PANSTWA na PANSTWA_EUROPEJSKIE. Wyświetl informacje o ograniczeniach nałożonych na tabelę PANSTWA_EUROPEJSKIE.
ALTER TABLE panstwa
RENAME TO panstwa_europejskie;
SELECT * FROM USER_CONSTRAINTS
WHERE TABLE_NAME = 'PANSTWA_EUROPEJSKIE';
--20. Zmień nazwę kolumny POWIERZCHNIA na POWIERZCHNIA_ADMINISTRACYJNA. Wyświetl informacje o kolumnach tabeli PANSTWA_EUROPEJSKIE.
ALTER TABLE panstwa_europejskie
RENAME COLUMN powierzchnia TO powierzchnia_administracyjna;
DESC panstwa_europejskie;
--22. Utwórz nową tabelę PANSTWA2 zawierającą tylko nazwy państw, których powierzchnia administracyjna przekracza 100 000 km2. Wyświetl zawartość tej tabeli.
CREATE TABLE panstwa2
AS SELECT *
FROM panstwa_europejskie
WHERE powierzchnia_administracyjna > 100000;
SELECT * FROM panstwa2;
--23. Do tabeli PANSTWA2 dodaj wymaganą kolumnę CZY_DANE_AKTUALNE (zawierającą jedną literę) o wartości domyślnej T. Wyświetl zawartość tabeli.
ALTER TABLE panstwa2
ADD (czy_dane_aktualne CHAR(1) DEFAULT 'T');
ALTER TABLE panstwa2
ADD CONSTRAINT panstwa2_czy_dane_aktualneCH CHECK(czy_dane_aktualne = UPPER(czy_dane_aktualne));
--26. Usuń ostatnio wprowadzone ograniczenie typu CHECK.
ALTER TABLE panstwa2
DROP CONSTRAINT panstwa2_czy_dane_aktualneCH;
--27. Usuń kolumnę CZY_DANE_AKTUALNE.
ALTER TABLE panstwa2
DROP COLUMN czy_dane_aktualne;
--28. W tabeli PANSTWA2 dołóż ograniczenie unikalności kolumny NAZWA.
ALTER TABLE panstwa2
ADD CONSTRAINT panstwa2_nazwaUNQ UNIQUE(nazwa);
--29. Obetnij tabelę PANSTWA2.
--TRUNCATE TABLE panstwa2;???
DROP TABLE panstwa2;
--30. Usuń indeks utworzony na kolumnie NAZWA w tabeli PANSTWA_EUROPEJSKIE.
DROP INDEX panstwa_nazwaINDEX;
--31. Napisz polecenia, które usunęłyby wszystkie ze stworzonych w tym ćwiczeniu tabel oraz utworzoną sekwencję.
DROP SEQUENCE panstwa_idSEQ;
DROP INDEX ustroje_polityczne_nazwaINDEX;
DROP TABLE panstwa_jezyki;
DROP TABLE panstwa_europejskie;
DROP TABLE jezyki;
DROP TABLE ustroje_polityczne;
Wyszukiwarka
Podobne podstrony:
cwiczenia tworzenie tabel1Metodologia SPSS Jakub Niewiarkowski ćwiczenia 7 Tworzenie wskaźnikówcwiczenia tworzenie tabel1Ćwiczenie 7 – Tworzenie list wyboruTworzenie stron WWW Ćwiczenia praktyczne Wydanie IIITworzenie makr w VBA dla Excela 20032007 ĆwiczeniaĆwiczenia Active Directory jednostki organizacyjne tworzeniewięcej podobnych podstron