SQL pentru începători

Cele mai multe aplicații web moderne interacționează astăzi cu bazele de date, de obicei cu o limbă numită SQL. Norocos pentru noi, această limbă este destul de ușor de învățat. În acest articol, vom începe cu câteva întrebări de bază SQL și le vom folosi pentru a interacționa cu o bază de date MySQL.

De ce ai nevoie

SQL (Structured Query Language) este un limbaj proiectat pentru a interacționa cu sistemele de gestionare a bazelor de date relaționale (RDBMS), cum ar fi MySQL, Oracle, Sqlite etc ... Pentru a efectua interogările SQL din acest articol, vă sugerez să instalați MySQL. De asemenea, recomand phpMyAdmin ca o interfață vizuală pentru MySQL.

Următoarele aplicații fac foarte ușor să instalați atât MySQL, cât și phpMyAdmin pe mașina dvs. locală:

  • WAMP pentru Windows
  • MAMP pentru Mac

Vom folosi linia de comandă pentru interogări. WAMP vine deja cu o consolă MySQL. Pentru MAMP, poate doriți să citiți acest articol.

CREATE DATABASE: Crearea unei baze de date

Aici vine prima noastră întrebare. Vom crea o bază de date cu care să lucrăm.

Mai întâi, deschideți-vă Consola MySQL și conectați-vă. Pentru WAMP, parola implicită este necompletată. Pentru MAMP, parola ar trebui să fie "root" în mod implicit.

După ce vă conectați, tastați această interogare și apăsați enter:

 CREAȚI DATABASE my_first_db;

Rețineți că la sfâs, itul interogării se adaugă punct și virgulă (;) la fel ca la sfârșitul liniilor de cod.

De asemenea, cuvintele speciale "CREATE DATABASE" sunt insuficiente pentru litere mici, împreună cu toate cuvintele speciale din SQL. Dar, de dragul lizibilității, le vom scrie cu majuscule.

Opțional: set de caractere și colaționare

Dacă doriți să setați setul implicit de caractere și colaționarea, puteți scrie aceeași interogare ca aceasta:

 CREAȚI DATABASE my_first_db DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

Iată o listă de seturi de caractere și colaționări acceptate în MySQL.

ARĂTAȚI DATELE DE BAZĂ: Listați toate bazele de date

Această interogare este utilizată pentru a obține o listă a tuturor bazelor de date pe care le aveți.

DATABASE DROP: Ștergeți o bază de date

Puteți șterge o bază de date existentă cu această interogare.

Fiți atenți la această interogare, deoarece nu vă avertizează. Dacă aveți tabele și date în baza de date, toate vor fi șterse instantaneu.

UTILIZARE: Selectarea unei baze de date

Acest punct de vedere tehnic nu este o interogare. Este o "declarație" și nu are nevoie de punct și virgulă la sfârșit.

Spune MySQL să selecteze o bază de date implicită pentru a lucra cu, pentru sesiunea curentă. Acum suntem gata să creăm tabele și să facem alte lucruri în baza de date.

Ce este o tabelă de baze de date?

Vă puteți gândi la o tabelă de baze de date ca o foaie de calcul sau un fișier csv care conține date structurate.

La fel ca în acest exemplu, tabelele conțin nume de coloane și rânduri de date. Cu interogări SQL putem crea aceste tabele. De asemenea, putem adăuga, citi, actualiza și șterge datele.

CREATE TABLE: Crearea unei tabele

Cu această interogare putem crea tabele în baza de date. Din păcate, documentația MySQL nu este foarte prietenoasă pentru noii cursanți. Structura acestui tip de interogare poate deveni foarte complexă, dar vom începe cu una ușoară.

Următoarea interogare va crea un tabel cu 2 coloane.

 CREATE TABLE utilizatori (numele de utilizator VARCHAR (20), create_date DATE);

Rețineți că putem scrie o interogare în mai multe rânduri și chiar folosim filele pentru indentare.

Prima linie este ușoară. Tocmai creăm un tabel denumit "utilizatori". După aceea, în paranteze, avem o coloană de tabelă separată de virgule. După fiecare nume de coloană, avem un tip de date, cum ar fi VARCHAR sau DATE.

VARCHAR (20) înseamnă că coloana este un tip de șir și poate avea maximum 20 de caractere. DATE este, de asemenea, un tip de date care este utilizat în mod specific pentru stocarea datelor, în acest format: "AAAA-MM-DD".

CHEIA PRINCIPALA

Înainte de a rula această interogare, ar trebui să includeți și o coloană pentru 'user_id', care va fi un KEY PRIMARY. Fără a obține prea multe detalii, vă puteți gândi la un KEY PRIMAR ca pe o modalitate de a identifica fiecare rând de date într-un tabel.

