Sintaxa SQL se bazează pe algebra relațională, ceea ce face ca acest limbaj de programare să fie diferit de alte limbaje. Familiarizarea cu sintaxa prin exemple practice vă poate ajuta să învățați SQL în mod eficient.

Ce este sintaxa SQL?

În programare, sintaxa se referă la modul în care este scris un limbaj de programare. Sintaxa determină structurile de bază ale codului și modul în care acestea sunt legate între ele. Înțelegerea sintaxei este o cerință fundamentală pentru citirea și scrierea codului în limbajele de programare.

Cele mai importante construcții sintactice în SQL sunt instrucțiunile SQL, care pot conține și clauze. Ambele sunt denumite în mod obișnuit „comenzi SQL”, chiar dacă, din punct de vedere tehnic, acest lucru nu este întru totul corect. Totuși, acestea nu sunt singurele construcții sintactice SQL. Mai jos veți găsi un tabel care vă oferă o imagine de ansamblu asupra construcțiilor sintactice SQL.

Termen SQL Explicație Exemplu
Instrucțiune Instruiește DBMS să efectueze o acțiune; se termină cu un punct și virgulă CREATE TABLE People;
Clauză Modifică o instrucțiune; poate apărea numai în cadrul instrucțiunilor. WHERE, HAVING
Expresie Returnează o valoare la evaluare. 6 * 7
Identificator Numele unui obiect, variabilă sau procedură din baza de date; poate fi calificat sau necalificat. dbname.tablename / tablename
Predicat Expresie care se evaluează la TRUE, FALSE sau UNKNOWN Age < 42
Interogare Instrucțiune specială; returnează setul de înregistrări găsite SELECT Name FROM People WHERE Age < 42;
Funcție Procesează una sau mai multe valori; de obicei creează o nouă valoare. UPPER('text') -- returns 'TEXT'
Comentariu Utilizat pentru a comenta codul SQL; ignorat de RDBMS -- Comment up to end of line / /*multiline comment if necessary*/
Notă

Comenzile SQL precum SELECT și CREATE TABLE sunt de obicei scrise cu majuscule. Cu toate acestea, SQL nu face diferența între majuscule și minuscule. Scrisul cu majuscule al comenzilor este doar o convenție larg utilizată.

Cum se execută codul SQL?

Codul SQL există ca cod sursă în fișiere text. Codul prinde viață numai într-un mediu de execuție adecvat. Codul sursă este citit de un interpretor SQL și convertit în acțiuni ale unui RDBMS. Există două abordări de bază în acest sens:

1. Executarea interactivă a codului SQLÎn această abordare, codul SQL este introdus sau copiat direct într-o fereastră de text. Codul SQL este executat, iar rezultatul este afișat. Puteți ajusta codul și îl puteți executa din nou. Secvența rapidă de manipulare a codului și afișarea rezultatelor fac ca această abordare să fie cea mai potrivită pentru învățarea și crearea de interogări complexe. 2. Executați codul SQL cascript În această abordare, un întreg fișier de cod sursă care conține cod SQL este executat linie cu linie. Dacă este necesar, feedback-ul este trimis utilizatorului numai la sfârșitul execuției. Această abordare este cea mai potrivită pentru automatizarea proceselor și pentru importarea copiilor de rezervă ale bazelor de date MySQL cu MySQL dump.

Interfață Descriere Exemple
Interfață linie de comandă (CLI) Interfață bazată pe text; codul SQL este introdus și executat, rezultatul fiind afișat în format text mysql, psql, mysqlsh
Interfață grafică cu utilizatorul (GUI) Codul SQL este introdus în fereastra de text și/sau generat ca răspuns la interacțiunea utilizatorului; codul SQL este executat, rezultatul fiind afișat sub formă de tabele phpMyAdmin, MySQL Workbench, HeidiSQL
Interfață de programare a aplicațiilor (API) Permite comunicarea directă cu un RDBMS; codul SQL este inclus și executat ca șir în codul limbajului de programare; rezultatele sunt disponibile ca structuri de date pentru utilizare ulterioară PHP Data Objects (PDO), Connector/J (Java), Connector/Python, C API

Cum se configurează un sistem de gestionare a produselor folosind SQL

