tworzenie tabel CREATE TABLE autor1_s (id_autora NUMBER(20), imie VARCHAR(20), nazwisko VARCHAR(20)); CREATE TABLE ksiaszka_s (id_ksiaszki NUMBER(20), tytul VARCHAR(20), cena NUMBER(10,2) ,liczba NUMBER(4)); CREATE TABLE ksiaszka_szczeguly_s (id_aksiaszki NUMBER(20), isbn VARCHAR(20), data_wydania DATE , oprawa VARCHAR(10)); CREATE TABLE autor_ksiaszka_s (id_autora NUMBER(20),id_ksiaszki NUMBER(20) ); CREATE TABLE ksiaszka_szczeguly_s (id_aksiaszki NUMBER(20), isbn VARCHAR(20), data_wydania DATE default '99-12-02', oprawa VARCHAR(10)); na?o?enie kluczy g??wnych ALTER TABLE autor1_s ADD CONSTRAINT kg_1 PRIMARY KEY (id_autora); ALTER TABLE ksiaszka_s ADD CONSTRAINT kg_2 PRIMARY KEY (id_ksiaszki); ALTER TABLE ksiaszka_szczeguly_s ADD CONSTRAINT kg_3 PRIMARY KEY (id_aksiaszki); ALTER TABLE autor_ksiaszka_s ADD CONSTRAINT kg_4 PRIMARY KEY (id_autora, id_ksiaszki); ustawienie kluczy obcych ALTER TABLE autor_ksiaszka_s ADD CONSTRAINT kg_11 FOREIGN KEY (id_autora) REFERENCES autor1_s(id_autora); ALTER TABLE autor_ksiaszka_s ADD CONSTRAINT kg_12 FOREIGN KEY (id_ksiaszki) REFERENCES ksiaszka_s(id_ksiaszki); zakres danej kolumny ALTER TABLE ksiaszka_s ADD CONSTRAINT kg_31 CHECK (cena>0); ALTER TABLE autor1_s ADD CONSTRAINT kg_32 CHECK (imie IS NOT NULL OR nazwisko IS NOTSELE NULL); ALTER TABLE ksiaszka_szczeguly_s ADD CONSTRAINT kg_33 CHECK (oprawa ='miekka' OR oprawa = 'twarda'); ALTER TABLE autor1_s ADD CONSTRAINT kg_32 CHECK (imie IS NOT NULL); ALTER TABLE autor1_s ADD CONSTRAINT kg_34 CHECK (nazwisko IS NOT NULL); ALTER TABLE ksiaszka_opis_s ADD CONSTRAINT kg_33 CHECK (oprawa ='miekka' OR oprawa = 'twarda' OR oprawa = 'skora'); usumni?cie ograniczenia ALTER TABLE autor1_s DROP CONSTRAINT kg_32; ALTER TABLE ksiaszka_opis_s DROP CONSTRAINT kg_33; zmiana nzwy tabeli ALTER TABLE ksiaszka_szczeguly_s RENAME TO ksiaszka_opis_s; zmiana nazwy tabeli ALTER TABLE ksiaszka_s RENAME COLUMN liczba TO liczba_egzemplarzy; zmiana typu kolumny ALTER TABLE autor1_s MODIFY (imie VARCHAR(16)); ALTER TABLE ksiaszka_opis_s MODIFY (ISBN NUMBER(20)); usuwanie ograniczenia ALTER TABLE ksiaszka_s DROP CONSTRAINT kg_31; dodawanie kolumny ALTER TABLE ksiaszka_s ADD wydawca VARCHAR(20); usuwanie kolumny ALTER TABLE ksiaszka_s DROP COLUMN wydawca; ===================================================2================================================== pokazywanie co posiadamy w tabeli SELECT * from autor1_s ; SELECT CENA, ((CENA*0.1)+CENA) FROM ksiaszka_s; SELECT imie, nazwisko FROM pracownik_personalia ORDER BY nazwisko, imie DESC; SELECT imie, nazwisko, nip FROM pracownik_personalia WHERE nazwisko LIKE '%ski' AND nip>1500000000 AND nip<1600000000 SELECT id_pracownika, pensja+premia Zarobki FROM pracownik; SELECT imie, nazwisko, stanowisko,NVL(premia,0) FROM pracownik_personalia, pracownik WHERE premia is not null AND pracownik_personalia.id_pracownika=pracownik.id_pracownika; SELECT imie, nazwisko, stanowisko,NVL(premia,0) FROM pracownik_personalia, pracownik WHERE pracownik_personalia.id_pracownika=pracownik.id_pracownika AND premia is null; SELECT imie, nazwisko, stanowisko,NVL(premia,0) FROM pracownik_personalia, pracownik WHERE pracownik_personalia.id_pracownika=pracownik.id_pracownika; SELECT imie, nazwisko, stanowisko,NVL(premia,0) FROM pracownik_personalia A, pracownik B WHERE A.id_pracownika=B.id_pracownika; SELECT id_pracownika, pensja, id_przedzialu, dolna_granica, gorna_granica FROM pracownik, przedzial_zarobkow WHERE (pensja<=gorna_granica AND pensja>=dolna_granica) AND (id_przedzialu=1 OR id_przedzialu=2); SELECT id_pracownika, pensja, id_przedzialu, dolna_granica, gorna_granica FROM pracownik, przedzial_zarobkow WHERE pensja between dolna_granica AND gorna_granica AND (id_przedzialu=1 OR id_przedzialu=2); SELECT id_pracownika, pensja, id_przedzialu, dolna_granica, gorna_granica FROM pracownik, przedzial_zarobkow WHERE pensja between dolna_granica AND gorna_granica AND id_przedzialu in (1,2); SELECT imie, nazwisko, pensja FROM pracownik A, przedzial_zarobkow, pracownik_personalia B WHERE (A.id_pracownika=B.id_pracownika) AND (pensja between dolna_granica AND gorna_granica) AND id_przedzialu in (1,2); *** Ci?g znak?w: 'xyz' Alias: "xyz", " " ??czenie ci?g?w znak?w: || ??czenie p?l: , SELECT 'Pracownik '|| imie as Zarobki, nazwisko || ' jest zatrudniony na stanowisku ' || stanowisko as Zarobki FROM Pracownik, Pracownik_personalia; SELECT 'Pracownik '|| imie as " ", nazwisko || ' jest zatrudniony na stanowisku ' || stanowisko as " " FROM Pracownik, Pracownik_personalia; SELECT DISTINCT 'Pracownik '|| CONCAT(UPPER(imie), CONCAT(' ',UPPER(nazwisko))) || ' jest zatrudniony na stanowisku ' || INITCAP(stanowisko) || '.' as " " FROM Pracownik, Pracownik_personalia; SELECT DISTINCT 'Pracownik ' || imie as " ", nazwisko || ' pracuje w dziale ' || SUBSTR(UPPER(REPLACE(nazwa, 'Ksiegowosc', 'ksig')), 0, 4) || '.' as " " FROM Pracownik_personalia, Pracownik PR, Dzial DZ WHERE PR.id_dzialu=DZ.id_dzialu; SELECT DISTINCT imie as "Imie", nazwisko as "Nazwisko" FROM Pracownik_personalia PR ORDER BY Length(PR.nazwisko); SELECT DISTINCT imie,nazwisko, pensja, data_zatrudnienia, nazwa as "Nazwa dzialu" FROM Pracownik_personalia PPR, Pracownik PR, Dzial DZ WHERE PR.id_dzialu=DZ.id_dzialu and PPR.nazwisko=INITCAP(LOWER('Wojtowicz')); SELECT DISTINCT imie,nazwisko, pensja, data_zatrudnienia, nazwa as "Nazwa dzialu" FROM Pracownik_personalia PPR, Pracownik PR, Dzial DZ WHERE PR.id_dzialu=DZ.id_dzialu and PPR.nazwisko=INITCAP(LOWER('&Podaj_nazwisko')); SELECT DISTINCT nazwisko,imie, TO_CHAR(data_zatrudnienia, 'DAY') FROM Pracownik PR , Pracownik_personalia PPR WHERE PR.id_pracownika=PPR.id_pracownika ORDER BY nazwisko; SELECT DISTINCT nazwisko,imie, TO_CHAR(data_zatrudnienia, 'DD MONTH YYYY HH24:MI:SS') FROM Pracownik PR , Pracownik_personalia PPR WHERE PR.id_pracownika=PPR.id_pracownika ORDER BY nazwisko; SELECT imie, nazwisko, nip FROM Pracownik_personalia WHERE SUBSTR(nip, 0, 2)=15; SELECT P1.id_pracownika as "idPrac", P2.id_przelozonego as "idPrzel" , P1.data_zatrudnienia-P2.data_zatrudnienia as "roznDat" FROM Pracownik P1, Pracownik P2 WHERE P1.id_przelozonego=P2.id_pracownika; SELECT P1.id_pracownika as "idPrac", P2.id_przelozonego as "idPrzel" , FLOOR(MONTHS_BETWEEN(P1.data_zatrudnienia, P2.data_zatrudnienia)) as "roznDat" FROM Pracownik P1, Pracownik P2 WHERE P1.id_przelozonego=P2.id_pracownika; SELECT P1.id_pracownika as "idPrac", P2.id_przelozonego as "idPrzel" , FLOOR(MONTHS_BETWEEN(P1.data_zatrudnienia, P2.data_zatrudnienia)/12) as "roznDat" FROM Pracownik P1, Pracownik P2 WHERE P1.id_przelozonego=P2.id_pracownika; SELECT P1.id_pracownika as "idPrac", P2.id_przelozonego as "idPrzel" , ROUND(MONTHS_BETWEEN(P1.data_zatrudnienia, P2.data_zatrudnienia)/12, 2) as "roznDat" FROM Pracownik P1, Pracownik P2 WHERE P1.id_przelozonego=P2.id_pracownika; SELECT M1.nazwisko as "idPrac", M2.nazwisko as "idPrzel" , ROUND(MONTHS_BETWEEN(P1.data_zatrudnienia, P2.data_zatrudnienia)/12, 2) as "roznDat" FROM Pracownik P1, Pracownik P2, Pracownik_personalia M1, Pracownik_personalia M2 WHERE P1.id_przelozonego=P2.id_pracownika and M1.id_pracownika=P1.id_pracownika and M2.id_pracownika=P2.id_pracownika; wstawienie dotabeli uzupe?nien INSERT INTO autor1_s VALUES (1,'ADAM','MICKIEWICZ'); INSERT INTO autor1_s VALUES (2,'Hendryk','Sienkiewicz'); INSERT INTO ksiaszka_s VALUES (1, 'Potop', 53.50, 24); INSERT INTO ksiaszka_s VALUES (2, 'Pan Tadeusz', NULL, 10); INSERT INTO ksiaszka_s VALUES (3, 'Trylogia', 1150.00, 15); INSERT INTO ksiaszka_s VALUES (4, 'Ballady i romanse', 27.60, NULL); INSERT INTO ksiaszka_s VALUES (5, 'NULL', 15.90, 30); INSERT INTO ksiaszka_opis_s VALUES (1,0123456789,'10/05/23','twarda'); INSERT INTO ksiaszka_opis_s VALUES (2,0123456788,'10/05/02','miakka'); INSERT INTO ksiaszka_opis_s VALUES (3,0123456787,'09/01/12','skora'); INSERT INTO ksiaszka_opis_s VALUES (4,NULL,'07/03/12',NULL); INSERT INTO ksiaszka_opis_s VALUES (5,0123456786,NULL,'twarda'); INSERT INTO autor_ksiaszka_s VALUES (1,3); INSERT INTO autor_ksiaszka_s VALUES (1,5); INSERT INTO autor_ksiaszka_s VALUES (2,2); INSERT INTO autor_ksiaszka_s VALUES (2,4); INSERT INTO autor_ksiaszka_s VALUES (1,1); INSERT INTO autor_ksiaszka_s VALUES (2,1); INSERT INTO ksiaszka_szczeguly_s VALUES(3, 1010101010, default, 'miekka'); // default doda warto?? domy?ln? je?li taka ustalona INSERT INTO ksiaszka_szczeguly_s (idk, oprawa, isbn) values (4, 'miekka', 9876543210); // w miejsce daty wydania wstawi warto?? domy?ln? oraz idk,oprawa,isbn INSERT INTO ksiaszka_szczeguly_s VALUES(3, 1010101010, '88-12-02', 'twarda'); usuwanie wierszy DELETE FROM ksiaszka_szczeguly_s WHERE id=2 OR id=3; sprawdzenie zawarto?ci tabeli select * FROM autor1_s; usuwanie tabel DROP TABLE autor; aktualizowanie danych UPDATE ksiaszka_s SET CENA=((CENA*0,1)+CENA); UPDATE ksiaszka_s SET liczba_egzemplarzy=20 WHERE idk=5; // aktualizowanie KONKRETNEGO REKORDU select CENA, ((CENA*0.1)+CENA) FROM ksiaszka_s; ###### Zlozone zapytania (PS 6) ######## Select id_dzialu, count(*) FROM Pracownik GROUP BY id_dzialu; // Zadanie 5 SELECT id_dzialu,nazwa FROM Dzial WHERE id_dzialu=( SELECT id_dzialu FROM Pracownik GROUP BY id_dzialu HAVING count(*)=( Select MAX(count(*)) FROM Pracownik GROUP BY id_dzialu)); // Zadanie 6 SELECT id_pracownika, stanowisko, pensja FROM Pracownik PR WHERE pensja<( SELECT Avg(pensja) FROM Pracownik WHERE stanowisko=PR.stanowisko); SELECT PR.id_pracownika, nazwisko, stanowisko, pensja FROM Pracownik PR, Pracownik_personalia PPR WHERE PR.id_pracownika=PPR.id_pracownika AND pensja<(SELECT Avg(pensja) FRO...
mikdor