Język manipulowania danymi

Download Report

Transcript Język manipulowania danymi

Rozdział 9: Język manipulowania danymi
DML (Data Manipulation Language)
(c) 1999, Instytut Informatyki Politechniki Poznańskiej
Wstawianie krotek do relacji
INSERT INTO nazwa_relacji
VALUES (wartość, wartość, ...);
INSERT INTO
nazwa_relacji [ (atrybut1, ..., atrybutn)]
VALUES (wartość1, ..., wartośćn);
INSERT INTO zespoly
VALUES (60, ’MULTIMEDIA’, ’Piotrowo 3’);
INSERT INTO zespoly
VALUES (&nr, ’&nazwa’, ’&adres’);
(c) 1999, Instytut Informatyki Politechniki Poznańskiej
Wstawianie krotek do relacji cd.
INSERT INTO nazwa_relacji [(atrybut1, ..., atrybutn)]
SELECT [(atrybut1, ..., atrybutn)]
FROM relacja1 [relacja2, ...];
INSERT INTO prac30
(numer_prac, nazwisko_prac, numer_zesp)
SELECT id_prac, nazwisko, id_zesp
FROM pracownicy
WHERE id_zesp=30;
(c) 1999, Instytut Informatyki Politechniki Poznańskiej
Modyfikowanie krotek relacji
UPDATE relacja
SET atrybut1 = wartość, atrybut2 = wartość [, ...]
[WHERE warunek];
• awansuj pracownika o nazwisku KOSZLAJDA na
stanowisko profesora i zwiększ jego płacę podstawową 2.5
raza
UPDATE pracownicy
SET etat = 'PROFESOR',
placa_pod = placa_pod * 2.5
WHERE nazwisko = 'KOSZLAJDA';
(c) 1999, Instytut Informatyki Politechniki Poznańskiej
Modyfikowanie krotek relacji cd.
UPDATE relacjaA
SET atrybutA1 = (SELECT atrybutB1 FROM relacjaB [WHERE ...])
[WHERE warunek];
UPDATE relacjaA
SET (atrybutA1, atrybutA2) =
(SELECT atrybutB1, atrybutB2 FROM relacjaB [WHERE ...])
[WHERE warunek];
(c) 1999, Instytut Informatyki Politechniki Poznańskiej
Modyfikowanie krotek cd.
• Zwiększ płacę podstawową do wartości równej 1,2 średniej
płacy podstawowej w zespole pracownika oraz zwiększ
płacę dodatkową do wartości równej maksymalnej płacy
dodatkowej w zespole pracownika. Operacji dokonaj tylko
dla pracowników zatrudnionych po 1992 roku.
UPDATE pracownicy a SET (a.placa_pod, a.placa_dod) =
(select AVG(placa_pod)*1.2, MAX( NVL( placa_dod,0))
FROM pracownicy WHERE id_zesp = a.id_zesp )
WHERE a.zatrudniony > '92/12/31';
(c) 1999, Instytut Informatyki Politechniki Poznańskiej
Usuwanie krotek relacji
DELETE [FROM] relacja
[WHERE warunek];
DELETE pracownicy
WHERE nazwisko IN ('BIAŁY', 'KONOPKA');
(c) 1999, Instytut Informatyki Politechniki Poznańskiej
Zadania
4-1. Wstaw do relacji PROJEKTY następujące krotki:
nazwa atrybutu
ID_PROJEKTU
OPIS_PROJEKTU
DATA_ROZPOCZECIA
DATA_ZAKONCZENIA
FUNDUSZ
wartości
1
Indeksowanie metod
02-JAN-93
31-MAR-95
250.000
wartości
2
Sieci kręgosłupowe
15-APR-94
15-FEB-95
170.000
insert into PROJEKTY
values (1, 'Indeksowanie metod', '02-JAN-93', '31-MAR-95', 250000);
insert into PROJEKTY
values(2, 'Sieci kręgosłupowe', '15-MAR-94','15-FEB-95', 170000);
(c) 1999, Instytut Informatyki Politechniki Poznańskiej
Zadania cd.
4-2. Wstaw do relacji PRZYDZIALY następujące krotki:
nazwa atrybutu
ID_PROJEKTU
NR_PRACOWNIKA
OD
DO
STAWKA
ROLA
wartości
1
170
02-JAN-93
31-MAR-95
1.000
ANALITYK
wartości
1
140
01-FEB-93
31-MAR-95
1.500
KIERUJACY
insert into PRZYDZIALY
values(1,170,'02-JAN-93','31-MAR-95',1000,'ANALITYK');
insert into PRZYDZIALY
values(1,140,'01-FEB-93','31-MAR-95', 1500,'KIERUJACY');
(c) 1999, Instytut Informatyki Politechniki Poznańskiej
Zadania cd.
4-3.
Zmodyfikuj relację PRZYDZIAŁY przez podniesienie
stawki pracownika o numerze 140 do wysokości 1.750
zł.
update przydzialy set stawka = 1750
where nr_pracownika = 140;
4-4.
Zmień datę zakończenia projektu: Sieci kręgosłupowe
na 15 czerwca 95r. i powiększ fundusz tego projektu do
190.000 zł.
update projekty set
data_zakonczenia = '15-JUN-95',
fundusz = 190000
where opis_projektu = 'Sieci kregoslupowe';
(c) 1999, Instytut Informatyki Politechniki Poznańskiej
Zadania cd.
4-5.
Usuń informacje o projektach, do których nie ma
przydziałów.
delete from projekty
where id_projektu not in
(select distinct id_projektu
from przydzialy);
(c) 1999, Instytut Informatyki Politechniki Poznańskiej