Acum interogarea devine:

 CREATE TABLE utilizatori (user_id INT AUTO_INCREMENT PRIMARY KEY, numele de utilizator VARCHAR (20), create_date DATE);

INT face acest tip de număr întreg de 32 de biți (adică numeric). AUTO_INCREMENT generează automat un nou număr de identificare de fiecare dată când adăugăm noi rânduri de date. Nu este necesar, ci face mult mai convenabil.

Această coloană nu trebuie să fie un număr întreg, ci este tipul cel mai frecvent utilizat. Având o coloană PRIMARY KEY, de asemenea, nu este necesară, dar este recomandată pentru un design și o performanță bună a bazei de date.

Să rulați interogarea:

SHOW TABLES: Lista tuturor tabelelor

Această interogare vă permite să obțineți o listă de tabele care sunt în prezent în baza de date.

EXPLAIN: Afișați structura mesei

Pentru a vedea structura unui tabel existent, puteți utiliza această interogare.

Câmpurile (adică coloanele) sunt afișate în rezultate, cu proprietățile lor.

TABEL DE DROP: Ștergeți un tabel

Ca și DROP DATABASES, această interogare șterge o tabelă și conținutul acesteia, fără avertisment.

ALTER TABLE: Modificați o tabelă

De asemenea, această interogare poate avea o structură destul de complexă datorită multitudinii de modificări pe care le poate efectua pe o masă. Să ne uităm la câteva exemple simple.

(Asigurați-vă că re-creați tabelul pe care tocmai l-am renunțat sau că următoarele interogări nu vor funcționa în mod evident.)

Adăugați o coloană

 Utilizatorii ALTER TABLE ADD email VARCHAR (100) DUPĂ numele de utilizator;

Datorită lizibilității SQL, nu cred că interogarea chiar are nevoie de o explicație.

Eliminați o coloană

A fost foarte simplu. Dar folosiți-o cu prudență deoarece înlătură permanent datele fără avertisment.

Re-adăugați coloana de e-mail, deoarece vom folosi mai târziu:

 Utilizatorii ALTER TABLE ADD email VARCHAR (100) DUPĂ numele de utilizator;

Modificați o coloană

Uneori este posibil să doriți să modificați proprietățile unei coloane, deci nu trebuie să o ștergeți și să o recreați.

A redenumit coloana nume de utilizator la "user_name" și a schimbat tipul de la VARCHAR (20) la VARCHAR (30). O astfel de modificare nu trebuie să perturbe niciuna dintre datele existente din tabel.

INSERT: Adăugați date într-o tabelă

Să adăugăm câteva date în tabel utilizând această interogare.

După cum puteți vedea, VALUES () conține lista valorilor câmpului, separate prin virgule. Valorile șirului sunt închise în ghilimele simple. Valorile trebuie să fie în ordinea coloanelor care au fost definite când am creat tabelul.

Rețineți că prima valoare este NULL pentru câmpul PRIMARY KEY numit "user_id". Facem acest lucru pentru ca un id să fie generat automat, deoarece coloana este setată la AUTO_INCREMENT. Când introduceți un rând de date pentru prima dată, ID-ul va fi 1. Următorul rând inserat va fi 2 și așa mai departe ...

Sintaxă alternativă

Iată o altă sintaxă pentru introducerea rândurilor.

De data aceasta folosim cuvântul cheie SET în loc de VALUES și nu este urmat de paranteze. Există câteva lucruri de reținut aici:

  • O coloană poate fi omisă. De exemplu, nu am atribuit o valoare utilizatorului_id, care va implicit funcția AUTO_INCREMENT. Dacă omiteți o coloană VARCHAR, ar fi implicit un șir gol (dacă nu a fost specificată o altă valoare implicită în timpul creării tabelului).
  • Fiecare coloană trebuie să fie menționată de numele acesteia. Din acest motiv, ele pot fi în orice ordine, spre deosebire de sintaxa anterioară.

Sintaxă alternativă 2

Aici este o altă sintaxă.

Din nou, deoarece fiecare coloană este menționată prin nume, ea poate fi în orice ordine.

LAST_INSERT_ID ()

Puteți utiliza această interogare pentru a obține ID-ul AUTO_INCREMENT pentru ultimul rând inserat, în sesiunea curentă.

ACUM()

Cred că este un moment bun pentru a demonstra modul în care puteți utiliza o funcție MySQL în interogările dvs..

Funcția NOW () returnează data curentă. Astfel, puteți să-l utilizați pentru a seta automat o coloană DATE în ziua curentă în timp ce introduceți un rând nou.

Rețineți că am primit un avertisment de la MySQL, dar nu este o afacere mare. Motivul este că ACUM () returnează de fapt și informații despre timp.

