sqlplus.txt

(14 KB) Pobierz
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...
Zgłoś jeśli naruszono regulamin