Cel mai simplu mod de a învăța un limbaj de programare este să scrii și să execuți singur codul. În acest tutorial, vom crea o mini-bază de date și vom executa interogări pe aceasta. Pentru a face acest lucru, vom folosi interpretorul SQL online de pe site-ul web sql.js. Pentru a urma tutorialul, accesează site-ul web și înlocuiește codul SQL care a fost deja introdus cu codul din exemplele noastre. Execută codul bucată cu bucată pentru a afișa rezultatele.

Configurați o bază de date SQL

În acest exemplu, vom construi un sistem comercial de gestionare a produselor pentru un magazin. Iată cerințele:

  • Există mai multe produse, iar noi avem o anumită cantitate din fiecare produs în stoc.
  • Baza noastră de clienți include mulți clienți și consumatori.
  • Comenzile plasate de clienți pot conține mai multe produse.
  • Pentru fiecare comandă, stocăm data comenzii și datele persoanei care a plasat comanda, precum și produsele comandate și cantitatea comandată.

Aceste cerințe sunt traduse într-o descriere abstractă și apoi în cod SQL:

  1. Creați modelul
  2. Definiți schema
  3. Introduceți înregistrările de date
  4. Definiți interogările

Creați un model al entităților și relațiilor

Primul pas se realizează pe hârtie sau cu ajutorul unor instrumente speciale de modelare. Colectăm informații despre sistemul care urmează să fie modelat pentru a deriva entități și relații. Acest pas este adesea realizat sub forma unui diagramă entitate-relație (ER).

Ce entități există și cum sunt acestea legate între ele? Entitățile sunt clase de elemente. În exemplul nostru cu sistemul de gestionare a produselor, entitățile sunt produsele, clienții și comenzile. Pentru fiecare entitate este necesar un tabel. Datorită specificului modelului relațional, se adaugă tabele suplimentare pentru a modela relațiile. Recunoașterea acestui lucru și implementarea corectă a acestuia necesită experiență.

O întrebare centrală la care trebuie să răspundem este modul în care entitățile sunt legate între ele. Aici trebuie să luăm în considerare ambele direcții ale unei relații și să facem distincția între singular și plural. Iată un exemplu care utilizează mașini și proprietari de mașini:

  1. Un proprietar poate deține potențial mai multe mașini.
  2. O mașină poate aparține unui singur proprietar.

Între cele două entități se contureazătrei posibile modele de relație:

Relație Entități Din stânga Din dreapta
Relație 1:1 Auto:indicator O mașină poate avea un singur indicator. Un indicator poate aparține unei singure mașini.
Relație 1:n Proprietar:mașină Un proprietar poate avea potențial mai multe mașini. O mașină poate aparține unui singur proprietar.
Relație m:n Mașină: stradă O mașină poate circula pe mai multe drumuri. Mai multe mașini pot circula pe un singur drum.

Implementați produsele

Mai întâi, vom implementa tabelul de produse. Pentru a face acest lucru, trebuie să definim o schemă, să introducem înregistrări de date și, în scopuri de testare, să executăm câteva interogări simple.

Definiți schema

Comanda SQL centrală pentru definirea tabelelor bazei de date este CREATE TABLE. Această comandă vă permite să creați un tabel cu un nume și să specificați proprietățile coloanelor. În același timp, sunt definite tipurile de date și, dacă este necesar, restricțiile privind valorile care urmează să fie stocate:

DROP TABLE IF EXISTS Products;
CREATE TABLE Products ( product_id int, product_name text, stocked int, price int );
sql
Notă

Folosim instrucțiunea DROP TABLE IF EXISTS înainte de a defini tabelul. Aceasta elimină orice tabel existent și permite executarea aceluiași cod SQL de mai multe ori fără a genera mesaje de eroare.

Adăugați seturi de date

Acum, vom crea câteva înregistrări de test. Vom folosi comanda SQL INSERT INTO, precum și funcția VALUES pentru a completa câmpurile:

INSERT INTO Products VALUES (10, 'ABC Product', 74, 1050);
INSERT INTO Products VALUES (20, 'KLM Product', 23, 750);
INSERT INTO Products VALUES (30, 'XYZ Product', 104, 350);
sql

Definiți interogările