Dar coloana create_date pe care am creat-o conține doar data, și nu data, pentru care datele returnate au fost trunchiate. Am putea utiliza în schimb funcția CURDATE (), care returnează doar data, dar datele stocate la final ar fi la fel.

SELECT: Citiți datele dintr-o tabelă

Evident, datele pe care le-am adăugat ar fi inutile dacă nu le putem citi. Aici intră interogarea SELECT.

Aici este cea mai simplă interogare SELECT posibilă de citire dintr-un tabel:

În acest caz, asteriscul (*) înseamnă că am cerut să preluăm toate coloanele din tabel. Dacă doriți doar coloane specifice, interogarea ar arăta astfel:

WHERE Clauză

De cele mai multe ori, suntem interesați doar de câteva rânduri, și nu de toate. De exemplu, să presupunem că dorim adresa de e-mail pentru utilizatorii "nettuts".

Gândiți-vă la ea ca la o declarație IF. WHERE vă permite să introduceți condiții în interogarea rezultatelor pe care le căutați.

Rețineți că pentru condiția de egalitate este folosit doar un singur semn egal (=), în loc de dublu (==) la care s-ar putea să fim obișnuiți cu programarea.

Puteți utiliza și alte condiții de comparație:

AND și OR pot fi folosite pentru combinarea condițiilor:

Rețineți că valorile numerice nu trebuie să fie în interiorul citatelor.

ÎN()

Acest lucru este util pentru potrivirea mai multor valori.

CA

Acest lucru vă permite să efectuați căutări cu metacaractere.

Semnul procentual (%) este utilizat ca martor.

ORDINEA DE Clauză

Dacă doriți ca rezultatele să fie returnate într-o anumită ordine, utilizați această clauză:

Ordinea implicită este ASC (adică ascendentă). Puteți adăuga DESC în ordine inversă.

LIMIT ... OFFSET ...

Puteți să limitați numărul de rezultate returnate.

LIMIT 2 primește doar primele 2 rezultate. LIMIT 1 OFFSET 2 obține 1 rezultat, după primele 2 rezultate. LIMIT 2, 1 înseamnă același lucru, dar rețineți că primul număr este offset, iar al doilea este limita.

UPDATE: Actualizarea datelor într-un tabel

Această interogare este utilizată pentru actualizarea datelor într-un tabel.

De cele mai multe ori, este folosit cu o clauză WHERE, pentru că doriți să actualizați numai rânduri specifice. Dacă nu este furnizată o clauză WHERE, toate rândurile vor fi actualizate cu aceleași modificări.

De asemenea, puteți utiliza o clauză LIMIT pentru a limita numărul de rânduri care trebuie actualizate.

DELETE: Ștergeți datele din tabel

La fel ca UPDATE, această interogare este, de obicei, utilizată cu o clauză WHERE.

TRUNCATE TABLE

Pentru a șterge întregul conținut al unei mese, puteți face acest lucru:

 DELETE de la utilizatori;

Dar, de obicei, este mai eficient să se utilizeze în schimb TRUNCATE.

De asemenea, TRUNCATE resetează numerele AUTO_INCREMENT astfel încât un rând nou să aibă din nou id-ul 1. Dar acest lucru nu se întâmplă cu o interogare DELETE și contorul continuă să meargă.

Escaping Values ​​String și cuvinte speciale

Valori de coarde

Anumite caractere trebuie să fie scoase, altfel puteți avea probleme.

Spatele lance (\) este folosit pentru a scăpa.

Acest lucru este, de asemenea, foarte important din motive de securitate. Orice intrare a utilizatorului care intră în baza de date trebuie să fie evitată în mod corespunzător. În PHP, utilizați funcția mysql_real_escape_string () sau folosiți instrucțiunile pregătite deoarece acestea scapă automat.

Cuvinte speciale

Deoarece MySQL are multe cuvinte speciale precum SELECT sau UPDATE, puteți preveni coliziunea introducând citate în jurul numelor de tabele și coloane. Dar acestea nu sunt citatele regulate; trebuie să utilizați caracterul backtick (').

Să presupunem că doriți să adăugați o coloană numită "ștergeți" dintr-un motiv oarecare:

Concluzie

Vă mulțumim că ați citit articolul. Sper că am reușit să vă arăt că SQL are o curbă ușoară de învățare, dar este foarte puternic.

Vă rugăm să lăsați comentariile și întrebările dvs. și să aveți o zi minunată!

  • Urmați-ne pe Twitter sau abonați la Nettuts + RSS Feed pentru cele mai bune tutoriale de dezvoltare web de pe web. Gata

Sunteți gata să vă abilitați la nivelul următor și să începeți să profitați de scripturile și componentele dvs.? Verificați piața sora noastră, CodeCanyon.

Cod