En hurtig en der forklare MYSQL funktioenrne – insert into, update og delete.
En af mine venner bad om denne, så her kommer den.
Her er database strukturen jeg vil anvende til denne tutorial:
- Tabbelets navn:
- shopping_cart
- Felter:
- order_id
- item
- quantity
- price
- year
- color
Hvordan virker MYSQL’s inert into og hvad gør den?
Det giver jo næsten sigselv, egentlig men en lille forklaring har aldrig gjort skade. Den indsætter et nyt data set ind i databasen via sql (structured query langauge). Den virker ved og indsætte tabellets navn, og derefter angive felt navnene for til sidst og indsætte værdierne. Et eksempel ville være:
INSERT INTO shopping_cart (item, quantity, price, YEAR, color) VALUES ('Toyota Supra', '1', '23,000', '1998', 'red')
Den ovenstående insert into ville bruges til og indsætte en Toyota Supra i en indkøbs kurv. Du fortæller den du vil indsætte den i tabellet shopping_cart (insert into shopping_cart) dernæst fortæller du hvilke felter i databasen du vil have værdierne skal ind i, som er komma separaretede og i parantheser. I dette eksempel item, quantity, price, year and color. (insert into shopping_cart (item, quantity, price, year, color)) Til sidst kommer værdierne – hermed Toyota Supra, 1, 23,000, 1998 og red. Sættes med nøgleordet values også værdierne i paranthes på samme måde som felterne. (values (‘Toyota Supra’, ’1′, ’23,000′, ’1998′, ‘red’))
Sql update – hvis jeg lavede en stavefejl i min insert into, hvordan retter jeg den så?
Du kan opdatere din database med en update kommando. Som med insert skal den vide hvilke table der skal opdateres, dernæst hvilke felte og værdier der skal opdateres. Dog er dette gjort på en lidt anderledes måde.
Her giver jeg lige et eksempel, også forklare jeg mine erfaring med det bagefter, inklusiv en forklaring på hvordan den virker. Det kan lige noteres at i MYSQL kan man faktisk godt lave en insert med samme syntax som update virker (dog uden en where egenskab). Dette kan man dog ikke i nogen andre databaser jeg har erfaring med f eks MSSQL og Access.
Et hurtigt tip: jeg vil næsten til en hver tid forslå at udngå brug af Access databaser. De virker rigtig godt som en kilde på en lokal computer da standarden virker meget ala Excel – men som en internet database virker det ikke så godt som MYSQL og MSSQL f eks.
UPDATE shopping_cart SET quantity='2', color='blue', price='46,000' WHERE order_id='101'
Vi opdatere tabellen shopping_cart (update shopping_cart), sætter quantity til 2 (quantity=’2′), color til blue (color=’blue’), og til sidst price til 46,000 (price=’46,000′), på den ordre som har id 101 (where order_id=’101′).
Det vigtige her er at du kan opdatere en række af gangen, eller opdatere så mange af gangen som du har lyst til som findes i tabellen, som regle ville man dog kun opdatere en af gangen. Det er vigtigt i disse update queries at huske en eller flere where engenskaber. Uden det, kan du ende med at updatere alle rækkerne med den samme data. Med en stor mængde af data og denne fejl ville nok føre til en katastrofe. Backup er altid en god idé!
Lad os sige at der forekommer en fejl på Youtube og istedet for at en videos title bliver opdateret, bliver alle filmenes titler opdatere til den samme titel. Jeg går ud fra de har backups og alt hvad der skal til, så det nok ikke så slemt med Youtube, men det giver da en idé om hvad jeg mener med det ovenstående. Men lad os holde de sjove tanker til os selv for nu, det ville nok ikke være særlig sjovt for hverken bruger og ikke mindst udviklerene af Youtube, hvis det skete.
Nu kommer min egen erfaring ind i spillet – jeg har programmeret med MYSQL i mange år – ca 10 år. For over 2 år siden fik jeg er job for Webex ApS. Da jeg startede blev der anvendt Access databaser til forskellige projekter og dette endte som regle med nogen besværlig queries og ekstra arbejde. Nu kører vi mest MSSQL til Asp projekter og MYSQL til PHP projekter – meget nemmere!
Hvis du kan insert into og update, så er delete ret nem
Delete virker meget som update, men felterne og værdierne er ikke nødvendige. Du sletter ikke dele af rækkerne, men rækken som helhed.
Delete virker som nedenstående eksempel:
DELETE FROM shopping_cart WHERE order_id='101'
Simpelt: du deleter fra shopping_cart (delete from shopping_cart) og så fortæller du den hvilke række du vil delete (where order_id=’101′).
Det eneste man skal huske her er at hvis man glemmer sine where egenskaber, så sletter alle rækkerne! Det ville være værre end med update – intet indhold. Det er dog også godt at notere man kan bruge hvilke som helst egenskaber man vil i sin where sætning. Det behøver ikke nødvendigvis være id’et.
Extra tips
I MYSQL når du bruger update eller delete, er det en rigtig god programmeringsteknik at afslutte din sql med:
LIMIT 1
Så din nye query ville se sådanne ud:
DELETE FROM shopping_cart WHERE order_id='101' LIMIT 1
Den samme funktion gøres lidt anderledes i Access og MSSQL:
DELETE top 1 FROM shoppping_cart WHERE order_id='101'
I Access og MSSQL virker top 1 før dit tabel navn på samme måde som limit 1 i MYSQL i slutningen af din query. Dette gør at lige meget hvad der står i din where sætning, vil der kun blive slettet en række og aldrig flere. Det undgår problemet jeg nævnte tidligere.
Det må konkludere den hjælp min ven bad om.
Spørger løs hvis der er spørgsmål som altid





