refereenr1
Gebruiker
- Lid geworden
- 25 okt 2008
- Berichten
- 43
OPGAVE
Voeg aan de tabel persoon geboortedatum toe door alter table commando te gebruiken
Insert in de tabel persoon 10 personen.
Maak een query die alle personen jonger dan 20 jaar teruggeeft
Schrijf een stored procedure die als input postcode heeft en als output het aantal personen die deze postcode heeft.
Ontwerp een 2de tabel waarin de bankrekeningen van een persoon worden bijgehouden
Iedere bankrekening heeft een bedrag (bij opening 0)
Voeg een 2 tal bankrekeningen per persoon in.
Schrijf een query die de bankrekeningen + bedrag per persoon weergeeft.
Maak een view die hetzelfde doet.
Schrijf een stored procedure maxbedrag( out naam VARCHAR(30), out bedrag int)
Die de naam van de persoon die het meeste geld op zijn rekening heeft als 1ste output paramenter geeft.
Die het totale bedrag van de rekeningen van die persoon als 2de output parameter geeft
Schrijf een stored procedure minbedrag( out naam VARCHAR(30), out bedrag int)
Die de naam van de persoon die het minste geld op zijn rekening heeft als 1ste output paramenter geeft.
Die het totale bedrag van de rekeningen van die persoon als 2de output parameter geeft
Maak een grant statement die user1 op localhost (paswoord user1) toelaat procedure maxbedrag uit te voeren
Laat user1 toe op localhost procedure minbedrag uit te voeren door de mysql tabellen te wijzigen.
EEn groot deel heb ik zelf al gemaakt, alleen het laatste werkt niet, wie kan me helpen wat ik misdoe??
OPLOSSING:
Opgave2
Voeg aan de tabel persoon geboortedatum toe door alter table commando te gebruiken
Insert in de tabel persoon 10 personen.
Maak een query die alle personen jonger dan 20 jaar teruggeeft
Schrijf een stored procedure die als input postcode heeft en als output het aantal personen die deze postcode heeft.
Ontwerp een 2de tabel waarin de bankrekeningen van een persoon worden bijgehouden
Iedere bankrekening heeft een bedrag (bij opening 0)
Voeg een 2 tal bankrekeningen per persoon in.
Schrijf een query die de bankrekeningen + bedrag per persoon weergeeft.
Maak een view die hetzelfde doet.
Schrijf een stored procedure maxbedrag( out naam VARCHAR(30), out bedrag int)
Die de naam van de persoon die het meeste geld op zijn rekening heeft als 1ste output paramenter geeft.
Die het totale bedrag van de rekeningen van die persoon als 2de output parameter geeft
Schrijf een stored procedure minbedrag( out naam VARCHAR(30), out bedrag int)
Die de naam van de persoon die het minste geld op zijn rekening heeft als 1ste output paramenter geeft.
Die het totale bedrag van de rekeningen van die persoon als 2de output parameter geeft
Maak een grant statement die user1 op localhost (paswoord user1) toelaat procedure maxbedrag uit te voeren
Laat user1 toe op localhost procedure minbedrag uit te voeren door de mysql tabellen te wijzigen.
EEn groot deel heb ik zelf al gemaakt, alleen het laatste werkt niet, wie kan me helpen wat ik misdoe??
OPLOSSING:
Code:
Create database bartDP;
Use bartDP;
create table persoon(
PersoonID int NOT NULL AUTO_INCREMENT,
Naam varchar(30) NOT NULL,
Straat varchar(30) NOT NULL,
Postcode varchar(4) NOT NULL,
CONSTRAINT PersoonPK PRIMARY KEY (PersoonID));
ALTER TABLE Persoon ADD geboortedatum DATE;
insert into persoon (naam,straat,postcode,geboortedatum) values (“ann van de pontseele“,”stratendries 6A”,”9572”,"1980-08-04");
insert into persoon (naam,straat,postcode,geboortedatum) values (“bart de pauw“,”stratendries 6A”,”9572”,"1980-09-05");
insert into persoon (naam,straat,postcode,geboortedatum) values (“luc van de pontseele“,”kruiststraat 78”,”9570”,"1954-11-04");
insert into persoon (naam,straat,postcode,geboortedatum) values (“aline van wesaemael“,”tuinwijk jan verhaegen 64”,”9820”,"1950-06-07");
insert into persoon (naam,straat,postcode,geboortedatum) values (“hannelore de pauw“,”stratendries 6A”,”9572”,"2007-03-22");
insert into persoon (naam,straat,postcode,geboortedatum) values (“hans van de pontseele“,”kruisstraat 78”,”9570”,"1990-07-22");
insert into persoon (naam,straat,postcode,geboortedatum) values (“yvonne meuleman“,”tuinwijk jan verhaegen 60”,”9820”,"1938-02-08");
insert into persoon (naam,straat,postcode,geboortedatum) values (“chris nuyens“,”kruisstraat 78”,”9570”,"1960-11-08");
insert into persoon (naam,straat,postcode,geboortedatum) values (“evy de pauw“,”stratendries 6A”,”9572”,"2008-09-19");
insert into persoon (naam,straat,postcode,geboortedatum) values (“pluto de hond“,”stratendries 6A”,”9572”,"2003-06-10");
SELECT naam,geboortedatum,TIMESTAMPDIFF(YEAR, geboortedatum, CURDATE()) As AGE
FROM persoon
WHERE (TIMESTAMPDIFF(YEAR, geboortedatum, CURDATE()) < 20);
DROP PROCEDURE Postcode;
DELIMITER |
CREATE PROCEDURE Postcode(postcode varchar(4))
BEGIN
SELECT count(*) FROM persoon
WHERE persoon.postcode = postcode;
END;
|
DELIMITER ;
Call Postcode("9820");
Call Postcode("9572");
Call Postcode("9570");
create table bankrekening(
RekeningID int NOT NULL AUTO_INCREMENT,
Rekeningnr varchar (14) NOT NULL,
PersoonID int,
bedrag int default 0,
CONSTRAINT bankrekeningPK Primary Key(RekeningID));
insert into bankrekening (rekeningnr,persoonID,bedrag) values ("737-0154009-16",1,1500);
insert into bankrekening (rekeningnr,persoonID,bedrag) values ("737-0154009-30",1,500);
insert into bankrekening (rekeningnr,persoonID,bedrag) values ("737-0154009-16",2,10000);
insert into bankrekening (rekeningnr,persoonID,bedrag) values ("737-0404030-16",2,125);
insert into bankrekening (rekeningnr,persoonID,bedrag) values ("001-0000000-05",3,50);
insert into bankrekening (rekeningnr,persoonID,bedrag) values ("400-1305090-06",3,1900);
insert into bankrekening (rekeningnr,persoonID,bedrag) values ("123-4567890-00",4,100);
insert into bankrekening (rekeningnr,persoonID,bedrag) values ("987-6543210-10",4,0);
insert into bankrekening (rekeningnr,persoonID,bedrag) values ("101-5050505-05",5,500);
insert into bankrekening (rekeningnr,persoonID,bedrag) values ("123-9999999-99",5,880000);
insert into bankrekening (rekeningnr,persoonID,bedrag) values ("000-0101010-00",6,20);
insert into bankrekening (rekeningnr,persoonID,bedrag) values ("999-0202020-99",6,900);
insert into bankrekening (rekeningnr,persoonID,bedrag) values ("777-7777777-77",7,1250);
insert into bankrekening (rekeningnr,persoonId,bedrag) values ("666-6666666-66",7,750);
insert into bankrekening (rekeningnr,persoonID,bedrag) values ("123-1231231-23",8,1000);
insert into bankrekening (rekeningnr,persoonID,bedrag) values ("321-3213213-21",8,1950);
insert into bankrekening (rekeningnr,persoonID,bedrag) values ("999-9999999-99",9,500);
insert into bankrekening (rekeningnr,persoonID,bedrag) values ("888-8888888-88",9,300);
insert into bankrekening (rekeningnr,persoonID,bedrag) values ("000-0000000-10",10,90000);
insert into bankrekening (rekeningnr,persoonID,bedrag) values ("000-2020202-20",10,13000);
SELECT persoon.naam, bankrekening.rekeningnr, bankrekening.bedrag, (SELECT SUM(bedrag) FROM bankrekening WHERE bankrekening.persoonID=persoon.persoonID) As Totaal
FROM persoon, bankrekening
WHERE persoon.persoonID = bankrekening.persoonID;
CREATE VIEW persoon_bankrekening AS
SELECT persoon.naam, bankrekening.rekeningnr, bankrekening.bedrag, (SELECT SUM(bedrag) FROM bankrekening WHERE bankrekening.persoonID=persoon.persoonID) As Totaal
FROM persoon, bankrekening
WHERE persoon.persoonID = bankrekening.persoonID;
SELECT * FROM persoon_bankrekening;
Code:
Drop procedure MaxBepalen;
DELIMITER |
create procedure MaxBepalen(OUT Max int)
BEGIN
DECLARE cMax int default 0;
DECLARE cBedrag;
DECLARE cNaam;
DECLARE done INT DEFAULT 0;
DECLARE cur1 CURSOR FOR SELECT bedrag FROM bankrekening;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
OPEN cur1;
WHILE NOT done DO
FETCH cur1 into cbankrekeningID,cBedrag;
SELECT naam
FROM persoon, bankrekening
WHERE persoonID = bankrekeningID
(SELECT Max(bedrag)
cMax = Max
(Set cMax = cbedrag;
IF bedrag > Max THEN MAX = bedrag;
)
end while
;
close cur1;
End;
|
DELIMITER ;
Call MaxBepalen(@Max);
Select @Max;
Drop procedure MinBepalen;
DELIMITER |
CREATE procedure MinBepalen(OUT Max int)
BEGIN
DECLARE cMin int default 0;
DECLARE cbankrekeningID;
DECLARE cBedrag;
DECLARE cNaam;
DECLARE done INT DEFAULT 0;
DECLARE cur1 CURSOR FOR SELECT bedrag FROM bankrekening;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
OPEN cur1;
WHILE NOT done DO
FETCH cur1 into cbankrekeningID,cBedrag;
SELECT naam
FROM persoon, bankrekening
WHERE persoonID = bankrekeningID
(Set cMax = cbedrag;
IF bedrag < Min THEN MIN = bedrag;)
end while
;
close cur1;
End;
|
DELIMITER ;
Call MINBepalen(@total);
Select @total;
User access
GRANT EXECUTE ON procedure Maxbedrag TO 'user1'@'localhost' IDENTIFIED BY 'user1';
GRANT EXECUTE ON PROCEDURE Minbedrag TO 'user1'@'localhost' IDENTIFIED BY 'user1';
FLUSH Privilege
Update_prive On tables_priv.* TO 'user1'@'localhost' IDENTIFIED BY 'user1';
FLUSH PRIVILEGES;
GRANT SELECT (minbedrag) ON *.* TO 'user1'@'localhost' IDENTIFIED BY 'user1';
Laatst bewerkt door een moderator: