Ikviens programmētājs, kuram bija jāstrādā ar datu bāzēm, saskārās ar DML operatoriem (par no angļu valodas - "datu manipulācijas valoda"), piemēram, Izvēlieties, Ievietot, Dzēst un Atjaunināt. MySQL vide savā arsenālā izmanto arī visas iepriekš minētās komandas.
Norādītie operatori loģiski runā par viņumērķis - ierakstu atlase, jaunu vērtību ievietošana, esošo datu atjaunināšana, pilnīga vai atbilstoši noteiktajiem nosacījumiem, informācijas dzēšana datu bāzē. Mācību teorētiskajos materiālos sīki aprakstīts katras komandas darbības princips un to sintakse, tomēr nekur nav atrodamas norādes uz grūtībām, kas var rasties praksē to lietošanas laikā. Šis materiāls tiks veltīts dažu no tiem izskatīšanai.
Īsumā par DML operatoriem (ievietot)
Pirms turpināt darbību, ir vēlreiz jāatgādina sīkāk par katras funkcijas mērķi. Mūs vairāk interesēs divi operatori: Ievietot un Atjaunināt, jo tieši no viņiem rodas lielas grūtības, apstrādājot lielu datu daudzumu.
Jums jāsāk ar komandu Ievietot, un pēc tam vienmērīgi dodieties uz Atjaunināt MySQL sistēma, tāpat kā jebkura cita mūsdienu DBVS, izmanto operāciju Ievietot lai esošajiem pievienotu jaunus ierakstusdatu bāzu tabulas. Šīs operācijas sintakse ir ļoti vienkārša un skaidra. Tajā ir to lauku uzskaitījums, kuros vērtības tiks ievadītas, galamērķis - tabulas nosaukums - un tieši ievadīto datu saraksts. Katru reizi, kad komanda tiek izpildīta Ievietot datu bāze tiks atjaunināta ar jaunām vērtībām.
Atjaunināt paziņojumu
Tomēr praksē diezgan biežisituācijas, kad kādai datu kopai ir jāatjaunina viena vai vairākas atribūtu vērtības. Kā piemēru mēs varam minēt situāciju, kad uzņēmumā notika reforma, turpinot galveno departamentu pārdēvēšanu. Šajā gadījumā ir jāveic izmaiņas katrā nodaļā. Ja mainās tikai nosaukumi, tad problēma tiek atrisināta ļoti ātri. Bet, ja tiek mainīts katras produkcijas katras sastāvdaļas kodējums, kas, kā likums, kalpo kā galvenā atslēga, tas, savukārt, nozīmē izmaiņas informācijā par katru darbinieku.
Apskatāmās problēmas risināšanai var izmantot DML paziņojums - Atjaunināt MySQLсервер, оперируя с большим количеством записей, Izmantojot atjaunināšanas operatoru, tas izpildīs pieprasīto pieprasījumu un atrisinās problēmu. Bet dažreiz jaunināšanas laikā rodas ne visai skaidras un grūti izskaidrojamas grūtības. Tālāk tiks runāts par grūtībām, ko rada ierakstu atjaunināšana.
Tas, kas teorētiski tiek teikts maz ...
Atjaunināšanas komanda, kā minēts iepriekš,izmanto, lai atjauninātu esošos ierakstus tabulā. Bet praksē klienti, kas piekļūst datu bāzes serveriem, ne vienmēr zina, vai tabulās ir noteikts datu kopums. Iepriekšēja datu pieejamības pārbaude datu bāzē turpmākajiem atjauninājumiem prasa laiku un liekas servera iespējas.
Lai tas nenotiktu, DBVS ir paredzēts īpašs dizains MySQL - ievietojiet * atjauninājumukurā var ievietot vai atjauninātskrieniet neatkarīgi viens no otra. Tas ir, ja tabulā ir ieraksts par noteiktu nosacījumu, notiks atjaunināšana. Ja attiecīgajam stāvoklim nav atrasti dati, MySQL serveris varēs izpildīt datu pievienošanas pieprasījumu.
Dublikātu datu atjaunināšana
Svarīga sastāvdaļa šajā jautājumā Ievietot-vaicājumu datu bāzes pārvaldības sistēma MySQL - “Uz atslēgas dublējuma atjaunināšanas” priedēklis. Pilna vaicājuma sintakse ir šāda: "ievietojiet test_table (darba devēja_vid, nosaukums) vērtības (1, "Abramov") atslēgu atjaunināšanas dublikātā last_modified = TAGAD ();"
Šādu vaicājumu var izmantotdarbinieku darbību reģistrēšana, piemēram, uzņēmuma kontrolpunkta šķērsošanas laika noteikšana ar sekojošu pārtraukuma laika aprēķinu un kavējumu identificēšana. Lai tabulā netiktu veikti vairāki ieraksti, pietiek ar to, ka katrs darbinieks veic uzskaiti ar pastāvīgu atjaunināšanu. To ļauj izdarīt verifikācijas dizaina dublikāts.
Patiesībā par problēmām ...
Ņemot vērā iepriekš minēto darbinieku darbību reģistrēšanas kontrolpunktā piemēru, sevis palielināšanas (auto_pieaugums) laukus, kurus parasti izmanto primāro atslēgu vērtību aizpildīšanai (primārs_atslēga) Lietojot komandu MySQL atjauninājums būvniecībā ar Ievietot auto_pieaugums, lauki nepārtraukti palielinās.
Līdzīgi viss notiek, kadaizstājēju dizainu izmanto, ja tiek atrasti dublikāti. “Automātiski pieaugošā” vērtība palielinās pat tad, ja tas nav nepieciešams. Tādēļ pastāv problēmas ar vērtību trūkumu vai diapazona pārpildīšanu, kas vēlāk rada traucējumus datu bāzes pārvaldības sistēmu darbībā.
Visticamāk problēma
Aprakstītā problēma ir jāņem vērā. Web-izstrādātāji, jo tas visbiežāk notiek daudzlietotāju sistēmās (interneta vietnes, portāli utt.), kad sistēmā tiek veikts liels skaits procedūru Ievietot un Atjauniniet MySQL.
PHP-datu bāzei piekļūst ļoti bieži. Tādēļ maksimālās vērtības sasniegšana laukos, kas definēti kā auto_crement, notiek ātri, un, analizējot radušās grūtības, nebūs iespējams nekavējoties noteikt iemeslus.
Tāpēc izstrādātājiem ieteicams rūpīgi pievērsties konstrukcijas izmantošanai uz atslēgas dublikāta komandā mysql atjauninājums. atlasīt - vaicājumi, piekļūstot datu bāzes serverimdarbosies bez kļūdām, taču jaunu ierakstu pievienošana datu bāzei ir saistīta ar nepatīkamām situācijām, kas vēlāk rada nopietnas problēmas. Alternatīvi ieteicams automātiski palielinošajiem laukiem vispirms pārbaudīt, vai tiem ir ieraksti, un pēc tam tos atjaunināt.