MySQL INSERT, UPDATE og DELETE tutorial
Der er kun i litteraturen I har fået udleveret beskrevet en lang række select-statements. Grundet dette vil jeg her lave en lille tutorial i at benytte insert, update og delete funktionerne så I også har mulighed for at få en forståelse for at indsætte, opdatere og slette data. Dette er dog ikke noget I behøver at vide noget om, da de udleverede Python-klasser allerede kan tage hånd om dette. Jeg mener dog trods dette at det er meget godt at vide hvad det er der sker bag ved scenen. Jeg vil i det nedenstående eksempler benytte mig af en tabel kaldet Person med attributterne ID, navn, cpr-nummer og adresse. Koden for at oprette tabellen ser ud som nedenstående:
ID INT(8) PRIMARY KEY AUTO_INCREMENT,
navn VARCHAR(255) NOT NULL DEFAULT "",
cpr INT(8) NOT NULL DEFAULT 0,
addresse VARCHAR(255) NOT NULL DEFAULT ""
)
TYPE = MYISAM
;
INSERT
INSERT bruges til, som navnet også antyder, at indsætte nye data i en tabel. Hvis vi gerne vil indsætte nye data på alle pladser i en række kan vi skrive:
Vi vil dog i vores tilfælde ikke indsætte noget i det første felt i rækken da vi har defineret denne til at auto-inkrementere sig selv. Grundet dette bliver vi nødt til at specificere hvilke felter vi gerne vil indsætte vores data i. Dette gøres således:
Ovenstående linje SQL skal læses således at vi gerne vil insætte ny data i tabellen Person og at det er felterne navn, cpr og adresse vi gerne vil indsætte variablerne, "Peter", "2312432354" og "En vej", i. Dette virker jo alt sammen meget fint men hvilket ID har databasen så kreeret til vores ny indsatte data? Dette kan vi finde ud af ved bruge følgende funktion:
Denne funktion returnerer den sidst oprettede id inden for den givne forbindelse og altså ikke den sidst indsatte id for hele databasen. Dette skal forstås sådan at der selvom der mange der arbejder med den samme tabel på samme tid kommer dette ikke til at lave kludder i ovenstående funktions returnering og vi får altså kun den id som er blevet oprettet til det data vi selv sidst har sat ind. I skal dog være opmærksomme på at denne funktion kun virker i myphpadmin hvis i skriver den ind som en del af den SQL-sætning i vil udføre. Dette skyldes at myphpadmin laver en ny databaseforbindelse for hver SQL-handling der skal udføres. For yderligere information se: MySQL INSERT.
UPDATE
Vi har nu kigget på hvordan man indsætter ny data i sine tabeller, men denne data skal jo også ændres nogen gange, f.eks. ved ændring af adresse eller måske hvis et navn er blevet stavet forkert. Dette gøres via update-funktionen. Hvis vi forestiller os at den før indsatte person "Peter" i stedet skulle staves "Peder" kan dette gøre som følgende:
Dette vil resultere i at samtlige steder i tabellen hvor navnet Peter fremkommer vil blive ændret. Vi kan derfor også gøre eksemplet mere specifikt ved at definere rækkens id:
Dette vil så kun ændre navnet hvor id'en er lig ét. Det er selvfølgelig også muligt at ændre flere variabler samtidigt eller give endnu mere specifikke parametre for hvor der skal ændres ud fra WHERE sætningen:
WHERE navn="Peter" AND addresse="En Vej";
For yderligere information se: MySQL UPDATE.
DELETE
DELETE-funktionen virker akkurat på samme måde som SELECT, dog selvfølgelig med den undtagelse at rækkerne bliver slettet i stedet for valgt. Et eksempel kunne være at vi gerne vil slette alle de steder "Peter" fremstår, dette gøres således:
Som det kan ses i ovenstående eksempel er det akkurat den samme syntax som ved INSERT pånær det at SELECT er blevet udskiftet med DELETE. Det er derfor også muligt at lave JOIN-deletes osv. For yderligere information se: MySQL DELETE.