SQL înseamnă Structured Query Language. Comenzile SQL sunt instrucțiunile utilizate pentru a comunica cu o bază de date pentru a efectua sarcini, funcții și interogări cu date.

Comenzile SQL pot fi utilizate pentru a căuta în baza de date și pentru a face alte funcții, cum ar fi crearea de tabele, adăugarea de date în tabele, modificarea datelor și eliminarea tabelelor.

Iată o listă de comenzi SQL de bază (uneori numite clauze) pe care ar trebui să le știți dacă aveți de gând să lucrați cu SQL.

SELECTAȚI ȘI DE LA

SELECT o parte a unei interogări determină ce coloane din date să se afișeze în rezultate. Există, de asemenea, opțiuni pe care le puteți aplica pentru a afișa date care nu sunt o coloană de tabel.

Exemplul de mai jos prezintă trei coloane SELECTed FROM tabelul „student” și o coloană calculată. Baza de date stochează studentID, prenume și prenume ale studentului. Putem combina coloanele Prenume și Numele de familie pentru a crea coloana calculată FullName.

SELECT studentID, FirstName, LastName, FirstName + ' ' + LastName AS FullName
FROM student;
+-----------+-------------------+------------+------------------------+
| studentID | FirstName         | LastName   | FullName               |
+-----------+-------------------+------------+------------------------+
|         1 | Monique           | Davis      | Monique Davis          |
|         2 | Teri              | Gutierrez  | Teri Gutierrez         |
|         3 | Spencer           | Pautier    | Spencer Pautier        |
|         4 | Louis             | Ramsey     | Louis Ramsey           |
|         5 | Alvin             | Greene     | Alvin Greene           |
|         6 | Sophie            | Freeman    | Sophie Freeman         |
|         7 | Edgar Frank "Ted" | Codd       | Edgar Frank "Ted" Codd |
|         8 | Donald D.         | Chamberlin | Donald D. Chamberlin   |
|         9 | Raymond F.        | Boyce      | Raymond F. Boyce       |
+-----------+-------------------+------------+------------------------+
9 rows in set (0.00 sec)

CREAȚI TABEL

CREATE TABLE face exact ceea ce sună: creează un tabel în baza de date. Puteți specifica numele tabelului și coloanele care ar trebui să fie în tabel.

CREATE TABLE table_name (
    column_1 datatype,
    column_2 datatype,
    column_3 datatype
);

TABEL ALTER

ALTER TABLE modifică structura unui tabel. Iată cum ați adăuga o coloană la o bază de date:

ALTER TABLE table_name
ADD column_name datatype;

VERIFICA

CHECK constrângerea este utilizată pentru a limita intervalul de valori care poate fi plasat într-o coloană.

Dacă definiți un CHECK constrângere pe o singură coloană permite doar anumite valori pentru această coloană. Dacă definiți un CHECK constrângerea unui tabel poate limita valorile din anumite coloane pe baza valorilor din alte coloane din rând.

Următorul SQL creează un CHECK constrângere pe coloana „Vârstă” când se creează tabelul „Persoane”. CHECK constrângerea vă asigură că nu puteți avea nicio persoană sub 18 ani.

CREATE TABLE Persons (
    ID int NOT NULL,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Age int,
    CHECK (Age>=18)
);

Pentru a permite denumirea unui CHECK constrângere și pentru definirea a CHECK constrângere pe mai multe coloane, utilizați următoarea sintaxă SQL:

CREATE TABLE Persons (
    ID int NOT NULL,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Age int,
    City varchar(255),
    CONSTRAINT CHK_Person CHECK (Age>=18 AND City='Sandnes')
);

UNDE

(AND, OR, IN, BETWEEN, și LIKE)

WHERE clauza este utilizată pentru a limita numărul de rânduri returnate.

Ca exemplu, mai întâi vă vom arăta un SELECT enunț și rezultate fără A WHERE afirmație. Apoi vom adăuga un WHERE declarație care folosește toate cele cinci calificative de mai sus.