Pentru a verifica starea tabelului Produse, vom scrie o interogare simplă. Folosim comanda SELECT FROM și afișăm tabelul complet:

SELECT * FROM Products;
sql

Acum, vom scrie o interogare puțin mai complexă, care calculează valoarea totală a produselor pe care le avem în stoc:

SELECT product_name AS 'Name', (stocked * price) AS 'Value' FROM Products;
sql

Implementați tabele suplimentare

În continuare, vom crea tabelele rămase de care avem nevoie. Vom urma aceiași pași pe care i-am folosit pentru tabelul Produse. Mai întâi, vom crea tabelul Clienți:

DROP TABLE IF EXISTS Customers;
CREATE TABLE Customers ( customer_id int, customer_name text, contact text );
sql

Apoi, introducem înregistrările de date pentru doi clienți eșantion:

INSERT INTO Customers VALUES (100, 'EDC Customer', 'ED@example.com');
INSERT INTO Customers VALUES (200, 'WVU Customer', 'WV@example.com');
sql

Pentru a verifica dacă a funcționat, vom afișa tabelul clienților:

SELECT * FROM Customers;
sql

Următorul pas este crearea tabelului Comenzi:

DROP TABLE IF EXISTS Orders;
CREATE TABLE Orders ( order_id int, customer_id int, order_date text );
sql

Acum, vom introduce trei comenzi de achiziție de probă. Pentru prima valoare a înregistrărilor, vom atribui un ID ca cheie primară. A doua valoare este pentru ID-urile clienților existenți, care funcționează ca chei externe. Apoi stocăm data comenzii:

INSERT INTO Orders VALUES (1000, 100, '2022-05-03');
INSERT INTO Orders VALUES (1001, 100, '2022-05-04');
INSERT INTO Orders VALUES (1002, 200, '2022-05-08');
sql

Pentru a testa acest lucru, vom emite comenzile:

SELECT * FROM Orders;
sql

În cele din urmă, avem nevoie de un tabel pentru produsele dintr-o comandă, împreună cu cantitatea acestora. Aceasta este o relație m:n, deoarece o comandă poate conține mai multe produse, iar un produs poate apărea în mai multe comenzi. Vom defini un tabel care conține ID-urile comenzilor și produselor ca chei externe:

DROP TABLE IF EXISTS OrderItems;
CREATE TABLE OrderItems ( orderitem_id int, order_id int, product_id int, count int );
sql

Acum, introducem câteva produse care au fost comandate. Vom alege ID-urile comenzilor și produselor astfel încât să existe o comandă cu două produse și o altă comandă cu un singur produs:

INSERT INTO OrderItems VALUES (10001, 1000, 10, 3);
INSERT INTO OrderItems VALUES (10002, 1000, 20, 2);
INSERT INTO OrderItems VALUES (10003, 1002, 30, 12);
sql

Pentru a verifica acest lucru, vom emite produsele care au fost comandate:

SELECT * FROM OrderItems;
sql

Scrieți interogări complexe

Dacă ați executat toate fragmentele de cod prezentate până acum, ar trebui să puteți înțelege structura bazei noastre de date de testare. Acum să trecem la interogări mai complexe, care demonstrează puterea limbajului SQL. Mai întâi, să scriem o interogare care combină datele distribuite în mai multe tabele. Vom folosi o comandă SQL JOIN pentru a uni tabelele care conțin datele clienților și comenzile. În timp ce facem acest lucru, vom denumi coloanele și vom seta un ID de client corespunzător ca condiție JOIN. Rețineți că folosim identificatori calificați pentru a distinge între coloanele celor două tabele:

SELECT customers.customer_name as 'Customer', customers.customer_id, orders.order_id, orders.order_date AS 'Date' FROM Customers JOIN Orders ON Orders.customer_id = Customers.customer_id ORDER BY Customers.customer_id;
sql

Acum, vom folosi o altă comandă JOIN pentru a calcula costul total al produselor comandate:

SELECT OrderItems.order_id, OrderItems.orderitem_id AS 'Order Item', Products.product_name AS 'Product', Products.price AS 'Unit Price', OrderItems.count AS 'Count', (OrderItems.count * Products.price) AS 'Total' FROM OrderItems JOIN Products ON OrderItems.product_id = Products.product_id;
sql
Mergi la meniul principal