Script repàs bàsic SQL

De wikijoan
Salta a la navegació Salta a la cerca

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