SELECT studentID, FullName, sat_score, rcd_updated FROM student;
+-----------+------------------------+-----------+---------------------+
| studentID | FullName               | sat_score | rcd_updated         |
+-----------+------------------------+-----------+---------------------+
|         1 | Monique Davis          |       400 | 2017-08-16 15:34:50 |
|         2 | Teri Gutierrez         |       800 | 2017-08-16 15:34:50 |
|         3 | Spencer Pautier        |      1000 | 2017-08-16 15:34:50 |
|         4 | Louis Ramsey           |      1200 | 2017-08-16 15:34:50 |
|         5 | Alvin Greene           |      1200 | 2017-08-16 15:34:50 |
|         6 | Sophie Freeman         |      1200 | 2017-08-16 15:34:50 |
|         7 | Edgar Frank "Ted" Codd |      2400 | 2017-08-16 15:35:33 |
|         8 | Donald D. Chamberlin   |      2400 | 2017-08-16 15:35:33 |
|         9 | Raymond F. Boyce       |      2400 | 2017-08-16 15:35:33 |
+-----------+------------------------+-----------+---------------------+
9 rows in set (0.00 sec)

Acum, vom repeta SELECT interogare, dar vom limita rândurile returnate folosind un WHERE afirmație.

STUDENT studentID, FullName, sat_score, recordUpdated
FROM student
WHERE (studentID BETWEEN 1 AND 5 OR studentID = 8)
        AND
        sat_score NOT IN (1000, 1400);
+-----------+----------------------+-----------+---------------------+
| studentID | FullName             | sat_score | rcd_updated         |
+-----------+----------------------+-----------+---------------------+
|         1 | Monique Davis        |       400 | 2017-08-16 15:34:50 |
|         2 | Teri Gutierrez       |       800 | 2017-08-16 15:34:50 |
|         4 | Louis Ramsey         |      1200 | 2017-08-16 15:34:50 |
|         5 | Alvin Greene         |      1200 | 2017-08-16 15:34:50 |
|         8 | Donald D. Chamberlin |      2400 | 2017-08-16 15:35:33 |
+-----------+----------------------+-----------+---------------------+
5 rows in set (0.00 sec)

ACTUALIZAȚI

Pentru a actualiza o înregistrare într-un tabel, utilizați UPDATE afirmație.

Folosește WHERE condiție pentru a specifica ce înregistrări doriți să actualizați. Este posibil să actualizați una sau mai multe coloane odată. Sintaxa este:

UPDATE table_name
SET column1 = value1, 
    column2 = value2, ...
WHERE condition;

Iată un exemplu de actualizare a numelui înregistrării cu Id 4:

UPDATE Person
SET Name = “Elton John”
WHERE Id = 4;

De asemenea, puteți actualiza coloanele dintr-un tabel utilizând valori din alte tabele. Folosește JOIN pentru a obține date din mai multe tabele. Sintaxa este:

UPDATE table_name1
SET table_name1.column1 = table_name2.columnA
    table_name1.column2 = table_name2.columnB
FROM table_name1
JOIN table_name2 ON table_name1.ForeignKey = table_name2.Key

Iată un exemplu de actualizare a managerului tuturor înregistrărilor:

UPDATE Person
SET Person.Manager = Department.Manager
FROM Person
JOIN Department ON Person.DepartmentID = Department.ID

A SE GRUPA CU

GROUP BY vă permite să combinați rânduri și date agregate.

Iată sintaxa lui GROUP BY:

SELECT column_name, COUNT(*)
FROM table_name
GROUP BY column_name;

AVÂND

HAVING vă permite să filtrați datele agregate de GROUP BY clauză, astfel încât utilizatorul să poată vizualiza un set limitat de înregistrări.

Iată sintaxa lui HAVING:

SELECT column_name, COUNT(*)
FROM table_name
GROUP BY column_name
HAVING COUNT(*) > value;

AVG ()

„Media” este utilizată pentru a calcula media unei coloane numerice din setul de rânduri returnate de o instrucțiune SQL.

Iată sintaxa pentru utilizarea funcției:

