Concepte de bază ale mysql și diferențele de la fișierele text

O listă este un fișier text. Sau, să zicem, o listă de studenți în jurnalul de clasă.
Pentru a obține o listă ordonată, trebuie să reordonăm lista când adăugăm orice înregistrare. Când adăugați orice! Și dacă vrem să avem două sau mai multe tipuri de comenzi? De exemplu, avem o listă de elevi în ordine alfabetică, dar suntem interesați să-l vedem pe performanțele sale academice. Începeți două liste? NU! Porniți o bază de date.






Și pentru a înțelege primul principiu de bază. Ordinea datelor se face numai atunci când le selectați din baza de date. Acesta este un fapt foarte important. Datele din baza de date nu sunt stocate ca într-un jurnal de clasă - în ordine. Și ca și în clepsidra - o grămadă. Nu specificați ordinea ieșirii - acestea vor fi afișate de la nood. Baza însăși nu-și amintește ce înregistrare a fost prima și care a fost ultima. Dar se poate sorta după atributele specificate de utilizator la crearea tabelului.

Primul lucru pe care trebuie să-l amintiți. Nu există prima și ultima înregistrare în baza de date. Puteți vorbi despre comandă numai la ieșire, dacă utilizatorul a specificat această comandă. de exemplu, prin sortarea înregistrărilor în ordine alfabetică. Aici, în acest exemplu, este primul și ultimul.
Dacă trebuie să cunoaștem ordinea intrării înregistrărilor în baza de date - adăugăm un câmp cu care se poate determina.

Următorul lucru pe care o bază de date diferă de un fișier este accesul aleatoriu. Într-un fișier, pentru a vă referi la o linie în mijloc, trebuie să sortați pe toți cei care merg la el. Când faceți upgrade - chiar și mai rău. Pentru a schimba linia în fișierul de linie - trebuie să o rescrieți TOATE! Entirely. Cu aceeași bază de date - totul este simplu. Vrem să alegem o linie - alege! Vrem să schimbăm o linie - ne schimbăm. Vrem să ștergeți două - ștergeți!
Notă: De fapt, baza de date - aceasta nu este o cutie magică, și stochează în datele nu este aerul lipsit de relevanță și în aceleași fișiere. Și în același fel ei le rescriu. Dar o face complet transparent pentru utilizator.

Cu accesul arbitrar și lipsa numerelor interne "primul-al doilea-al treilea", ne confruntăm cu problema identificării șirurilor. Să presupunem că trimitem linii din baza de date spre ecran, iar acum, făcând clic pe link, dorim să edificăm una dintre ele. Cum pot să o cer? Prin conținutul unuia dintre câmpuri? Dar dacă acest conținut coincide cu alte câteva înregistrări? Avem nevoie de un identificator unic! MySQL are o soluție ingenioasă. Unul dintre câmpuri, denumit de obicei "id", este autoincrementul, adică crește automat. La adăugarea fiecărei noi înregistrări, dacă id-ul nu este specificat sau valoarea este zero, baza de date va atribui o valoare domeniului ID, mai mult decât cel anterior. Deci, avem un identificator unic - niciuna dintre liniile din acest tabel nu va avea același id. Acum este foarte ușor să editați sau să ieșiți orice intrare - specificați doar id-ul.






Apropo, ID-ul auto-incremental are o proprietate laterală. Sortați tabelul pentru acest câmp, puteți obține primul sau ultimul record notoriu :-)

Cu toate acestea, există multe greșeli și neînțelegeri cu acest domeniu.

Întrebări frecvente. ID-ul.
În primul rând, acest câmp este confundat cu numărătorul. Ca și în jurnalul de clasă - studentul de 1,2,3-a. Și dacă elevul a fost expulzat din școală? Și dacă nu alegem toți studenții, ci doar băieții?
Prima regulă: id la numerotare nu are cea mai mică legătură! În primul rând, pentru că id-ul nu poate merge în ordine, și în al doilea rând, că tot ceea ce avem ordinea este doar în EȘANTION. Care poate fi orice, id-ul în ea poate merge complet nesigur! Dacă vrem să numerotăm rezultatele - vă rugăm, în ieșire adăugăm codul la PHP, care o va face. IN ACEASTA PICK. Este necesar să numerotați la ieșire. Tocmai pentru că opțiunile de eșantionare pot fi un număr infinit.
Să vedem de ce un alt începător poate avea nevoie de o numerotare? Pentru a determina numărul de înregistrări selectate. Pentru aceasta, există o funcție - mysql_num_rows (). Ea ne va ajuta cu orice esantion. În timp ce numerotarea nu ne ajută deloc, din motivele indicate mai sus.
Regula doi: Nu poți schimba id-ul înregistrării, niciodată, în nici un fel. În primul rând, nu este necesar niciodată. În al doilea rând, acesta este ID-ul nostru UNIQUE. Câmpul id arată doar ca numere. De fapt - aceasta este metoda SINGLE, și în orice moment pentru a identifica înregistrarea. Să presupunem că avem un site cu știri. Cineva a pus un link la știri cu id = 1. Apoi am schimbat id-ul. Ca rezultat, o persoană va ajunge la o legătură greșită. Dacă trebuie să renumerotați, atunci pur și simplu nu aveți nevoie de un câmp de autoincrementare.

Limba SQL.
Acum un pic despre limbajul SQL. Aceasta, așa cum am spus, este o invenție de geniu a omenirii. Aproape inteligența artificială. Judeca pentru tine.
Pentru a alege numele tuturor elevilor școlii, elevii din clasa 7A, sortați-i în ordine alfabetică, trebuie să scrieți următoarea interogare:
SELECTă ultimul nume FROM SCHOOL WHERE klass = '7A' ORDER BY nume
Aceasta este o propunere practic semnificativă în limba engleză!
Să încercăm să facem o traducere:
numele SELECT de la școală [astfel] în cazul în care clasa este egală cu 7A, sortate DENUMIRI DE ALPHABET
Ei bine, nu-i rău? Suntem practic în limbajul natural care spune baza de date ce avem nevoie - și ne dă liniile potrivite în ordinea corectă! Și toate astea sunt ONE STITCH! În același timp, complexitatea eșantionului poate fi oricare. Dacă alegem dintr-un fișier text - ar trebui să scriem programul pe o singură coală. Și aici - o linie!
Ei bine, cum? Încă doriți să fișier fișiere?

Întrebări frecvente. Transferul datelor între diferite servere.
Transferul de date prin fișiere dump care conțin cereri INSERT.
Adică, pe serverul de la care vrem să transferăm baza de date, generăm un fișier cu cereri INSERT pentru fiecare rând din fiecare tabelă din baza de date. Și pe un server de la distanță, executăm pur și simplu aceste cereri.

Modul cel mai corect și direct pentru a obține un depozit - este de a utiliza utilitarul de linie de comandă mysqldump
mergeți în DOS sau în coajă și scrieți
mysqldump -u<логин> -p<пароль> baza> dump.sql
obținem fișierul dump.sql, care ar trebui transferat la un server de la distanță și executat acolo.
Pentru a face acest lucru, apelați shell shell ca acesta:
mysql -u<логин> -p<пароль> bază totul, baza este mutată.
Dacă nu aveți acces la shell, puteți utiliza scriptul PHP Sypex Dumper

Alte materiale pe MySQL:







Articole similare

Trimiteți-le prietenilor: