Elke programmeur die met databases heeft moeten werken, is DML-operators tegengekomen (per. uit het Engels - "data manipulation language"), zoals kiezen, invoegen, Delete en bijwerken. De MySQL-omgeving gebruikt ook alle bovenstaande opdrachten in zijn arsenaal.
De opgegeven operatoren spreken logisch over hundoel - records selecteren, nieuwe waarden invoegen, bestaande gegevens bijwerken, voltooien of volgens specifieke voorwaarden, informatie in de database verwijderen. De theoretische leermaterialen beschrijven in detail het werkingsprincipe van elk team en hun syntaxis, maar er is nergens om verwijzingen te vinden naar moeilijkheden die zich tijdens het gebruik in de praktijk kunnen voordoen. Dit materiaal zal worden besteed aan de overweging van sommige van hen.
Voordat u verdergaat, is het noodzakelijk om nogmaals in meer detail te herinneren aan het doel van elk van de functies. We zullen meer geïnteresseerd zijn in twee operators: invoegen en bijwerken, omdat het van hen is dat de grootste problemen ontstaan bij het verwerken van grote hoeveelheden gegevens.
Je moet met een team beginnen invoegen, en ga dan soepel naar Update. MySQL een systeem, zoals elk ander modern DBMS, gebruikt een operatie invoegen om nieuwe items aan bestaande toe te voegendatabase tabellen. De syntaxis voor deze bewerking is heel eenvoudig en duidelijk. Het bevat een opsomming van de velden waar de waarden worden ingevoerd, de bestemming - de naam van de tabel - en direct een lijst met de ingevoerde gegevens. Elke keer dat de opdracht wordt uitgevoerd invoegen de database wordt bijgewerkt met nieuwe waarden.
In de praktijk echter vrij vaaksituaties dat het voor sommige gegevensset noodzakelijk is om een of meer kenmerkwaarden bij te werken. Als voorbeeld kunnen we de situatie noemen waarin het bedrijf hervormd werd met verdere hernoeming van de belangrijkste afdelingen. In dit geval is het noodzakelijk om voor elke afdeling wijzigingen aan te brengen. Als alleen de namen veranderen, is het probleem zeer snel opgelost. Maar als de codering van elk onderdeel van de gehele productie wordt gewijzigd, wat in de regel als de primaire sleutel dient, dan betekent dit op zijn beurt dat de informatie voor elke werknemer wordt gewijzigd.
Om het probleem in kwestie op te lossen, kan dit worden toegepast DML-verklaring - Bijwerken. MySQL-server, die met een groot aantal records werkt,Met behulp van de update-operator zal het aan de gevraagde aanvraag voldoen en het probleem oplossen. Maar soms ontstaan tijdens de update niet helemaal duidelijke en moeilijk uit te leggen moeilijkheden. Het gaat over de problemen die het bijwerken van records veroorzaakt, we zullen dit verder bespreken.
Het Update-team, zoals hierboven vermeld,wordt gebruikt om bestaande records in een tabel bij te werken. Maar in de praktijk weten klanten die toegang hebben tot databaseservers niet altijd of een bepaalde set gegevens in tabellen voorkomt of niet. Een voorlopige controle van de beschikbaarheid van gegevens in de database voor latere updates leidt tot tijd en verspilde servermogelijkheden.
Om dit te voorkomen, is een speciaal ontwerp voorzien in het DBMS MySQL - Invoegen * Updatewaar een insert of update kanonafhankelijk van elkaar lopen. Dat wil zeggen, wanneer er een record in de tabel staat voor een bepaalde conditie, zal er een update plaatsvinden. Als er geen gegevens worden gevonden voor de aandoening in kwestie, kan de MySQL-server het verzoek om gegevens toe te voegen uitvoeren.
Een belangrijk onderdeel hiervan invoegen-query in het databasebeheersysteem MySQL - "Bij dubbele sleutelupdate" voorvoegsel. De volledige syntaxis van het verzoek is als volgt: "invoegen in test_table (employer_id, name) waarden (1, "Abramov") op dubbele sleutel update last_modified = NOW ();".
Zo'n verzoek kan worden gebruiktregistratie van acties van werknemers, bijvoorbeeld het bepalen van het tijdstip van het passeren van de ingang van de onderneming, gevolgd door het tellen van het tijdstip van de pauze en het identificeren van vertragingen. Om niet meerdere vermeldingen in de tabel te maken, volstaat het om voor elke werknemer een register bij te houden met constante updates. Het is het ontwerp van de dubbele cheque waarmee u dit kunt doen.
Gezien het bovenstaande voorbeeld van het registreren van acties van werknemers bij het controlepunt, is het gebruik van zelfverhogende (auto_toename) velden die vaak worden gebruikt om primaire sleutelwaarden in te vullen (primair_sleutel). Bij gebruik van het commando MySQL-update in constructie met invoegen auto_toename, de velden worden steeds groter.
Evenzo gebeurt alles wanneereen vervangende constructie wordt gebruikt als duplicaten worden gevonden. De "auto-increment" -waarde wordt verhoogd, zelfs als dit niet nodig is. Hierdoor zijn er problemen met ontbrekende waarden of het overschrijden van een bereik, wat vervolgens leidt tot storingen in databasebeheersystemen.
Het beschreven probleem moet worden overwogen Web- ontwikkelaars, aangezien dit het meest voorkomt in systemen met meerdere gebruikers (internetsites, portalen, enz.), wanneer een groot aantal procedures in het systeem wordt uitgevoerd invoegen en Werk MySQL bij.
Php-de database wordt heel vaak geraadpleegd. Daarom is het behalen van de maximale waarde door de velden gedefinieerd als auto_increment, gebeurt snel en bij het analyseren van de opgetreden moeilijkheden zal het niet mogelijk zijn om de redenen onmiddellijk vast te stellen.
Daarom wordt ontwikkelaars geadviseerd om zorgvuldig om te gaan met het gebruik van de constructie op dubbele sleutel in een team mysql bijwerken. selecteer - vragen bij toegang tot de databaseserverwerkt foutloos, maar het toevoegen van nieuwe records aan de database gaat gepaard met onaangename situaties, die vervolgens tot ernstige problemen leiden. Als alternatief wordt het aanbevolen voor automatisch oplopende velden eerst te controleren of er records voor zijn en deze vervolgens bij te werken.