SELECT groupingField, AVG(num_field)
FROM table1
GROUP BY groupingField

Iată un exemplu care folosește tabelul studenților:

SELECT studentID, FullName, AVG(sat_score) 
FROM student 
GROUP BY studentID, FullName;

LA FEL DE

AS vă permite să redenumiți o coloană sau un tabel folosind un alias.

SELECT user_only_num1 AS AgeOfServer, (user_only_num1 - warranty_period) AS NonWarrantyPeriod FROM server_table

Acest lucru are ca rezultat rezultatele prezentate mai jos.

+-------------+------------------------+
| AgeOfServer | NonWarrantyPeriod      | 
+-------------+------------------------+
|         36  |                     24 |
|         24  |                     12 | 
|         61  |                     49 |
|         12  |                      0 | 
|          6  |                     -6 |
|          0  |                    -12 | 
|         36  |                     24 |
|         36  |                     24 | 
|         24  |                     12 | 
+-------------+------------------------+

De asemenea, puteți utiliza AS pentru a atribui un nume unui tabel pentru a face mai ușoară referința în jonctiuni.

SELECT ord.product, ord.ord_number, ord.price, cust.cust_name, cust.cust_number FROM customer_table AS cust

JOIN order_table AS ord ON cust.cust_number = ord.cust_number

Acest lucru are ca rezultat rezultatele prezentate mai jos.

+-------------+------------+-----------+-----------------+--------------+
| product     | ord_number | price     | cust_name       | cust_number  |
+-------------+------------+-----------+-----------------+--------------+
|     RAM     |   12345    |       124 | John Smith      |  20          |
|     CPU     |   12346    |       212 | Mia X           |  22          |
|     USB     |   12347    |        49 | Elise Beth      |  21          |
|     Cable   |   12348    |         0 | Paul Fort       |  19          |
|     Mouse   |   12349    |        66 | Nats Back       |  15          |
|     Laptop  |   12350    |       612 | Mel S           |  36          |
|     Keyboard|   12351    |        24 | George Z        |  95          |
|     Keyboard|   12352    |        24 | Ally B          |  55          |
|     Air     |   12353    |        12 | Maria Trust     |  11          |
+-------------+------------+-----------+-----------------+--------------+

COMANDA DE

ORDER BY ne oferă o modalitate de a sorta rezultatul setat de unul sau mai multe dintre elementele din SELECT secțiune. Iată un SQL care sortează elevii după FullName în ordine descrescătoare. Ordinea de sortare implicită este crescătoare (ASC) dar pentru a sorta în ordinea opusă (descrescătoare) pe care o folosiți DESC.

SELECT studentID, FullName, sat_score
FROM student
ORDER BY FullName DESC;

NUMARA

COUNT va număra numărul de rânduri și va returna care se numără ca o coloană în setul de rezultate.

Iată exemple pentru ce ați folosi COUNT:

  • Numărarea tuturor rândurilor dintr-un tabel (nu este necesar un grup)
  • Numărarea totalelor subgrupurilor de date (necesită o secțiune Grupă după declarație)

Această instrucțiune SQL oferă un număr de toate rândurile. Rețineți că puteți da coloanei COUNT rezultate un nume folosind „AS”.

SELECT count(*) AS studentCount FROM student; 

ȘTERGE

DELETE este folosit pentru a șterge o înregistrare dintr-un tabel.

Ai grija. Puteți șterge toate înregistrările din tabel sau doar câteva. Folosește WHERE condiție pentru a specifica ce înregistrări doriți să ștergeți. Sintaxa este:

DELETE FROM table_name
WHERE condition;

Iată un exemplu de ștergere din tabelul Persoană a înregistrării cu Id 3:

DELETE FROM Person
WHERE Id = 3;

INTERIOR ÎNSCRIEȚI-VĂ

JOIN, numit și Inner Join, selectează înregistrările care au valori potrivite în două tabele.

SELECT * FROM A x JOIN B y ON y.aId = x.Id

ÎNREGISTRARE STÂNGA

