Ihr-Domainname.de
Beschreibung Ihres Forums
 

 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen   RegistrierenRegistrieren 
 ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

5.4



 
Neues Thema eröffnen   Neue Antwort erstellen    Ihr-Domainname.de Foren-Übersicht -> News
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Gast








BeitragVerfasst am: 05.04.2006, 10:32    Titel: 5.4 Antworten mit Zitat

So auch heute wird wieder gekickt
Spielbeginn zwischen 19.00 und 20:00 Uhr.
Nach oben
Anzeige








BeitragVerfasst am: 05.04.2006, 10:32    Titel: Anzeige

Nach oben
Gast








BeitragVerfasst am: 05.02.2007, 09:25    Titel: Antworten mit Zitat

1 Dupliziere alle Manager!
Ändere bei den Duplikaten die erste Stelle vom empno auf 9.
ROLLBACK durchführen.
Hinweis:
(to_string, to_number, substring(string,start[,länge])

insert into emp select * from emp where empno in (select mgr from emp)

2 Das Gehalt aller Mitarbeiter mit Beruf ´A...´ oder ´C ...´in Abteilung 20 um 10% erhöhen. COMMIT durchführen.

update emp set sal=(sal/100)*110 where job like 'A%' or job like 'C%' and deptno=20

3 Allen Mitarbeiter der Abteilung 'RESEARCH' das Durchschnittsgehalt der Abteilung 'SALES' zuweisen. ROLLBACK durchführen.

update emp set sal=(select avg(sal) from emp,dept where emp.deptno=dept.deptno and dept.dname='SALES') where emp.deptno = (select deptno from dept where dname='RESEARCH');

4 Alle Mitarbeiter löschen. Ergebnis kontrollieren. ROLLBACK durchführen.

Delete emp

5 Alle Mitarbeiter mit dem gleichen Beruf als ´Jones´ löschen. Ergebnis kontrollieren. ROLLBACK durchführen.

delete from emp where job = (select job from emp where ename ='JONES')

6 Alle Mitarbeiter sind zu löschen, die mehr als JONES und SMITH gemeinsam verdienen. ROLLBACK durchführen.

delete from emp where sal > ((select sum(sal) from emp where ename = 'JONES' or ename = 'SMITH'))


7 Alle Mitarbeiter mit dem gleichen Beruf sollen als neues Gehalt das bisherige Durchschnittsgehalt dieser Berufsgruppe erhalten. ROLLBACK durchführen.

update emp ges set sal = (select avg(sal) from emp group by job having ges.job = job)





1. Lege eine Projekt-Tabelle an!
Projekt(projnr number(3), projname char(15), projbudget number(6))
Constraints: „projnr“ ist Primärschlüssel, „projbudget“ muss sich zwischen 0 und 999999 bewegen.

create table Projekt(projnr number(3) constraint pk primary key, projname char(15), projbudget number(6) constraint cbudget check (projbudget>0))


2. Füge die Datensätze (101,´Verkauf´,100000), (102, ´Office´,900000), (103,´MIS´,150000) in Projekt ein! Versuche den 1. Satz ein zweitesmal einzufügen. Versuche einen Satz mit einem zu hohen Budget einzufügen.

Insert into Projekt(projnr,projname,projbudget)
Values (101,’VERKAUF’,100000)
Insert into Projekt(projnr,projname,projbudget)
Values (102,’OFFICE’,900000)
Insert into Projekt(projnr,projname,projbudget)
Values (103,’MIS’,150000)


3. Ergänze die Tabelle "emp" um ein weiteres Attribut "projnr"! Definiere eine entsprechende Fremdschlüsselbeziehung zur Tabelle „Projekt“.

Alter table emp add projnr number(3)
alter table emp add constraint FK1 foreign key (projnr) references Projekt(projnr)

4. Ordne allen Verkäufern das Projekt 101 zu! Ordne allen Managern das Projekt 103 zu! Ordne den restlichen Mitarbeitern das Projekt 102 zu! Versuche einem Mitarbeiter eine nicht existente Projektnummer zuzuordnen.

update emp set projnr = 101 where job = 'SALESMAN'
update emp set projnr = 102 where job = 'MANAGER'
update emp set projnr = 103 where job != 'MANAGER' and job!='SALESMAN'

6. Definiere VIEW "MAPR" mit Mitarbeitername, Beruf, Projektname!

create view MAPR as select ename,job,projname from emp join Projekt using(projnr)


7. Liste alle Attribute der VIEW "MAPR"! Speichere Query unter "Q1"!
(save q1 unter SQLPlus)

Select * from MAPR
>save q1;  nur SQL PLUS Windows Anwendung – nicht Web App!

8. Entferne das Attribut projnr aus der Mitarbeiter-Tabelle! Probiere Query "Q1"!
(SQLPlus: get q1; run;)

Alter table emp drop column projnr




1. Anonymer Block emp-Datensätze verdoppeln

declare
cursor c is select * from emp;
empnoneu number;
empnoalt number;
ename VARCHAR2(10);
job VARCHAR2(9);
mgr number(4);
hiredate date;
sal number(7,2);
comm number(7,2);
deptno number(2);
projnr number(3);
begin
open c;
while c%found loop
fetch c into empnoalt,ename,job,mgr,hiredate,sal,comm,deptno,projnr;
empnoneu:=empnoalt+1000;
insert into emp values(empnoneu,ename,job,mgr,hiredate,sal,comm,deptno,projnr);
end loop;
close c;
end;

2. Stored Funktion
declare
function abtfkt(abtnr in number) return varchar2 is
cursor getdeptno is select dname from dept where deptno=abtnr;
name varchar2(50);
returnstr varchar2(60);
begin
open getdeptno;
fetch getdeptno into name;
if getdeptno%FOUND=true then
returnstr:=name;
else
insert into dept (dname,deptno) values ('ABTEILUNG'||abtnr,abtnr);
returnstr:= 'Abteilung wurde angelegt';
end if;
close getdeptno;
return returnstr;
end;

begin
dbms_output.put_line(abtfkt(17));
end;




3. Stored Function
declare
function madetail(manr in number) return varchar2 is
cursor getma is select ename,comm,sal from emp where empno=manr;
ename varchar2(20);
comm number(4);
sal number(4);
backstr varchar(50);
begin
open getma;
fetch getma into ename,comm,sal;
if not getma%FOUND then
backstr:='kein emp-Satz under dieser Nummer';
else if comm=0 or comm is null then
backstr:=ename||' bezieht keine Provision';
else
backstr:=ename||' bezieht '||(comm/sal)*100||'% Provision';
end if;
end if;
return backstr;
end;
begin
dbms_output.put_line(madetail(74));
end;


4. namedetails

create or replace procedure getDetail(getename varchar2) is
nameok exception;

name varchar2(30);
getempno number(3);
getjob varchar2(20);
getdate date;
getsal number(4);
getcomm number(4);
getdeptno number(2);
getdname varchar2(20);
getmgr number(3);

cursor c is select ename,empno,hiredate,job,sal,comm,dname,mgr from emp join dept using(deptno) where ename = getename;
begin
open c;
fetch c into name,getempno,getdate,getjob,getsal,getcomm,getdname,getmgr;
if (c%FOUND) then
raise nameok;
end if;

exception
when NO_DATA_FOUND then dbms_output.put_line('Kein Mittarbeiter mit diesem Namen gepeichert');
when TOO_MANY_ROWS then
while (c%FOUND) loop
fetch c into name,getempno,getdate,getjob,getsal,getcomm,getdname,getmgr;
dbms_output.put_line(name||' '||getjob||' '||getdname);
end loop;
when nameok then dbms_output.put_line(getempno||' '||name||' '||getmgr||' '||getjob||' '||getdate||' '||getdname||' '||getdeptno);
close c;
end;


5. jubilaeum

create or replace procedure jubilaeum(n in number) is
hire date;
name varchar(10);
cnt number(3);
cursor c is select ename from emp order by hiredate;
begin
open c;
cnt:=1;
while (cnt<=n) loop
cnt:=cnt+1;
fetch c into name;
dbms_output.put_line(name);
end loop;
exception when NO_DATA_FOUND then dbms_output.put_line('Keine Daten gefunden');
end;
Nach oben
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Ihr-Domainname.de Foren-Übersicht -> News Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.




Powered by phpBB 2.0.23 © 2001, 2002 phpBB Group


Thema 704641-704680 | Thema 906481-906520 | Thema 518361-518400

Impressum | Datenschutz

Bei iphpbb.com bekommen Sie ein Kostenloses Forum mit vielen tollen Extras