Script repàs bàsic SQL
La revisió el 09:02, 30 nov 2009 per Joan (discussió | contribucions) (New page: Aquest és un script bàsic per repassar allò que es demana als alumnes. És un script de mínims. Per aprovar l'assignatura, s'ha de saber: *crear les taules sense errors de sintaxi, uti...)
Aquest és un script bàsic per repassar allò que es demana als alumnes. És un script de mínims. Per aprovar l'assignatura, s'ha de saber:
- crear les taules sense errors de sintaxi, utilitzant els tipus de dades adequats
- relacionar les taules entre sí
- inserir dades representatives a cada taula
- poder fer consultes que mostrin la riquesa de les relacions
- poder obtenir un fitxer de log per al seu anàlisi posterior.
- un joc de proves significatiu.
rem Nom de l'alumne - asi2aXX
spool c:/resultats.log
rem eliminació de les taules ****************************
echo "eliminació de les taules"
drop table prestec;
drop table alumne;
drop table llibre;
pause
rem esborro la seqüència
echo "esborro la seqüència"
DROP SEQUENCE seq_prestec;
rem creació de les taules *******************************
echo "creació de les taules"
pause
create table alumne(
id_alumne number(2) primary key,
nom varchar2(20) not null,
cognom varchar2(20) not null,
guixeta char(2) unique,
data_naix date
);
create table llibre(
id_llibre number(3) primary key,
titol varchar2(20),
en_prestec char(1) check(en_prestec in('S','N')),
tema varchar2(50) check(tema in('literatura','ciència','arts'))
);
create table prestec(
id_prestec number(3) primary key,
id_llibre number(3) references llibre,
id_alumne number(2) references alumne,
dia_prestec date,
dia_retorn date
);
rem creo la seqüència
echo "creo la seqüència"
pause
CREATE SEQUENCE seq_prestec INCREMENT BY 1 START WITH 1 MINVALUE 1;
rem inserció dades ******************************************
echo "inserció dades"
pause
insert into alumne values(1,'Pere','Gelabert','A3','12/12/1980');
rem provoca error perquè la guixeta ha de ser única
insert into alumne values(2,'Maria','Batlló','A3','12/12/1980');
insert into alumne values(3,'Rita','Ribera','A2','12/09/1980');
insert into alumne values(4,'Josep','Claror','B2',NULL);
insert into llibre values(1,'Mates III','N','ciència');
rem provoca error DE CLAU PRIMÀRIA
insert into llibre values(1,'Món Romà','A','arts');
insert into llibre values(2,'Món Grec','N','arts');
insert into llibre values(3,'El Quixot','N','literatura');
insert into llibre values(4,'Novela','N','literatura');
rem anem a fer un préstec
echo "simulem un prestec"
pause
rem simulo un prestec
insert into prestec values(seq_prestec.NEXTVAL,4,3,'12/11/2007',NULL);
update llibre set en_prestec='S' where id_llibre=4;
rem simulo un retorn
echo "simulem un retorn"
pause
update prestec set dia_retorn='08/12/2007' where id_llibre=4;
update llibre set en_prestec='N' where id_llibre=4;
rem faig un altre prestec
insert into prestec values(seq_prestec.NEXTVAL,1,3,'12/11/2007',NULL);
update llibre set en_prestec='S' where id_llibre=1;
rem quins alumnes tenen llibres en préstec? i el dia teòric de retorn?
echo "quins alumnes tenen llibres en préstec? i el dia teòric de retorn?"
pause
select llibre.id_llibre,titol,dia_prestec, dia_prestec+20 "dia teor retorn",nom,cognom from llibre, prestec, alumne
where
llibre.id_llibre=prestec.id_llibre and prestec.id_alumne=alumne.id_alumne and en_prestec='S';
spool off