A LEFT JOIN returnează toate rândurile din tabelul din stânga și rândurile potrivite din tabelul din dreapta. Rândurile din tabelul din stânga vor fi returnate chiar dacă nu a existat nicio potrivire în tabelul din dreapta. Rândurile din tabelul din stânga fără potrivire în tabelul din dreapta vor avea null pentru valori de tabel corecte.

SELECT * FROM A x LEFT JOIN B y ON y.aId = x.Id

ÎNREGISTRARE DREPTĂ

A RIGHT JOIN returnează toate rândurile din tabelul din dreapta și rândurile potrivite din tabelul din stânga. În fața unei îmbinări la stânga, aceasta va returna toate rândurile din tabelul din dreapta chiar și acolo unde nu există nicio potrivire în tabelul din stânga. Rândurile din tabelul din dreapta care nu au nicio potrivire în tabelul din stânga vor avea null valori pentru coloanele din tabelul din stânga.

SELECT * FROM A x RIGHT JOIN B y ON y.aId = x.Id

ÎNREGISTRARE COMPLETĂ

A FULL OUTER JOIN returnează toate rândurile pentru care există o potrivire în oricare dintre tabele. Deci, dacă există rânduri în tabelul din stânga care nu au potriviri în tabelul din dreapta, acestea vor fi incluse. De asemenea, dacă există rânduri în tabelul din dreapta care nu au potriviri în tabelul din stânga, acestea vor fi incluse.

SELECT Customers.CustomerName, Orders.OrderID
FROM Customers
FULL OUTER JOIN Orders
ON Customers.CustomerID=Orders.CustomerID
ORDER BY Customers.CustomerName

INTRODUCE

INSERT este o modalitate de a insera date într-un tabel.

INSERT INTO table_name (column_1, column_2, column_3) 
VALUES (value_1, 'value_2', value_3);

CA

LIKE este folosit într-un WHERE sau HAVING (ca parte a GROUP BY) pentru a limita rândurile selectate la elemente atunci când o coloană are un anumit tipar de caractere conținute în ea.

Acest SQL va selecta studenții care au FullName începând cu „Monique” sau terminând cu „Greene”.

SELECT studentID, FullName, sat_score, rcd_updated
FROM student 
WHERE 
    FullName LIKE 'Monique%' OR 
    FullName LIKE '%Greene'; 
+-----------+---------------+-----------+---------------------+
| studentID | FullName      | sat_score | rcd_updated         |
+-----------+---------------+-----------+---------------------+
|         1 | Monique Davis |       400 | 2017-08-16 15:34:50 |
|         5 | Alvin Greene  |      1200 | 2017-08-16 15:34:50 |
+-----------+---------------+-----------+---------------------+
2 rows in set (0.00 sec)

Puteți plasa NOT inainte de LIKE pentru a exclude rândurile cu șirul în loc să le selectați. Acest SQL exclude înregistrările care conțin „cer Pau” și „Ted” în coloana FullName.

SELECT studentID, FullName, sat_score, rcd_updated
FROM student 
WHERE FullName NOT LIKE '%cer Pau%' AND FullName NOT LIKE '%"Ted"%';
+-----------+----------------------+-----------+---------------------+
| studentID | FullName             | sat_score | rcd_updated         |
+-----------+----------------------+-----------+---------------------+
|         1 | Monique Davis        |       400 | 2017-08-16 15:34:50 |
|         2 | Teri Gutierrez       |       800 | 2017-08-16 15:34:50 |
|         4 | Louis Ramsey         |      1200 | 2017-08-16 15:34:50 |
|         5 | Alvin Greene         |      1200 | 2017-08-16 15:34:50 |
|         6 | Sophie Freeman       |      1200 | 2017-08-16 15:34:50 |
|         8 | Donald D. Chamberlin |      2400 | 2017-08-16 15:35:33 |
|         9 | Raymond F. Boyce     |      2400 | 2017-08-16 15:35:33 |
+-----------+----------------------+-----------+---------------------+
7 rows in set (0.00 sec)