Limbajul MySQL

Introducere în SQL. Ce este SQL? Ce poate face SQL?

Introducere în SQL

SQL este un limbaj standard pentru accesarea și manipularea bazelor de date.

Ce este SQL?
 
  • SQL înseamnă limbajul de interogare structurat
  • SQL vă permite să accesați și să manipulați bazele de date
  • SQL a devenit un standard al American National Standards Institute (ANSI) în 1986 și al Organizației Internaționale pentru Standardizare (ISO) în 1987

Ce poate face SQL?
 
  • SQL poate executa interogări împotriva unei baze de date
  • SQL poate prelua date dintr-o bază de date
  • SQL poate insera înregistrări într-o bază de date
  • SQL poate actualiza înregistrările într-o bază de date
  • SQL poate șterge înregistrările dintr-o bază de date
  • SQL poate crea baze de date noi
  • SQL poate crea tabele noi într-o bază de date
  • SQL poate crea proceduri stocate într-o bază de date
  • SQL poate crea vizualizări într-o bază de date
  • SQL poate seta permisiunile pe tabele, proceduri și vizualizări
  • SQL este un Standard - DAR ....
  • Deși SQL este un standard ANSI / ISO, există diferite versiuni ale limbajului SQL.

Cu toate acestea, pentru a respecta standardul ANSI, toate acceptă cel puțin comenzile majore (cum ar fi SELECT, UPDATE, DELETE, INSERT, WHERE) într-o manieră similară.

Notă: Majoritatea programelor bazei de date SQL au și extensii proprii în plus față de standardul SQL!

Introducere în SQL. Utilizarea SQL pe site-ul dvs. Web. RDBMS.

Utilizarea SQL pe site-ul dvs. Web

Pentru a construi un site web care arată datele dintr-o bază de date, veti avea nevoie de:
 
  • Un program de bază de date RDBMS (adică MS Access, SQL Server, MySQL)
  • Pentru a utiliza un limbaj de script din partea serverului, cum ar fi PHP sau ASP
  • Pentru a utiliza SQL pentru a obține datele dorite
  • Pentru a utiliza HTML / CSS pentru stilul paginii

RDBMS

RDBMS reprezintă sistemul relațional de gestionare a bazelor de date.

RDBMS este baza pentru SQL și pentru toate sistemele de baze de date moderne precum MS SQL Server, IBM DB2, Oracle, MySQL și Microsoft Access.

Datele din RDBMS sunt stocate în obiectele bazei de date numite tabele. Un tabel este o colecție de intrări de date asociate și este format din coloane și rânduri.

Uitați-vă la tabelul „Clienți”:

Exemplu:
SELECT * FROM Customers;

Fiecare tabel este împărțit în entități mai mici numite câmpuri. Câmpurile din tabelul Clienți constau din CustomerID, CustomerName, ContactName, Adresa, Oraș, Cod Postal și Țară. Un câmp este o coloană dintr-un tabel concepută pentru a păstra informații specifice despre fiecare înregistrare din tabel.

O înregistrare, numită și rând, este fiecare intrare individuală care există într-un tabel. De exemplu, există 91 de înregistrări în tabelul Clienților de mai sus. O înregistrare este o entitate orizontală dintr-un tabel.

O coloană este o entitate verticală dintr-un tabel care conține toate informațiile asociate cu un câmp specific dintr-un tabel.

Sintaxa SQL. Cuvinte cheie SQL. Semicolon după Instrucțiuni SQL? Unele dintre cele mai importante comenzi SQL.

Ține minte că...

Cuvintele cheie SQL NU sunt sensibile la majuscule și minuscule (nu sunt case sensitive): selectarea este identică cu SELECT
În acest tutorial vom scrie toate cuvintele cheie SQL cu majuscule.

Semicolon după Instrucțiuni SQL?

Unele sisteme de baze de date necesită punct și virgulă la sfârșitul fiecărei instrucțiuni SQL.

Semicolon este modul standard de a separa fiecare instrucțiune SQL în sistemele de baze de date care permit executarea a mai mult de o instrucțiune SQL în același apel către server.

În acest tutorial, vom folosi punct și virgulă la sfârșitul fiecărei instrucțiuni SQL.

Unele dintre cele mai importante comenzi SQL
 
  • SELECT - extrage date dintr-o bază de date
  • UPDATE - actualizează datele dintr-o bază de date
  • DELETE - șterge datele dintr-o bază de date
  • INSERT INTO - introduce date noi într-o bază de date
  • CREATE DATABASE - creează o nouă bază de date
  • ALTER DATABASE - modifică o bază de date
  • CREATE TABLE - creează un nou tabel
  • ALTER TABLE - modifică un tabel
  • DROP TABLE - șterge un tabel
  • CREATE INDEX - creează un index (cheie de căutare)
  • DROP INDEX - șterge un index

Sintaxa SQL. Tabele de baze de date. Instrucțiuni SQL.

Sintaxa SQL

Tabele de baze de date (Database Tables)

O bază de date conține cel mai adesea una sau mai multe tabele. Fiecare tabel este identificat printr-un nume (de exemplu, „Clienți” sau „Comenzi”). Tabelele conțin înregistrări (rânduri/rows) cu date.

În acest tutorial vom folosi bine-cunoscuta bază de date de exemplu Northwind (inclusă în MS Access și MS SQL Server).

Selecție din tabelul „Clienți”:
Tabelul conține cinci înregistrări (una pentru fiecare client) și șapte coloane (CustomerID, CustomerName, ContactName, Address, City, PostalCode și Country).

Instrucțiuni SQL

Majoritatea acțiunilor pe care trebuie să le efectuați într-o bază de date sunt efectuate cu instrucțiuni SQL.

Următoarea instrucțiune SQL selectează toate înregistrările din tabelul „Clienți”:

Exemplu:
SELECT * FROM Customers;
În acest tutorial vă vom învăța totul despre diferitele declarații SQL.

SQL SELECT. Instrucțiunea SQL SELECT. Sintaxa SELECT. Exemplu SELECT Column. Exemplu SELECT *.

SQL SELECT

Instrucțiunea SQL SELECT

Instrucțiunea SELECT este utilizată pentru a selecta date dintr-o bază de date.
Datele returnate sunt stocate într-un tabel de rezultate, numit set de rezultate (result-set).

Sintaxa SELECT
 
SELECT column1, column2, ...
FROM table_name;

Aici, column1, column2, ... sunt numele câmpurilor din tabelul din care doriți să selectați datele. Dacă doriți să selectați toate câmpurile disponibile în tabel, utilizați următoarea sintaxă:
 
SELECT * FROM table_name;

Exemplu SELECT Column 

Următoarea instrucțiune SQL selectează coloanele „CustomerName” și „City” din tabelul „Customers”:

Exemplu:
 
SELECT CustomerName, City FROM Customers;

Exemplu SELECT *

Următoarea instrucțiune SQL selectează toate coloanele din tabelul "Customers":

Exemplu:
 
SELECT * FROM Customers;

Instrucțiunea SQL SELECT DISTINCT. Sintaxa SELECT DISTINCT. Exemplu SELECT fără DISTINCT.

Instrucțiunea SQL SELECT DISTINCT

Instrucțiunea SELECT DISTINCT este utilizată pentru a returna doar valori distincte (diferite).

În interiorul unui tabel, o coloană conține adesea multe valori duplicate; și uneori doriți doar să enumerați valorile diferite (distincte).

Sintaxa SELECT DISTINCT
 
SELECT DISTINCT column1, column2, ...
FROM table_name;

Exemplu SELECT fără DISTINCT

Următoarea instrucțiune SQL selectează TOATE (inclusiv duplicatele) valorile din coloana „Country” din tabelul „Customers”:

Exemplu:
 
SELECT Country FROM Customers;

Acum, să folosim cuvântul cheie DISTINCT cu instrucțiunea SELECT de mai sus și să vedem rezultatul.

Instrucțiunea SQL SELECT DISTINCT. Exemple SELECT DISTINCT.

Exemple SELECT DISTINCT

Următoarea instrucțiune SQL selectează numai valorile DISTINCT din coloana „Country” din tabelul „Customers”:

Exemplu:
 
SELECT DISTINCT Country FROM Customers;

Următoarea instrucțiune SQL listează numărul de țări client (customer countries) diferite (distincte):

Exemplu:
 
SELECT COUNT(DISTINCT Country) FROM Customers;

Notă: Exemplul de mai sus nu va funcționa în Firefox și Microsoft Edge! Deoarece COUNT(DISTINCT column_name) nu este acceptat în bazele de date Microsoft Access. Firefox și Microsoft Edge folosesc Microsoft Access în exemplele noastre.

Iată soluția pentru MS Access:

Exemplu:
 
SELECT Count(*) AS DistinctCountries
FROM (SELECT DISTINCT Country FROM Customers);

Clauza SQL WHERE. Sintaxa WHERE. Exemplu de clauză WHERE.

Clauza SQL WHERE

Clauza WHERE este folosită pentru a filtra înregistrările.
Clauza WHERE este utilizată pentru a extrage doar acele înregistrări care îndeplinesc o condiție specificată.

Sintaxa WHERE
 
SELECT column1, column2, ...
FROM table_name
WHERE condition;

Notă: Clauza WHERE nu este utilizată numai în instrucțiunea SELECT, ci este utilizată și în instrucțiunea UPDATE, DELETE etc.

Exemplu de clauză WHERE

Următoarea declarație SQL selectează toți clienții din țara „Mexic”, în tabelul „Customers”:

Exemplu:
 
SELECT * FROM Customers
WHERE Country='Mexic';
 

Clauza SQL WHERE. Text Fields vs. Numeric Fields. Operatori în clauza WHERE.

Text Fields vs. Numeric Fields

SQL necesită citate unice în jurul valorilor de text (majoritatea sistemelor de baze de date vor permite, de asemenea, ghilimele duble).
Cu toate acestea, câmpurile numerice nu trebuie incluse între ghilimele:

Exemplu:
 
SELECT * FROM Customers
WHERE CustomerID=1;

Operatori în clauza WHERE

În clauza WHERE pot fi folosiți următorii operatori:

 
Operator Descriere  
= Egal  
> Mai mare decât  
< Mai mic decât  
>= Mai mare sau egal  
<= Mai mic sau egal  
<> Nu este egal.Notă: În unele versiuni de SQL, acest operator poate fi scris ca !=  
BETWEEN Între un anumit interval  
LIKE Căutați un model (pattern)  
IN Pentru a specifica mai multe valori posibile pentru o coloană  

Operatorii SQL AND, OR și NOT. ​​​​​​​Sintaxa AND. Sintaxa OR. Sintaxa NOT.

Operatorii SQL AND, OR și NOT

Clauza WHERE poate fi combinată cu operatorii AND, OR și NOT.

Operatorii AND și OR sunt folosiți pentru a filtra înregistrările pe baza mai multor condiții:
 
  • Operatorul AND afișează o înregistrare dacă toate condițiile separate de AND sunt TRUE.
  • Operatorul OR afișează o înregistrare dacă oricare dintre condițiile separate de OR este TRUE.

Operatorul NOT afișează o înregistrare dacă condițiile (condițiile) sunt NOT TRUE.

Sintaxa AND
 
SELECT column1, column2, ...
FROM table_name
WHERE condition1 AND condition2 AND condition3 ...;

Sintaxa  OR
 
SELECT column1, column2, ...
FROM table_name
WHERE condition1 OR condition2 OR condition3 ...;

Sintaxa  NOT
 
SELECT column1, column2, ...
FROM table_name
WHERE NOT condition;

Operatorii SQL AND, OR și NOT. Exemple SQL AND, OR și NOT.

Exemple SQL AND, OR și NOT

Exemplu AND

Următoarea instrucțiune SQL selectează toate câmpurile din „Customers” unde țara este „Germania” AND orașul este „Berlin”:

Exemplu:
 
SELECT * FROM Customers
WHERE Country='Germania' AND City='Berlin';

Exemplu OR

Următoarea instrucțiune SQL selectează toate câmpurile din „Customers” unde orașul este „Berlin” OR „Munchen”:

Exemplu:
 
SELECT * FROM Customers
WHERE City='Berlin' OR City='Munchen';

Următoarea instrucțiune SQL selectează toate câmpurile din „Customers” unde țara este „Germania” OR „Spania”:

Exemplu:
 
SELECT * FROM Customers
WHERE Country='Germania' OR Country='Spania';

Exemplu NOT

Următoarea instrucțiune SQL selectează toate câmpurile din „Customers” în care țara NOT este „Germania”:

Exemplu:
 
SELECT * FROM Customers
WHERE NOT Country='Germania';

Operatorii SQL AND, OR și NOT. Combinarea operatorilor AND, OR și NOT.

Combinarea operatorilor AND, OR și NOT

Puteți combina, de asemenea, operatorii AND, OR și NOT.

Următoarea instrucțiune SQL selectează toate câmpurile din „Customers" unde țara este „Germania” AND orașul trebuie să fie „Berlin” OR „Munchen” (folosiți paranteza pentru a forma expresii complexe):

Exemplu:
 
SELECT * FROM Customers
WHERE Country='Germania' AND (City='Berlin' OR City='Munchen');

Următoarea instrucțiune SQL selectează toate câmpurile din „Customers" în care țara NOT este „Germania” și NOT „SUA”:

Exemplu:
 
SELECT * FROM Customers
WHERE NOT Country='Germania' AND NOT Country='USA';

Cuvântul cheie SQL ORDER BY. Exemplu 1 - Câteva coloane ORDER BY. Exemplu 2 - Câteva coloane ORDER BY.

Exemplu 1 - Câteva coloane ORDER BY

Următoarea instrucțiune SQL selectează toți clienții din tabelul "Customers", sortați după coloana „Country” și „CustomerName”. Acest lucru înseamnă că se comandă după Country, dar dacă unele rânduri au același Country, atunci se comandă prin CustomerName:

Exemplu:
 
SELECT * FROM Customers
ORDER BY Country, CustomerName;

Exemplu 2 - Câteva coloane ORDER BY

Următoarea instrucțiune SQL selectează toți clienții din tabelul „Customers”, sortați în ordine crescătoare după „Country” și descendenți după coloana „CustomerName”:

Exemplu:
 
SELECT * FROM Customers
ORDER BY Country ASC, CustomerName DESC;

Cuvântul cheie SQL ORDER BY. Sintaxa ORDER BY. Exemplu ORDER BY. Exemplu ORDER BY DESC.

Cuvântul cheie SQL ORDER BY

Cuvântul cheie ORDER BY este utilizat pentru a sorta setul de rezultate (result-set) în ordine crescătoare sau descendentă.
Cuvântul cheie ORDER BY sortează înregistrările în ordine crescătoare în mod implicit. Pentru a sorta înregistrările în ordine descrescătoare, utilizați cuvântul cheie DESC.

Sintaxa ORDER BY
 
SELECT column1, column2, ...
FROM table_name
ORDER BY column1, column2, ... ASC|DESC;

Exemplu ORDER BY

Următoarea instrucțiune SQL selectează toți clienții din tabelul "Customers", ordonați după coloana „Country”:

Exemplu:
 
SELECT * FROM Customers
ORDER BY Country;

Exemplu ORDER BY DESC

Următoarea instrucțiune SQL selectează toți clienții din tabelul "Customers", ordonați DESCENDING după coloana „Country”:

Exemplu:
 
SELECT * FROM Customers
ORDER BY Country DESC;

Instrucțiunea SQL INSERT INTO. Exemplu INSERT INTO. Inserați date numai în coloane specificate.

Exemplu INSERT INTO

Următoarea instrucțiune SQL introduce o nouă înregistrare în tabelul "Customers":

Exemplu:
 
INSERT INTO Customers (CustomerName, ContactName, Address, City, PostalCode, Country)
VALUES ('Cardinal', 'Tom B. Erichsen', 'Skagen 21', 'Stavanger', '4006', 'Norway');

Inserați date numai în coloane specificate

De asemenea, este posibil să inserați date doar în coloane specifice.

Următoarea instrucțiune SQL va insera o înregistrare nouă, dar va insera doar date în coloanele „CustomerName”, „City” și „Country” (CustomerID va fi actualizat automat):

Exemplu:
 
INSERT INTO Customers (CustomerName, City, Country)
VALUES ('Cardinal', 'Stavanger', 'Norway');

Instrucțiunea SQL INSERT INTO. Sintaxa INSERT INTO.

Instrucțiunea SQL INSERT INTO

Instrucțiunea INSERT INTO este utilizată pentru a insera înregistrări noi într-un tabel.

Sintaxa INSERT INTO

Este posibil să scrieți instrucțiunea INSERT INTO în două moduri.
Prima modalitate specifică atât numele coloanelor, cât și valorile care trebuie introduse:
 
INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);

Dacă adăugați valori pentru toate coloanele tabelului, nu este necesar să specificați numele coloanelor din interogarea SQL. Cu toate acestea, asigurați-vă că ordinea valorilor este în aceeași ordine cu coloanele din tabel.

Sintaxa INSERT INTO ar fi următoarea:
 
INSERT INTO table_name
VALUES (value1, value2, value3, ...);

Valori SQL NULL. Ce este o valoare NULL? Cum se testează valorile NULL? Sintaxa IS NULL. Sintaxa IS NOT NULL.

Valori SQL NULL

Ce este o valoare NULL?

Un câmp cu o valoare NULL este un câmp fără nicio valoare.

Dacă un câmp dintr-un tabel este opțional, este posibil să inserați o înregistrare nouă sau să actualizați o înregistrare fără a adăuga o valoare la acest câmp. Apoi, câmpul va fi salvat cu o valoare NULL.

Notă: O valoare NULL este diferită de o valoare zero sau un câmp care conține spații. Un câmp cu o valoare NULL este unul care a fost lăsat liber în timpul creării înregistrărilor!

Cum se testează valorile NULL?

Nu este posibil să se testeze valorile NULL cu operatori de comparație, cum ar fi =, < sau <>.

În schimb, va trebui să utilizăm operatorii IS NULL și IS NOT NULL.

Sintaxa IS NULL:
 
SELECT column_names
FROM table_name
WHERE column_name IS NULL;

Sintaxa IS NOT NULL:
 
SELECT column_names
FROM table_name
WHERE column_name IS NOT NULL;

Valori SQL NULL. Operatorul IS NULL. Operatorul IS NOT NULL.

Operatorul IS NULL

Operatorul IS NULL este utilizat pentru testarea valorilor goale (valori NULL).

Următorul SQL listează toți clienții cu o valoare NULL în câmpul „Address”:

Exemplu:
 
SELECT CustomerName, ContactName, Address
FROM Customers
WHERE Address IS NULL;

Sfat: Folosiți întotdeauna IS NULL pentru a căuta valorile NULL.


Operatorul IS NOT NULL

Operatorul IS NOT NULL este utilizat pentru testarea valorilor care nu sunt goale (valori IS NOT NULL).

Următorul SQL listează toți clienții cu o valoare în câmpul „Address”:

Exemplu:
 
SELECT CustomerName, ContactName, Address
FROM Customers
WHERE Address IS NOT NULL;

Instrucțiunea SQL UPDATE. Sintaxa UPDATE. Clauza WHERE. Tabela UPDATE.

Instrucțiunea SQL UPDATE

Instrucțiunea UPDATE este utilizată pentru a modifica înregistrările existente într-un tabel.

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

Notă: Aveți grijă când actualizați înregistrările într-un tabel! Observați clauza WHERE din declarația UPDATE. Clauza WHERE specifică ce înregistrări trebuie actualizate. Dacă omiteți clauza WHERE, toate înregistrările din tabel vor fi actualizate!

Tabela UPDATE 

Următoarea instrucțiune SQL actualizează primul client (CustomerID = 1) cu o persoană de contact nouă și un oraș nou.

Exemplu:
 
UPDATE Customers
SET ContactName = 'Ion Popescu', City= 'Bucuresti'
WHERE CustomerID = 1;

Instrucțiunea SQL UPDATE. Înregistrări multiple UPDATE. Clauza WHERE. UPDATE avertizare!.

Înregistrări multiple UPDATE

Clauza WHERE este cea care determină câte înregistrări vor fi actualizate.

Următoarea declarație SQL va actualiza numele de contact la „Ion” pentru toate înregistrările în care țara este „Romania”:

Exemplu:
 
UPDATE Customers
SET ContactName='Ion'
WHERE Country='Romania';

UPDATE avertizare!

Aveți grijă când actualizați înregistrările. Dacă omiteți clauza WHERE, TOATE înregistrările vor fi actualizate!

Exemplu:
 
UPDATE Customers
SET ContactName='Ion';

Instrucțiunea SQL DELETE. Sintaxa DELETE. Clauza WHERE. Exemplu SQL DELETE.

Instrucțiunea SQL DELETE

Instrucțiunea DELETE este utilizată pentru a șterge înregistrările existente dintr-un tabel.

Sintaxa DELETE
 
DELETE FROM table_name WHERE condition;

Notă: Aveți grijă când ștergeți înregistrările dintr-un tabel! Observați clauza WHERE din declarația DELETE. Clauza WHERE specifică ce înregistrări trebuie eliminate. Dacă omiteți clauza WHERE, toate înregistrările din tabel vor fi șterse!

Exemplu SQL DELETE:

Următoarea instrucțiune SQL șterge clientul „Ion Popescu” din tabelul „Customers”:

Exemplu:
 
DELETE FROM Customers WHERE CustomerName='Ion Popescu';

Instrucțiunea SQL DELETE. Ștergeți toate înregistrările.

Ștergeți toate înregistrările

Este posibil să ștergeți toate rândurile dintr-un tabel fără a șterge tabelul. Aceasta înseamnă că structura tabelului, atributele și indexurile vor fi intacte:
 
DELETE FROM table_name;

Următoarea instrucțiune SQL șterge toate rândurile din tabelul „Customers”, fără a șterge tabelul:

Exemplu:
 
DELETE FROM Customers;

Clauzele SQL TOP, LIMIT sau ROWNUM. Clauza SQL SELECT TOP. Sintaxa SQL Server / MS Access. Sintaxa MySQL. Sintaxa Oracle.

Clauzele SQL TOP, LIMIT sau ROWNUM

Clauza SQL SELECT TOP

Clauza SELECT TOP este utilizată pentru a specifica numărul de înregistrări de returnat.
Clauza SELECT TOP este utilă pe tabele mari cu mii de înregistrări. Restituirea unui număr mare de înregistrări poate afecta performanța.

Notă: Nu toate sistemele de baze de date acceptă clauza SELECT TOP. MySQL acceptă clauza LIMIT pentru a selecta un număr limitat de înregistrări, în timp ce Oracle utilizează ROWNUM.

Sintaxa SQL Server / MS Access
 
SELECT TOP number|percent column_name(s)
FROM table_name
WHERE condition;

Sintaxa MySQL 
 
SELECT column_name(s)
FROM table_name
WHERE condition
LIMIT number;

Sintaxa Oracle
 
SELECT column_name(s)
FROM table_name
WHERE ROWNUM <= number;

Clauzele SQL TOP, LIMIT sau ROWNUM. Adăugați o clauză WHERE. Clauza LIMIT. Clauza ROWNUM.

Adăugați o clauză WHERE

Următoarea declarație SQL selectează primele trei înregistrări din tabelul „Customers”, unde țara este „Germania”:

Exemplu:
 
SELECT TOP 3 * FROM Customers
WHERE Country='Germania';

Următoarea instrucțiune SQL arată exemplul echivalent folosind clauza LIMIT:

Exemplu:
 
SELECT * FROM Customers
WHERE Country='Germania'
LIMIT 3;

Următoarea instrucțiune SQL arată exemplul echivalent folosind clauza ROWNUM:

Exemplu:
 
SELECT * FROM Customers
WHERE Country='Germania' AND ROWNUM <= 3;

Clauzele SQL TOP, LIMIT sau ROWNUM. Exemple SQL TOP, LIMIT și ROWNUM. Clauza LIMIT. Clauza ROWNUM. Exemplu SQL TOP PERCENT.

Exemple SQL TOP, LIMIT și ROWNUM

Următoarea instrucțiune SQL selectează primele trei înregistrări din tabelul „Customers”:

Exemplu:
 
SELECT TOP 3 * FROM Customers;

Următoarea instrucțiune SQL arată exemplul echivalent folosind clauza LIMIT:

Exemplu:
 
SELECT * FROM Customers
LIMIT 3;

Următoarea instrucțiune SQL arată exemplul echivalent folosind ROWNUM:

Exemplu:
 
SELECT * FROM Customers
WHERE ROWNUM <= 3;

Exemplu SQL TOP PERCENT

Următoarea instrucțiune SQL selectează primele 50% de înregistrări din tabelul „Customers”:

Exemplu:
 
SELECT TOP 50 PERCENT * FROM Customers;

Funcțiile SQL MIN() și MAX(). Sintaxa MIN(). Sintaxa MAX().

Funcțiile SQL MIN() și MAX()

Funcția MIN() returnează cea mai mică valoare a coloanei selectate.
Funcția MAX() returnează cea mai mare valoare a coloanei selectate.

Sintaxa MIN()
 
SELECT MIN(column_name)
FROM table_name
WHERE condition;

Sintaxa MAX()
 
SELECT MAX(column_name)
FROM table_name
WHERE condition;

Funcțiile SQL MIN() și MAX(). Exemplu MIN(). Exemplu MAX().

Exemplu MIN()

Următoarea declarație SQL găsește prețul celui mai ieftin produs:

Exemplu:
 
SELECT MIN(Price) AS SmallestPrice
FROM Products;

Exemplu MAX()

Următoarea declarație SQL găsește prețul celui mai scump produs:

Exemplu:
 
SELECT MAX(Price) AS LargestPrice
FROM Products;

Funcțiile SQL COUNT(), AVG() și SUM(). Exemplu COUNT(). Exemplu AVG(). Exemplu SUM().

Exemplu COUNT()

Următoarea instrucțiune SQL găsește numărul de produse:

Exemplu:
 
SELECT COUNT(ProductID)
FROM Products;
Notă: Valorile NULL nu sunt numărate.


Exemplu AVG()

Următoarea declarație SQL găsește prețul mediu al tuturor produselor:

Exemplu:
 
SELECT AVG(Price)
FROM Products;
Notă: Valorile NULL sunt ignorate.


Exemplu SUM()

Următoarea instrucțiune SQL găsește suma câmpurilor „Quantity” din tabelul „OrderDetails”:

Exemplu:
 
SELECT SUM(Quantity)
FROM OrderDetails;
Notă: Valorile NULL sunt ignorate.

Funcțiile SQL COUNT(), AVG() și SUM(). Sintaxa COUNT(). Sintaxa AVG(). Sintaxa SUM().

Funcțiile SQL COUNT(), AVG() și SUM()

Funcția COUNT() returnează numărul de rânduri care corespund unui criteriu specificat.
Funcția AVG() returnează valoarea medie a unei coloane numerice.
Funcția SUM() returnează suma totală a unei coloane numerice.

Sintaxa COUNT()
 
SELECT COUNT(column_name)
FROM table_name
WHERE condition;

Sintaxa AVG()
 
SELECT AVG(column_name)
FROM table_name
WHERE condition;

Sintaxa SUM()
 
SELECT SUM(column_name)
FROM table_name
WHERE condition;

Operatorul SQL LIKE. Exemple SQL LIKE.

Exemple SQL LIKE

Următoarea instrucțiune SQL selectează toți clienții cu un nume client începând cu „a”:

Exemplu:
 
SELECT * FROM Customers
WHERE CustomerName LIKE 'a%';

Următoarea instrucțiune SQL selectează toți clienții cu un nume client care se termină cu „a”:

Exemplu:
 
SELECT * FROM Customers
WHERE CustomerName LIKE '%a';

Următoarea instrucțiune SQL selectează toți clienții cu un nume client care au „or” în orice poziție:

Exemplu:
 
SELECT * FROM Customers
WHERE CustomerName LIKE '%or%';
 

Operatorul SQL LIKE. Clauza WHERE. Sintaxa LIKE.

Operatorul SQL LIKE

Operatorul LIKE este folosit într-o clauză WHERE pentru a căuta un model specificat într-o coloană.

Există două wildcards folosite adesea împreună cu operatorul LIKE:
 
  • % - Semnul procentual reprezintă zero, unu sau mai multe caractere
  • _ - Sublinierea reprezintă un singur personaj

Notă: MS Access folosește un asterisc (*) în loc de semnul procentual (%) și un semn de întrebare (?) În loc de subliniere (_).

Semnul procentual și sublinierea pot fi de asemenea utilizate în combinații!

Sintaxa LIKE
 
SELECT column1, column2, ...
FROM table_name
WHERE columnN LIKE pattern;
Sfat: Puteți combina, de asemenea, orice număr de condiții folosind operatorii AND sau OR.

Operatorul SQL LIKE. Exemple de operatori LIKE cu wildcard-uri „%” și „_”.

Exemple de operatori LIKE cu wildcard-uri „%” și „_”

Iată câteva exemple care arată diferiți operatori LIKE cu wildcard-uri „%” și „_”:

 
Operatorul LIKE Descriere
WHERE CustomerName LIKE 'a%' Găsește toate valorile care încep cu „a”
WHERE CustomerName LIKE '%a' Găsește orice valori care se termină cu "a"
WHERE CustomerName LIKE '%or%' Găsește orice valori care au „sau” în orice poziție
WHERE CustomerName LIKE '_r%' Găsește orice valori care au „r” în a doua poziție
WHERE CustomerName LIKE 'a__%' Găsește orice valori care încep cu „a” și au cel puțin 3 caractere în lungime
WHERE ContactName LIKE 'a%o' Găsește orice valori care încep cu "a" și se termină cu "o"

Operatorul SQL LIKE. Exemple SQL LIKE 2.

Exemple SQL LIKE

Următoarea instrucțiune SQL selectează toți clienții cu un nume client care are „r” în a doua poziție:

Exemplu:
 
SELECT * FROM Customers
WHERE CustomerName LIKE '_r%';

Următoarea instrucțiune SQL selectează toți clienții cu un nume client care începe cu „a” și are cel puțin 3 caractere în lungime:

Exemplu:
 
SELECT * FROM Customers
WHERE CustomerName LIKE 'a__%';

Următoarea instrucțiune SQL selectează toți clienții cu un nume de contact care începe cu „a” și se termină cu „o”:

Exemplu:
 
SELECT * FROM Customers
WHERE ContactName LIKE 'a%o';

Următoarea instrucțiune SQL selectează toți clienții cu un nume client care NU începe cu „a”:

Exemplu:
 
SELECT * FROM Customers
WHERE CustomerName NOT LIKE 'a%';

SQL Wildcards. Caractere SQL Wildcards. Operatorul LIKE. Clauza WHERE. Caractere wildcard în MS Access. Caractere wildcard în SQL Server. Exemple care arată diferiți operatori LIKE cu wildcard-uri „%” și „_”.

SQL Wildcards

Caracterele SQL Wildcards

Un caracter wildcard este folosit pentru a substitui unul sau mai multe caractere dintr-un șir.
Caracterele wildcard sunt utilizate cu operatorul SQL LIKE. Operatorul LIKE este folosit într-o clauză WHERE pentru a căuta un model specificat într-o coloană.

Caractere wildcard în MS Access

 
Simbol Descriere Exemplu
* Reprezintă zero sau mai multe caractere bl* finds bl, black, blue, and blob
? Reprezintă un singur caracter h?t finds hot, hat, and hit
[] Reprezintă orice caracter dintre paranteze h[oa]t finds hot and hat, but not hit
! Reprezintă orice caracter care nu se află între paranteze h[!oa]t finds hit, but not hot and hat
- Reprezintă o serie de caractere c[a-b]t finds cat and cbt
# Reprezintă orice singur caracter numeric 2#5 finds 205, 215, 225, 235, 245, 255, 265, 275, 285, and 295

Caractere wildcard în SQL Server
 
Simbol Descriere Exemple
% Reprezintă zero sau mai multe caractere bl% finds bl, black, blue, and blob
_ Reprezintă un singur caracter h_t finds hot, hat, and hit
[] Reprezintă orice caracter dintre paranteze h[oa]t finds hot and hat, but not hit
^ Reprezintă orice caracter care nu se află între paranteze h[^oa]t finds hit, but not hot and hat
- Reprezintă o serie de caractere c[a-b]t finds cat and cbt

Toate wildcards-urile pot fi, de asemenea, utilizate în combinații!

Iată câteva exemple care arată diferiți operatori LIKE cu wildcard-uri „%” și „_”:
 
Operator LIKE Descriere
WHERE CustomerName LIKE 'a%' Găsește orice valoarecare începe cu „a”
WHERE CustomerName LIKE '%a' Găsește orice valoare care se termină cu "a"
WHERE CustomerName LIKE '%or%' Găsește orice valoare care are „or” în orice poziție
WHERE CustomerName LIKE '_r%' Găsește orice valoare care are „r” în a doua poziție
WHERE CustomerName LIKE 'a_%_%' Găsește orice valoare care începe cu „a” și are cel puțin 3 caractere în lungime
WHERE ContactName LIKE 'a%o' Găsește orice valoare care începe cu "a" și se termină cu "o"

SQL Wildcards. Utilizarea wildcard-ului %. Utilizarea wildcard-ului  _.

Utilizarea wildcard-ului %

Următoarea instrucțiune SQL selectează toți clienții cu un oraș care începe cu „ber”:

Exemplu:
 
SELECT * FROM Customers
WHERE City LIKE 'ber%';

Următoarea instrucțiune SQL selectează toți clienții cu un oraș care conține patternul "es":

Exemplu:
 
SELECT * FROM Customers
WHERE City LIKE '%es%';

Utilizarea wildcard-ului _

Următoarea instrucțiune SQL selectează toți clienții cu un oraș care începe cu orice caracter, urmată de „ondon”:

Exemplu:
 
SELECT * FROM Customers
WHERE City LIKE '_ondon';

Următoarea instrucțiune SQL selectează toți clienții cu un oraș care începe cu „L”, urmat de orice caracter, urmat de „n”, urmat de orice caracter, urmat de „on”:

Exemplu:
 
SELECT * FROM Customers
WHERE City LIKE 'L_n_on';

SQL Wildcards. Utilizarea wildcard-ului [charlist]. Utilizarea wildcard-ului [!charlist].

Utilizarea wildcard-ului [charlist]

Următoarea instrucțiune SQL selectează toți clienții cu un oraș care începe cu „b”, „s” sau „p”:

Exemplu:
 
SELECT * FROM Customers
WHERE City LIKE '[bsp]%';

Următoarea instrucțiune SQL selectează toți clienții cu un oraș care începe cu „a”, „b” sau „c”:

Exemplu:
 
SELECT * FROM Customers
WHERE City LIKE '[a-c]%';

Utilizarea wildcard-ului [!charlist] 

Următoarele două instrucțiuni SQL selectează toți clienții cu un oraș care NOT (NU) începe cu "b", "s" sau "p":

Exemplu:
 
SELECT * FROM Customers
WHERE City LIKE '[!bsp]%';

Sau:

Exemplu:
 
SELECT * FROM Customers
WHERE City NOT LIKE '[bsp]%';

Operatorul SQL IN. Clauza WHERE. Sintaxa IN.

Operatorul SQL IN

Operatorul IN vă permite să specificați mai multe valori într-o clauză WHERE.
Operatorul IN este un manual pentru mai multe condiții.

Sintaxa IN
 
SELECT column_name(s)
FROM table_name
WHERE column_name IN (value1, value2, ...);

sau:
 
SELECT column_name(s)
FROM table_name
WHERE column_name IN (SELECT STATEMENT);

Operatorul SQL IN. Exemple de operator IN.

Exemple de operator IN

Următoarea instrucțiune SQL selectează toți clienții care se află în „Germania”, „Franța” sau „Marea Britanie”:

Exemplu:
 
SELECT * FROM Customers
WHERE Country IN ('Germania', 'Franța', 'Marea Britanie');

Următoarea instrucțiune SQL selectează toți clienții care nu se află în „Germania”, „Franța” sau „Marea Britanie”:

Exemplu:
 
SELECT * FROM Customers
WHERE Country NOT IN ('Germania', 'Franța”', 'Marea Britanie');

Următoarea instrucțiune SQL selectează toți clienții care provin din aceleași țări ca furnizorii:

Exemplu:
 
SELECT * FROM Customers
WHERE Country IN (SELECT Country FROM Suppliers);

Alias-urile SQL. Sintaxa Coloanei Alias.

Alias-urile SQL

Alias-urile SQL sunt utilizate pentru a da un nume temporar unei tabele sau unei coloane dintr-un tabel.
Alias-urile sunt adesea folosite pentru a face citirea numelor de coloane.
Un alias există doar pe durata interogării.

Sintaxa Coloanei Alias
 
SELECT column_name AS alias_name
FROM table_name;
Alias Table Syntax
SELECT column_name(s)
FROM table_name AS alias_name;
 

Alias-urile SQL. Exemplu Alias pentru tabele.

Exemplu Alias pentru tabele

Următoarea instrucțiune SQL selectează toate comenzile de la client cu CustomerID = 4 (Around the Horn). Folosim tabelele „Customers” și „Orders” și le oferim aliasul tabelului „c” și respectiv „o” (Aici folosim alias-uri pentru a face SQL-ul mai scurt):

Exemplu:
 
SELECT o.OrderID, o.OrderDate, c.CustomerName
FROM Customers AS c, Orders AS o
WHERE c.CustomerName="Around the Horn" AND c.CustomerID=o.CustomerID;

Următoarea instrucțiune SQL este aceeași ca mai sus, dar fără alias:

Exemplu:
 
SELECT Orders.OrderID, Orders.OrderDate, Customers.CustomerName
FROM Customers, Orders
WHERE Customers.CustomerName="Around the Horn" AND Customers.CustomerID=Orders.CustomerID;

Alias-urile pot fi utile atunci când:
 
  • Există mai multe tabele implicate într-o interogare
  • Funcțiile sunt utilizate în interogare
  • Numele coloanelor sunt mari sau nu sunt foarte citibile
  • Două sau mai multe coloane sunt combinate între ele

Alias-urile SQL. Exemple Alias pentru coloane.

Exemple Alias pentru coloane

Următoarea instrucțiune SQL creează două alias-uri, unul pentru coloana CustomerID și unul pentru coloana CustomerName:

Exemplu:
 
SELECT CustomerID AS ID, CustomerName AS Customer
FROM Customers;

Următoarea instrucțiune SQL creează două alias-uri, unul pentru coloana CustomerName și unul pentru coloana ContactName.

Notă: Este nevoie de ghilimele duble sau paranteze pătrate dacă numele alias conține spații:

Exemplu:
 
SELECT CustomerName AS Customer, ContactName AS [Contact Person]
FROM Customers;

Următoarea instrucțiune SQL creează un alias numit „Address” care combină patru coloane (adresă, cod poștal, oraș și țară/Address, PostalCode, City and Country):

Exemplu:
 
SELECT CustomerName, Address + ', ' + PostalCode + ' ' + City + ', ' + Country AS Address
FROM Customers;

Notă: Pentru ca instrucțiunea SQL de mai sus să funcționeze în MySQL, utilizați următoarele:
 
SELECT CustomerName, CONCAT(Address,', ',PostalCode,', ',City,', ',Country) AS Address
FROM Customers;

SQL JOIN. Clauza JOIN.

SQL JOIN

O clauză JOIN este utilizată pentru a combina rânduri din două sau mai multe tabele, pe baza unei coloane înrudite între ele.

Să ne uităm la o selecție din tabelul „Orders”:



Apoi, uitați-vă la o selecție din tabelul „Customers”:



Observați că coloana „CustomerID” din tabelul „Orders” se referă la „CustomerID” din tabelul „Customers”. Relația dintre cele două tabele de mai sus este coloana „CustomerID”.

Apoi, putem crea următoarea instrucțiune SQL (care conține un INNER JOIN), care selectează înregistrările care au valori potrivite în ambele tabele:

Exemplu:
 
SELECT Orders.OrderID, Customers.CustomerName, Orders.OrderDate
FROM Orders
INNER JOIN Customers ON Orders.CustomerID=Customers.CustomerID;

și va produce ceva de genul:

SQL JOIN. Diferite tipuri de SQL JOINs: (INNER) JOIN, LEFT (OUTER) JOIN, RIGHT (OUTER) JOIN, FULL (OUTER) JOIN.

Diferite tipuri de SQL JOINs

Iată diferitele tipuri de JOINs în SQL:
 
  • (INNER) JOIN: Returnează înregistrările care au valori potrivite în ambele tabele
  • LEFT (OUTER) JOIN: Returnează toate înregistrările din tabelul din stânga și înregistrările potrivite din tabelul din dreapta
  • RIGHT (OUTER) JOIN: Returnează toate înregistrările din tabelul din dreapta și înregistrările potrivite din tabelul din stânga
  • FULL (OUTER) JOIN: Returnează toate înregistrările atunci când există o potrivire în tabelul din stânga sau din dreapta



 

SQL INNER JOIN. Exemplu SQL INNER JOIN. Trei Tabele JOIN.

Exemplu SQL INNER JOIN

Următoarea instrucțiune SQL selectează toate comenzile cu informații despre client (customer):

Exemplu:
 
SELECT Orders.OrderID, Customers.CustomerName
FROM Orders
INNER JOIN Customers ON Orders.CustomerID = Customers.CustomerID;
Notă: Cuvântul cheie INNER JOIN selectează toate rândurile din ambele tabele, atâta timp cât există o potrivire între coloane. Dacă există înregistrări în tabelul „Orders” care nu au potriviri în „Customers”, aceste comenzi nu vor fi afișate!

Trei Tabele JOIN (JOIN Three Tables)

Următoarea declarație SQL selectează toate comenzile cu informații despre client și expeditor (customer and shipper):

Exemplu:
SELECT Orders.OrderID, Customers.CustomerName, Shippers.ShipperName
FROM ((Orders
INNER JOIN Customers ON Orders.CustomerID = Customers.CustomerID)
INNER JOIN Shippers ON Orders.ShipperID = Shippers.ShipperID);

SQL LEFT JOIN. Exemplu SQL LEFT JOIN.

Exemplu SQL LEFT JOIN

Următoarea instrucțiune SQL va selecta toți clienții (customers) și orice comenzi (orders) ar putea avea:

Exemplu:
 
SELECT Customers.CustomerName, Orders.OrderID
FROM Customers
LEFT JOIN Orders ON Customers.CustomerID = Orders.CustomerID
ORDER BY Customers.CustomerName;

Notă: Cuvântul cheie LEFT JOIN returnează toate înregistrările din tabelul din stânga (Clienți/Customers), chiar dacă nu există potriviri în tabelul din dreapta (Comenzi/Orders).

SQL LEFT JOIN. Cuvântul cheie SQL LEFT JOIN. Sintaxa SQL LEFT JOIN.

SQL LEFT JOIN

Cuvântul cheie SQL LEFT JOIN

Cuvântul cheie LEFT JOIN returnează toate înregistrările din tabelul din stânga (table1), si înregistrările potrivite din tabelul din dreapta (table2). Dacă nu există nicio potrivire din partea dreaptă rezultatul este NULL.

Sintaxa SQL LEFT JOIN
 
LEFT JOIN Syntax
SELECT column_name(s)
FROM table1
LEFT JOIN table2
ON table1.column_name = table2.column_name;
Notă: În unele baze de date LEFT JOIN se numește LEFT OUTER JOIN.

SQL RIGHT JOIN. Exemplu SQL RIGHT JOIN.

Exemplu SQL RIGHT JOIN

Următoarea instrucțiune SQL va returna toți angajații (employees) și orice comenzi (orders) ar fi făcut:

Exemplu:
 
SELECT Orders.OrderID, Employees.LastName, Employees.FirstName
FROM Orders
RIGHT JOIN Employees ON Orders.EmployeeID = Employees.EmployeeID
ORDER BY Orders.OrderID;

Notă: Cuvântul cheie RIGHT JOIN returnează toate înregistrările din tabelul din dreapta (Angajați/Employees), chiar dacă nu există meciuri în tabelul din stânga (Comenzi/Orders).

SQL RIGHT JOIN. Cuvântul cheie SQL RIGHT JOIN. Sintaxa RIGHT JOIN.

SQL RIGHT JOIN

Cuvântul cheie SQL RIGHT JOIN

Cuvântul cheie RIGHT JOIN returnează toate înregistrările din tabelul din dreapta (table2), si înregistrările potrivite din tabelul din stânga (table1). Când nu există nici o potrivire rezultatul este NULL din partea stângă.

Sintaxa RIGHT JOIN
 
RIGHT JOIN Syntax
SELECT column_name(s)
FROM table1
RIGHT JOIN table2
ON table1.column_name = table2.column_name;
Notă: În unele baze de date, RIGHT JOIN se numește RIGHT OUTER JOIN.

SQL FULL OUTER JOIN. Cuvântul cheie SQL FULL OUTER JOIN. Sintaxa SQL FULL OUTER JOIN.

SQL FULL OUTER JOIN

Cuvântul cheie SQL FULL OUTER JOIN

Cuvântul cheie FULL OUTER JOIN returnează toate înregistrările atunci când există o potrivire în înregistrările tabelului stânga (tabel1) sau dreapta (tabel2).

Notă: FULL OUTER JOIN poate returna seturi de rezultate foarte mari!

Sfat: FULL OUTER JOIN și FULL JOIN sunt aceleași.

Sintaxa SQL FULL OUTER JOIN
 
SELECT column_name(s)
FROM table1
FULL OUTER JOIN table2
ON table1.column_name = table2.column_name
WHERE condition;
 

SQL FULL OUTER JOIN. Exemplu SQL FULL OUTER JOIN.

Exemplu SQL FULL OUTER JOIN

Următoarea instrucțiune SQL selectează toți clienții și toate comenzile:
 
SELECT Customers.CustomerName, Orders.OrderID
FROM Customers
FULL OUTER JOIN Orders ON Customers.CustomerID=Orders.CustomerID
ORDER BY Customers.CustomerName;

Notă: Cuvântul cheie FULL OUTER JOIN returnează toate înregistrările de potrivire din ambele tabele, indiferent dacă celălalt tabel se potrivește sau nu. Așadar, dacă există „rânduri” (rows) în „Clienți” (Customers) care nu au potriviri în „Comenzi” (Orders) sau dacă există „rânduri” (rows) în „Comenzi” (Orders)  care nu au potriviri în „Clienți” (Customers), aceste rânduri vor fi listate și ele.

SQL Self JOIN. Exemplu SQL Self JOIN.

Exemplu SQL Self JOIN

Următoarea instrucțiune SQL se potrivește cu clienții (customers) care provin din același oraș:

Exemplu:
 
SELECT A.CustomerName AS CustomerName1, B.CustomerName AS CustomerName2, A.City
FROM Customers A, Customers B
WHERE A.CustomerID <> B.CustomerID
AND A.City = B.City
ORDER BY A.City;
 

SQL UNION. Operatorul SQL UNION. Sintaxa UNION. Sintaxa UNION ALL.

SQL UNION

Operatorul SQL UNION

Operatorul UNION este utilizat pentru a combina setul de rezultate a două sau mai multe declarații SELECT.
 
  • Fiecare declarație SELECT din UNION trebuie să aibă același număr de coloane
  • Coloanele trebuie să aibă, de asemenea, tipuri de date similare
  • Coloanele din fiecare instrucțiune SELECT trebuie să fie, de asemenea, în aceeași ordine

Sintaxa UNION
 
SELECT column_name(s) FROM table1
UNION
SELECT column_name(s) FROM table2;

Sintaxa UNION ALL

Operatorul UNION selectează în mod implicit doar valori distincte. Pentru a permite valori duplicate, utilizați UNION ALL:
 
SELECT column_name(s) FROM table1
UNION ALL
SELECT column_name(s) FROM table2;

Notă: Numele coloanelor din setul de rezultate sunt de obicei egale cu numele coloanelor din prima declarație SELECT din UNION.

SQL UNION. Exemplu SQL UNION. Exemplu SQL UNION ALL.

Exemplu SQL UNION

Următoarea instrucțiune SQL returnează orașele (doar valori distincte) atât din „Clienți” (Customers), cât și din „Furnizori” (Suppliers):

Exemplu:
 
SELECT City FROM Customers
UNION
SELECT City FROM Suppliers
ORDER BY City;

Notă: Dacă unii clienți (customers) sau furnizori (suppliers) au același oraș, fiecare oraș va fi listat o singură dată, deoarece UNION selectează doar valori distincte. Utilizați UNION ALL pentru a selecta, de asemenea, valori duplicate!

Exemplu SQL UNION ALL

Următoarea instrucțiune SQL returnează orașele (de asemenea, valori duplicate) atât din tabela „Clienți” (Customers), cât și din „Furnizori” (Suppliers):

Exemplu:
 
SELECT City FROM Customers
UNION ALL
SELECT City FROM Suppliers
ORDER BY City;

SQL UNION. Un alt exemplu UNION.

Un alt exemplu UNION

Următoarea instrucțiune SQL listează toți clienții (customers) și furnizorii (suppliers):

Exemplu:
 
SELECT 'Customer' As Type, ContactName, City, Country
FROM Customers
UNION
SELECT 'Supplier', ContactName, City, Country
FROM Suppliers;

Observați „AS Type” de mai sus - este un alias. Alias-urile SQL sunt utilizate pentru a da un nume temporar unei tabele sau unei coloane. Un alias există doar pe durata interogării. Așadar, aici am creat o coloană temporară numită „Tip” (Type), care listează dacă persoana de contact este „Client” (Customer) sau „Furnizor” (Supplier).

SQL UNION. SQL UNION cu WHERE. SQL UNION ALL cu WHERE.

SQL UNION cu WHERE

Următoarea instrucțiune SQL returnează orașele germane (doar valori distincte) atât din tabela „Clienți” (Customers), cât și din „Furnizori” (Suppliers):

Exemplu:
 
SELECT City, Country FROM Customers
WHERE Country='Germania'
UNION
SELECT City, Country FROM Suppliers
WHERE Country='Germania'
ORDER BY City;

SQL UNION ALL cu WHERE

Următoarea instrucțiune SQL returnează orașele germane (de asemenea, valori duplicate) atât din tabela „Clienți” (Customers), cât și din „Furnizori” (Suppliers):

Exemplu:
 
SELECT City, Country FROM Customers
WHERE Country='Germania'
UNION ALL
SELECT City, Country FROM Suppliers
WHERE Country='Germania'
ORDER BY City;

SQL GROUP BY. Instrucțiunea SQL GROUP BY. Sintaxa GROUP BY.

SQL GROUP BY

Instrucțiunea SQL GROUP BY

Instrucțiunea GROUP BY grupează rândurile care au aceleași valori în rânduri sumare, cum ar fi „găsiți numărul de clienți din fiecare țară”.

Instrucțiunea GROUP BY este adesea folosită cu funcții agregate (COUNT, MAX, MIN, SUM, AVG) pentru a grupa setul de rezultate (result-set) cu una sau mai multe coloane.

Sintaxa GROUP BY
 
SELECT column_name(s)
FROM table_name
WHERE condition
GROUP BY column_name(s)
ORDER BY column_name(s);

SQL GROUP BY. Exemple SQL GROUP BY. Exemplu GROUP BY Cu JOIN.

Exemple SQL GROUP BY

Următoarea instrucțiune SQL listează numărul de clienți (customers) din fiecare țară:

Exemplu:
 
SELECT COUNT(CustomerID), Country
FROM Customers
GROUP BY Country;

Următoarea instrucțiune SQL listează numărul de clienți (customers) din fiecare țară, sortat de la mare până la mic:

Exemplu:
 
SELECT COUNT(CustomerID), Country
FROM Customers
GROUP BY Country
ORDER BY COUNT(CustomerID) DESC;
 
Exemplu GROUP BY Cu JOIN

Următoarea instrucțiune SQL listează numărul de comenzi (orders) trimise de fiecare expeditor (shipper):

Exemplu:
 
SELECT Shippers.ShipperName, COUNT(Orders.OrderID) AS NumberOfOrders FROM Orders
LEFT JOIN Shippers ON Orders.ShipperID = Shippers.ShipperID
GROUP BY ShipperName;

SQL EXISTS. Operatorul SQL EXISTS. Sintaxa EXISTS.

SQL EXISTS

Operatorul SQL EXISTS

Operatorul EXISTS este utilizat pentru a testa existența oricărei înregistrări într-o subquery.
Operatorul EXISTS returnează adevărat dacă subquery returnează una sau mai multe înregistrări.

Sintaxa EXISTS
 
SELECT column_name(s)
FROM table_name
WHERE EXISTS
(SELECT column_name FROM table_name WHERE condition);
 

SQL EXISTS. Exemple SQL EXISTS.

Exemple SQL EXISTS

Următoarea instrucțiune SQL returnează TRUE și listează furnizorii (suppliers) cu un preț al produsului mai mic de 20:

Exemplu:
 
SELECT SupplierName
FROM Suppliers
WHERE EXISTS (SELECT ProductName FROM Products WHERE Products.SupplierID = Suppliers.supplierID AND Price < 20);

Următoarea instrucțiune SQL returnează TRUE și listează furnizorii (suppliers) cu un preț de produs egal cu 22:

Exemplu:
 
SELECT SupplierName
FROM Suppliers
WHERE EXISTS (SELECT ProductName FROM Products WHERE Products.SupplierID = Suppliers.supplierID AND Price = 22);

SQL SELECT INTO. Instrucțiunea SQL SELECT INTO. Sintaxa SELECT INTO. Clauza AS.

SQL SELECT INTO

Instrucțiunea SQL SELECT INTO

Instrucțiunea SELECT INTO copiază datele dintr-o tabelă într-un nou tabel.

Sintaxa SELECT INTO

Copiați toate coloanele într-un nou tabel:
 
SELECT *
INTO newtable [IN externaldb]
FROM oldtable
WHERE condition;

Copiați doar câteva coloane într-un nou tabel:
 
SELECT column1, column2, column3, ...
INTO newtable [IN externaldb]
FROM oldtable
WHERE condition;

Noua tabelă va fi creată cu numele și coloanele definite în tabelul vechi. Puteți crea nume de coloane noi folosind clauza AS.

SQL SELECT INTO. Exemple SQL SELECT INTO. Clauza IN. Clauza WHERE.

Exemple SQL SELECT INTO

Următoarea instrucțiune SQL creează o copie de rezervă a Clienților (Customers):
 
SELECT * INTO CustomersBackup2017
FROM Customers;

Următoarea instrucțiune SQL folosește clauza IN pentru a copia tabela într-un nou tabel într-o altă bază de date:
 
SELECT * INTO CustomersBackup2017 IN 'Backup.mdb'
FROM Customers;

Următoarea instrucțiune SQL copiază doar câteva coloane într-un nou tabel:
 
SELECT CustomerName, ContactName INTO CustomersBackup2017
FROM Customers;

Următoarea instrucțiune SQL copiază doar clienții (customers) germani într-un nou tabel:
 
SELECT * INTO CustomersGermania
FROM Customers
WHERE Country = 'Germania';

Următoarea instrucțiune SQL copiază date din mai multe tabele într-un nou tabel:
 
SELECT Customers.CustomerName, Orders.OrderID
INTO CustomersOrderBackup2017
FROM Customers
LEFT JOIN Orders ON Customers.CustomerID = Orders.CustomerID;

Sfat: SELECT INTO poate fi, de asemenea, utilizat pentru a crea un tabel nou, gol, folosind schema altuia. Adaugă doar o clauză WHERE care determină ca interogarea să nu returneze date:
 
SELECT * INTO newtable
FROM oldtable
WHERE 1 = 0;

SQL INSERT INTO SELECT. Instrucțiunea SQL INSERT INTO SELECT. Sintaxa INSERT INTO SELECT.

SQL INSERT INTO SELECT

Instrucțiunea SQL INSERT INTO SELECT

Instrucțiunea INSERT INTO SELECT copiază datele dintr-un tabel și le introduce într-un alt tabel.

INSERT INTO SELECT necesită ca tipurile de date din sursele și tabelele țintă (target) să se potrivească
Înregistrările existente în tabelul țintă (target) nu sunt afectate

Sintaxa INSERT INTO SELECT

Copiați toate coloanele de la un tabel la altul:
 
INSERT INTO table2
SELECT * FROM table1
WHERE condition;

Copiați doar câteva coloane dintr-un tabel într-un alt tabel:
 
INSERT INTO table2 (column1, column2, column3, ...)
SELECT column1, column2, column3, ...
FROM table1
WHERE condition;

SQL INSERT INTO SELECT. Exemple SQL INSERT INTO SELECT.

Exemple SQL INSERT INTO SELECT

Următoarea instrucțiune SQL copiază „Furnizorii” (Suppliers) în „Clienți” (Customers) (coloanele care nu sunt completate cu date, vor conține NULL):

Exemplu:
 
INSERT INTO Customers (CustomerName, City, Country)
SELECT SupplierName, City, Country FROM Suppliers;

Următoarea instrucțiune SQL copiază „Furnizorii” (Suppliers) în „Clienți” (Customers) (completați toate coloanele):

Exemplu:
 
INSERT INTO Customers (CustomerName, ContactName, Address, City, PostalCode, Country)
SELECT SupplierName, ContactName, Address, City, PostalCode, Country FROM Suppliers;

Următoarea instrucțiune SQL copiază numai furnizorii germani în „Clienți” (Customers):

Exemplu:
 
INSERT INTO Customers (CustomerName, City, Country)
SELECT SupplierName, City, Country FROM Suppliers
WHERE Country='Germania';

SQL CASE. Exemple SQL CASE.

Exemple SQL CASE

Următorul SQL trece prin condiții și returnează o valoare atunci când este îndeplinită prima condiție:

Exemplu
 
SELECT OrderID, Quantity,
CASE
    WHEN Quantity > 30 THEN "The quantity is greater than 30"
    WHEN Quantity = 30 THEN "The quantity is 30"
    ELSE "The quantity is under 30"
END AS QuantityText
FROM OrderDetails;

Următorul SQL va ordona (order) clienții (customers) după oraș. Cu toate acestea, dacă orașul este NULL, atunci ordonați (order) după țară:

Exemplu:
 
SELECT CustomerName, City, Country
FROM Customers
ORDER BY
(CASE
    WHEN City IS NULL THEN Country
    ELSE City
END);
 

SQL CASE. Instrucțiunea SQL CASE. Instrucțiunea IF-THEN-ELSE. Clauza ELSE. Sintaxa CASE.

SQL CASE

Instrucțiunea SQL CASE

Instrucțiunea CASE trece prin condiții și returnează o valoare atunci când este îndeplinită prima condiție (ca o instrucțiune IF-THEN-ELSE). Deci, odată ce o condiție este adevărată, aceasta va opri citirea și va returna rezultatul. Dacă condițiile nu sunt adevărate, aceasta returnează valoarea în clauza ELSE.
Dacă nu există nici o parte ELSE și nici o condiție nu este adevărată, se returnează NULL.

Sintaxa CASE
 
CASE
    WHEN condition1 THEN result1
    WHEN condition2 THEN result2
    WHEN conditionN THEN resultN
    ELSE result
END;
 

SQL ANY și ALL. Operatorii SQL ANY și ALL. Valorile subquery. Sintaxa ANY. Sintaxa ALL.

SQL ANY și ALL 

Operatorii SQL ANY și ALL

Operatorii ANY și ALL sunt folosiți cu o clauză WHERE sau HAVING.
Operatorul ANY returnează adevărat dacă oricare dintre valorile subquery îndeplinește condiția.
Operatorul ALL returnează adevărat dacă toate valorile subquery corespund condiției.

Sintaxa ANY
 
SELECT column_name(s)
FROM table_name
WHERE column_name operator ANY
(SELECT column_name FROM table_name WHERE condition);

Sintaxa ALL
 
​​​​​​​SELECT column_name(s)
FROM table_name
WHERE column_name operator ALL
(SELECT column_name FROM table_name WHERE condition);

Notă: Operatorul trebuie să fie un operator de comparație standard (=, <>,! =,>,> =, <, Sau <=);

SQL ANY și ALL. Exemple SQL ANY. Operatorul ANY. Valorile subquery.

Exemple SQL ANY

Operatorul ANY returnează TRUE dacă oricare dintre valorile subquery îndeplinește condiția.

Următoarea instrucțiune SQL returnează TRUE și listează numele produsului dacă găsește ANY înregistrări în tabelul OrderDetails unde cantitate=10 (quantity = 10):

Exemplu:
 
SELECT ProductName
FROM Products
WHERE ProductID = ANY (SELECT ProductID FROM OrderDetails WHERE Quantity = 10);

Următoarea instrucțiune SQL returnează TRUE și listează numele produsului dacă găsește ANY înregistrări în tabelul OrderDetails unde cantitate>99 (quantity > 99):

Exemplu:
 
SELECT ProductName
FROM Products
WHERE ProductID = ANY (SELECT ProductID FROM OrderDetails WHERE Quantity > 99);

SQL ANY și ALL. Exemplu SQL ALL. Operatorul ALL. Valorile subquery.

Exemplu SQL ALL

Operatorul ALL returnează TRUE dacă toate valorile subquery îndeplinesc condiția.

Următoarea instrucțiune SQL returnează TRUE și listează numele produselor dacă înregistrările ALL din tabelul OrderDetails au cantitate=10 (quantity = 10) (deci, acest exemplu va returna FALSE, deoarece nu înregistrările ALL din tabelul OrderDetails au cantitate = 10 (quantity = 10)):

Exemplu:
 
SELECT ProductName
FROM Products
WHERE ProductID = ALL (SELECT ProductID FROM OrderDetails WHERE Quantity = 10);

Funcții SQL NULL. Soluţii. MySQL. Funcția MySQL IFNULL(). Funcția COALESCE(). SQL Server. Funcția SQL ISNULL().

Soluţii

MySQL

Funcția MySQL IFNULL() vă permite să returnați o valoare alternativă dacă o expresie este NULL:
 
SELECT ProductName, UnitPrice * (UnitsInStock + IFNULL(UnitsOnOrder, 0))
FROM Products;

sau putem folosi funcția COALESCE(), astfel:
 
SELECT ProductName, UnitPrice * (UnitsInStock + COALESCE(UnitsOnOrder, 0))
FROM Products;

SQL Server

Funcția SQL ISNULL() vă permite să returnați o valoare alternativă atunci când o expresie este NULL:
 
SELECT ProductName, UnitPrice * (UnitsInStock + ISNULL(UnitsOnOrder, 0))
FROM Products;
 

Funcții SQL NULL. Funcții SQL IFNULL(), ISNULL(), COALESCE() și NVL().

Funcții SQL NULL

Funcții SQL IFNULL(), ISNULL(), COALESCE() și NVL()

Consultați următorul tabel „Produse” (Products):



Să presupunem că coloana "UnitsOnOrder" este opțională și poate conține valori NULL.

Uită-te la următoarea declarație SELECT:
 
SELECT ProductName, UnitPrice * (UnitsInStock + UnitsOnOrder)
FROM Products;

În exemplul de mai sus, dacă oricare dintre valorile "UnitsOnOrder" este NULL, rezultatul va fi NULL.

Funcții SQL NULL. Soluţii. MS Access. Funcția MS Access IsNull(). Oracle. Funcția Oracle NVL().

MS Access

Funcția MS Access IsNull() returnează TRUE (-1) dacă expresia este o valoare nulă, altfel returnează FALSE (0):
 
​​​​​​​SELECT ProductName, UnitPrice * (UnitsInStock + IIF(IsNull(UnitsOnOrder), 0, UnitsOnOrder))
FROM Products;

Oracle

Funcția Oracle NVL()
obține același rezultat:
 
SELECT ProductName, UnitPrice * (UnitsInStock + NVL(UnitsOnOrder, 0))
FROM Products;
 

Proceduri stocate SQL. Exemplu de procedură stocată.

Exemplu de procedură stocată (stored procedure)

Următoarea instrucțiune SQL creează o procedură stocată (stored procedure) numită "SelectAllCustomers" care selectează toate înregistrările din tabelul "Clienți" (Customers):

Exemplu:
 
CREATE PROCEDURE SelectAllCustomers
AS
SELECT * FROM Customers
GO;

Executați procedura stocată (stored procedure) de mai sus după cum urmează:

Exemplu:
 
EXEC SelectAllCustomers;
 

Proceduri stocate SQL. Procedura stocată cu un singur parametru.

Procedura stocată cu un singur parametru

Următoarea instrucțiune SQL creează o procedură stocată (stored procedure) care selectează Clienții (Customers) dintr-un anumit oraș (City) din tabelul „Clienți” (Customers):

Exemplu:
 
CREATE PROCEDURE SelectAllCustomers @City nvarchar(30)
AS
SELECT * FROM Customers WHERE City = @City
GO;

Executați procedură stocată (stored procedure) mai sus după cum urmează:

Exemplu:
 
EXEC SelectAllCustomers @City = "Londra";

Proceduri stocate SQL. Proceduri stocate SQL pentru SQL Server. Ce este o procedură stocată? Sintaxa de procedură stocată.

Proceduri stocate SQL (SQL Stored Procedures)

Proceduri stocate SQL pentru SQL Server (SQL Stored Procedures for SQL Server)

Ce este o procedură stocată (Stored Procedure)?

O procedură stocată (Stored Procedure) este un cod SQL pregătit pe care îl puteți salva, astfel încât codul poate fi reutilizat din nou și din nou.
Așadar, dacă aveți o interogare SQL pe care o scrieți de mai multe ori, salvați-o ca o procedură stocată (Stored Procedure) și apoi apelați-o pentru a o executa.
De asemenea, puteți trece parametrii la o procedură stocată (Stored Procedure), astfel încât procedura stocată (Stored Procedure) să poată acționa în funcție de valoarea (valorile) parametrului care este trecută.

Sintaxa de procedură stocată (Stored Procedure)
 
CREATE PROCEDURE procedure_name
AS
sql_statement
GO;
Execute a Stored Procedure
EXEC procedure_name;

Proceduri stocate SQL. Procedură stocată cu mai mulți parametri.

Procedură stocată cu mai mulți parametri

Configurarea mai multor parametri este foarte ușoară. Trebuie doar să enumerați fiecare parametru și tipul de date separat printr-o virgulă, așa cum se arată mai jos.

Următoarea instrucțiune SQL creează o procedură stocată (stored procedure) care selectează clienții (Customers) dintr-un anumit oraș (City) cu un anumit cod poștal (PostalCode) din tabelul „Clienți” (Customers):

Exemplu:
 
CREATE PROCEDURE SelectAllCustomers @City nvarchar(30), @PostalCode nvarchar(10)
AS
SELECT * FROM Customers WHERE City = @City AND PostalCode = @PostalCode
GO;

Executați procedura stocată (stored procedure) mai sus după cum urmează:

Exemplu:
 
EXEC SelectAllCustomers @City = "Londra", @PostalCode = "WA1 1DP";

Comentarii SQL. Comentarii cu o singură linie.

Comentarii SQL

Comentariile sunt utilizate pentru a explica secțiunile instrucțiunilor SQL sau pentru a preveni executarea de instrucțiuni SQL.

Notă: Exemplele din acest capitol nu vor funcționa în Firefox și Microsoft Edge!

Comentariile nu sunt acceptate în bazele de date Microsoft Access. Firefox și Microsoft Edge folosesc baza de date Microsoft Access în exemplele noastre.

Comentarii cu o singură linie

Comentariile cu o singură linie încep cu -.
Orice text între - și sfârșitul liniei va fi ignorat (nu va fi executat).

Următorul exemplu utilizează un comentariu cu o singură linie ca explicație:

Exemplu:
 
--Select all:
SELECT * FROM Customers;

Următorul exemplu utilizează un comentariu cu o singură linie pentru a ignora sfârșitul unei linii:

Exemplu:
 
SELECT * FROM Customers -- WHERE City='Berlin';

Următorul exemplu utilizează un comentariu cu o singură linie pentru a ignora o afirmație:

Exemplu:
 
--SELECT * FROM Customers;
SELECT * FROM Products;

Comentarii SQL. Comentarii cu mai multe linii.

Comentarii cu mai multe linii

Comentariile cu mai multe linii încep cu / * și se termină cu * /.
Orice text între / * și * / va fi ignorat.

Următorul exemplu utilizează un comentariu cu mai multe linii ca explicație:

Exemplu:
 
/*Selectați toate coloanele
din toate înregistrările
în tabelul Clienți (Customers): * /
SELECT * FROM Customers;

Următorul exemplu utilizează un comentariu cu mai multe linii pentru a ignora multe afirmații:

Exemplu:
 
/*SELECT * FROM Customers;
SELECT * FROM Products;
SELECT * FROM Orders;
SELECT * FROM Categories;*/
SELECT * FROM Suppliers;

Pentru a ignora doar o parte dintr-o afirmație, utilizați și / * * / comentariu.

Următorul exemplu utilizează un comentariu pentru a ignora o parte a unei linii:

Exemplu:
 
SELECT CustomerName, /*City,*/ Country FROM Customers;

Următorul exemplu utilizează un comentariu pentru a ignora o parte dintr-o afirmație:

Exemplu:
 
SELECT * FROM Customers WHERE (CustomerName LIKE 'L%'
OR CustomerName LIKE 'R%' /*OR CustomerName LIKE 'S%'
OR CustomerName LIKE 'T%'*/ OR CustomerName LIKE 'W%')
AND Country='USA'
ORDER BY CustomerName;

SQL CREATE DATABASE. Instrucțiunea SQL CREATE DATABASE. Sintaxă.

SQL CREATE DATABASE

Instrucțiunea SQL CREATE DATABASE

Instrucțiunea CREATE DATABASE este utilizată pentru a crea o nouă bază de date SQL.

Sintaxă
 
CREATE DATABASE databasename;
CREATE DATABASE Example

Următoarea instrucțiune SQL creează o bază de date numită "testDB":

Exemplu:
 
CREATE DATABASE testDB;

Sfat: Asigurați-vă că aveți privilegiul admin înainte de a crea orice bază de date. Odată creată o bază de date, o puteți verifica în lista bazelor de date cu următoarea comandă SQL: SHOW DATABASES;

SQL DROP DATABASE. Instrucțiunea SQL DROP DATABASE. Sintaxă. Exemplu DROP DATABASE.

SQL DROP DATABASE

Instrucțiunea SQL DROP DATABASE

Instrucțiunea DROP DATABASE este utilizată pentru a renunța la o bază de date SQL existentă.

Sintaxă
 
DROP DATABASE databasename;

Notă: Aveți grijă înainte de a renunța la o bază de date. Ștergerea unei baze de date va duce la pierderea informațiilor complete stocate în baza de date!

Exemplu DROP DATABASE

Următoarea instrucțiune SQL renunță la baza de date existentă "testDB":
 
DROP DATABASE testDB;

Sfat: Asigurați-vă că aveți privilegiul admin înainte de a renunța la orice bază de date. Odată ce o bază de date este abandonată, o puteți verifica în lista bazelor de date cu următoarea comandă SQL: SHOW DATABASES;

SQL Creare tabelă. ​​​​​​​Instrucțiunea SQL CREATE TABLE. Sintaxă. Parametrul datatype.

SQL Creare tabelă (SQL CREATE TABLE)

Instrucțiunea SQL CREATE TABLE

Instrucțiunea CREATE TABLE este utilizată pentru a crea o nouă tabelă într-o bază de date.

Sintaxă
 
CREATE TABLE table_name (
    column1 datatype,
    column2 datatype,
    column3 datatype,
   ....
);

Parametrii coloanelor specifică numele coloanelor tabelului.
Parametrul datatype specifică tipul de date pe care le poate deține coloana (de exemplu: varchar, integer, date, etc.).

SQL Creare tabelă. Creați o tabelă folosind o altă tabelă. Sintaxă.

Creați o tabelă folosind o altă tabelă

O copie a unui tabel existent poate fi, de asemenea, creată folosind CREATE TABLE.
Noul tabel primește aceleași definiții ale coloanei. Toate coloanele sau coloanele specifice pot fi selectate.
Dacă creați o nouă tabelă folosind o tabelă existentă, noua tabelă va fi completată cu valorile existente din tabelul vechi.

Sintaxă
 
CREATE TABLE new_table_name AS
    SELECT column1, column2,...
    FROM existing_table_name
    WHERE ....;

Următorul SQL creează un nou tabel numit "TestTables" (care este o copie a tabelului "Clienți" (Customers)):

Exemplu:
 
CREATE TABLE TestTable AS
SELECT customername, contactname
FROM customers;

SQL Creare tabelă. Exemplu SQL CREATE TABLE.

Exemplu SQL CREATE TABLE

Următorul exemplu creează un tabel numit „Persoane” (Persons) care conține cinci coloane: PersonID, LastName, FirstName, Address și City:

Exemplu:
 
CREATE TABLE Persons (
    PersonID int,
    LastName varchar(255),
    FirstName varchar(255),
    Address varchar(255),
    City varchar(255)
);

Coloana PersonID este de tip int și va deține un numar intreg (integer).

Coloanele LastName, FirstName, Address și City sunt de tip varchar și vor conține caractere (characters), iar lungimea maximă pentru aceste câmpuri este de 255 de caractere.

Tabelul gol „Persoane” (Persons) va arăta astfel:



Sfat: Tabelul gol „Persoane” (Persons) poate fi completat acum cu date cu instrucțiunea SQL INSERT INTO.

SQL DROP TABLE. Instrucțiunea SQL DROP TABLE. Exemplu DROP TABLE. Instrucțiunea TRUNCATE TABLE. Sintaxă.

SQL DROP TABLE

Instrucțiunea SQL DROP TABLE

Instrucțiunea DROP TABLE este utilizată pentru a renunța la un tabel existent într-o bază de date.

Sintaxă
 
DROP TABLE table_name;

Notă: Aveți grijă înainte de a arunca o masă. Ștergerea unui tabel va duce la pierderea informațiilor complete stocate în tabel!

Exemplu DROP TABLE

Următoarea instrucțiune SQL renunță la tabelul existent "Expeditori" (Shippers):
 
DROP TABLE Shippers;
SQL TRUNCATE TABLE

Instrucțiunea TRUNCATE TABLE este utilizată pentru a șterge datele dintr-un tabel, dar nu și tabelul în sine.

Sintaxă
 
TRUNCATE TABLE table_name;

SQL ALTER TABLE. Instrucțiunea SQL ALTER TABLE. ALTER TABLE - ADAUGĂ Coloană. Sintaxă.

SQL ALTER TABLE

Instrucțiunea SQL ALTER TABLE

Instrucțiunea ALTER TABLE este utilizată pentru a adăuga, șterge sau modifica coloane dintr-un tabel existent.
Instrucțiunea ALTER TABLE este de asemenea folosită pentru a adăuga și a scădea diverse constrângeri pe un tabel existent.

ALTER TABLE - ADAUGĂ Coloană (ADD Column)

Pentru a adăuga o coloană într-un tabel, utilizați următoarea sintaxă:
 
ALTER TABLE table_name
ADD column_name datatype;

Următorul SQL adaugă o coloană „Email” la tabelul „Clienți” (Customers):

Exemplu:
 
ALTER TABLE Customers
ADD Email varchar(255);

SQL ALTER TABLE. ALTER TABLE - DROP COLUMN. Sintaxă. SQL Server / MS Access. My SQL / Oracle (versiunea anterioară 10G). Oracle 10G și mai târziu.

ALTER TABLE - DROP COLUMN

Pentru a șterge o coloană dintr-un tabel, utilizați următoarea sintaxă (observați că unele sisteme de baze de date nu permit ștergerea unei coloane):
 
ALTER TABLE table_name
DROP COLUMN column_name;

Următorul SQL șterge coloana „Email” din tabelul „Clienți” (Customers):

Exemplu:
 
ALTER TABLE Customers
DROP COLUMN Email;
ALTER TABLE - ALTER/MODIFY COLUMN

Pentru a modifica tipul de date al unei coloane dintr-un tabel, utilizați următoarea sintaxă:

SQL Server / MS Access:
 
ALTER TABLE table_name
ALTER COLUMN column_name datatype;

My SQL / Oracle (versiunea anterioară 10G):
 
ALTER TABLE table_name
MODIFY COLUMN column_name datatype;

Oracle 10G și mai târziu:
 
ALTER TABLE table_name
MODIFY column_name datatype;

SQL ALTER TABLE. Exemplu SQL ALTER TABLE. Exemplu Modificați Data Type. Exemplu DROP COLUMN.

Exemplu SQL ALTER TABLE

Creați tabelul „Persoane”(Persons):
Acum vrem să adăugăm o coloană numită "DateOfBirth" în tabelul "Persoane"(Persons).
Folosim următoarea instrucțiune SQL:
 
ALTER TABLE Persons
ADD DateOfBirth date;

Observați că noua coloană, "DateOfBirth", este de tip date (data type) și va păstra o dată. Data type specifică ce tip de date poate conține coloana. 

Exemplu Modificați Data Type

Acum dorim să schimbăm tipul de date (Data Type) al coloanei numită „DateOfBirth” din tabelul „Persoane”(Persons).

Folosim următoarea instrucțiune SQL:
 
ALTER TABLE Persons
ALTER COLUMN DateOfBirth year;

Observați că coloana „DateOfBirth” are acum un tip year și va păstra year într-un format de două sau patru cifre.

Exemplu DROP COLUMN

În continuare, dorim să ștergem coloana numită „DateOfBirth” din tabelul „Persoane”(Persons).

Folosim următoarea instrucțiune SQL:
 
ALTER TABLE Persons
DROP COLUMN DateOfBirth;

Limitările SQL. SQL Creare constrângeri. Sintaxă.

Limitările SQL (SQL Constraints)

Restricțiile SQL sunt utilizate pentru a specifica regulile pentru datele dintr-un tabel.

SQL Creare constrângeri (SQL Create Constraints)

Constrângerile pot fi specificate atunci când tabela este creată cu instrucțiunea CREATE TABLE sau după crearea tabelului cu instrucțiunea ALTER TABLE.

Sintaxă
 
CREATE TABLE table_name (
    column1 datatype constraint,
    column2 datatype constraint,
    column3 datatype constraint,
    ....
);

Limitările SQL (SQL Constraints)

Restricțiile SQL sunt utilizate pentru a specifica regulile pentru datele dintr-un tabel.
Constrângerile sunt utilizate pentru a limita tipul de date care poate intra într-un tabel. Aceasta asigură precizia și fiabilitatea datelor din tabel. Dacă există o încălcare între constrângere și acțiunea de date, acțiunea este anulată.
Constrângerile pot fi la nivel de coloană sau de tabel. Restricțiile de nivel de coloană se aplică unei coloane și restricțiile de nivel de tabel se aplică întregii tabele.

Următoarele constrângeri sunt utilizate în mod obișnuit în SQL:
  • NOT NULL - Se asigură că o coloană nu poate avea o valoare NULL
  • UNIQUE - Se asigură că toate valorile dintr-o coloană sunt diferite
  • PRIMARY KEY - O combinație între NOT NULL ȘI UNIQUE. Identifică în mod unic fiecare rând dintr-un tabel
  • FOREIGN KEY - Identifică un rând / o înregistrare într-un alt tabel
  • CHECK - Se asigură că toate valorile dintr-o coloană îndeplinesc o condiție specifică
  • DEFAULT - Setează o valoare implicită pentru o coloană atunci când nu este specificată nicio valoare
  • INDEX - Folosit pentru a crea și recupera rapid datele din baza de date

SQL NOT NULL. SQL Constrângere NOT NULL. SQL NOT NULL în CREATE TABLE. SQL NOT NULL în ALTER TABLE.

SQL NOT NULL

SQL Constrângere NOT NULL (SQL NOT NULL Constraint)

În mod implicit, o coloană poate conține valori NULL.
Constrângerea NOT NULL impune o coloană pentru a NU (NOT) accepta valorile NULL.
Acest lucru impune un câmp care să conțină întotdeauna o valoare, ceea ce înseamnă că nu puteți introduce o înregistrare nouă sau să actualizați o înregistrare fără a adăuga o valoare la acest câmp.

SQL NOT NULL în CREATE TABLE

Următorul SQL asigură că coloanele „ID”, „LastName” și „FirstName” NU (NOT) vor accepta valori NULL atunci când se creează tabelul „Persoane” (Persons):

Exemplu:
 
CREATE TABLE Persons (
    ID int NOT NULL,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255) NOT NULL,
    Age int
);

SQL NOT NULL în ALTER TABLE

Pentru a crea o restricție NOT NULL pe coloana „Vârstă” (Age) când tabelul „Persoane” (Persons) este deja creat, utilizați următorul SQL:
 
ALTER TABLE Persons
MODIFY Age int NOT NULL;

SQL UNIQUE. SQL UNIQUE Constraint on ALTER TABLE. MySQL / SQL Server / Oracle / MS Access. MySQL / SQL Server / Oracle / MS Access. MySQL. SQL Server / Oracle / MS Access.

SQL UNIQUE Constraint on ALTER TABLE

Pentru a crea o restricție UNIQUE în coloana „ID” atunci când tabelul este deja creat, utilizați următorul SQL:

MySQL / SQL Server / Oracle / MS Access:
 
ALTER TABLE Persons
ADD UNIQUE (ID);

Pentru a denumi o constrângere UNIQUE și pentru a defini o restricție UNIQUE pe mai multe coloane, utilizați următoarea sintaxă SQL:

MySQL / SQL Server / Oracle / MS Access:
 
ALTER TABLE Persons
ADD CONSTRAINT UC_Person UNIQUE (ID,LastName);
DROP a UNIQUE Constraint

Pentru a elimina o restricție UNIQUE, utilizați următorul SQL:

MySQL:
 
ALTER TABLE Persons
DROP INDEX UC_Person;

SQL Server / Oracle / MS Access:
 
ALTER TABLE Persons
DROP CONSTRAINT UC_Person;

SQL UNIQUE. SQL Constrângere UNIQUE. SQL UNIQUE Constrângere în CREATE TABLE. SQL Server / Oracle / MS Access. MySQL. MySQL / SQL Server / Oracle / MS Access.

SQL Constrângere UNIQUE (SQL UNIQUE Constraint)

Constrângerea UNIQUE asigură că toate valorile dintr-o coloană sunt diferite.
Atât constrângerile UNIQUE, cât și cele PRIMARY KEY oferă o garanție de unicitate pentru o coloană sau un set de coloane.
O constrângere PRIMARY KEY  are automat o restricție UNIQUE.
Cu toate acestea, puteți avea multe constrângeri UNIQUE pe tabelă, dar o singură restricție PRIMARY KEY pe tabelă.

SQL UNIQUE Constrângere în CREATE TABLE

Următorul SQL creează o restricție UNIQUE în coloana „ID” atunci când este creată tabela „Persoane” (Persons):

SQL Server / Oracle / MS Access:
 
CREATE TABLE Persons (
    ID int NOT NULL UNIQUE,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Age int
);

MySQL:
 
CREATE TABLE Persons (
    ID int NOT NULL,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Age int,
    UNIQUE (ID)
);

Pentru a denumi o constrângere UNIQUE și pentru a defini o restricție UNIQUE pe mai multe coloane, utilizați următoarea sintaxă SQL:

MySQL / SQL Server / Oracle / MS Access:
 
CREATE TABLE Persons (
    ID int NOT NULL,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Age int,
    CONSTRAINT UC_Person UNIQUE (ID,LastName)
);

SQL CHEIE PRIMARA. SQL Limitare CHEIE PRIMARA. SQL CHEIE PRIMARA în CREATE TABLE. MySQL. SQL Server / Oracle / MS Access. MySQL / SQL Server / Oracle / MS Access.

SQL CHEIE PRIMARA (SQL PRIMARY KEY)

SQL Limitarea PRIMARY KEY (SQL PRIMARY KEY Constraint)

Limitarea PRIMARY KEY (PRIMARY KEY Constraint)
identifică în mod unic fiecare înregistrare dintr-un tabel.
Primary keys trebuie să conțină valori UNIQUE și nu pot conține valori NULL.
Un tabel poate avea doar O (ONE) cheie primară (primary key); iar în tabel, această cheie primară (primary key) poate consta din coloane simple sau multiple (câmpuri).

SQL CHEIE PRIMARA în CREATE TABLE

Următorul SQL creează o PRIMARY KEY în coloana „ID” când se creează tabelul „Persoane” (Persons):

MySQL:
 
CREATE TABLE Persons (
    ID int NOT NULL,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Age int,
    PRIMARY KEY (ID)
);

SQL Server / Oracle / MS Access:
 
CREATE TABLE Persons (
    ID int NOT NULL PRIMARY KEY,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Age int
);

Pentru a permite denumirea unei restricții PRIMARY KEY și pentru a defini o restricție PRIMARY KEY pe mai multe coloane, utilizați următoarea sintaxă SQL:

MySQL / SQL Server / Oracle / MS Access:
 
CREATE TABLE Persons (
    ID int NOT NULL,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Age int,
    CONSTRAINT PK_Person PRIMARY KEY (ID,LastName)
);

Notă: În exemplul de mai sus, există doar ONE PRIMARY KEY (PK_Person). Cu toate acestea, VALUE (valoarea) cheii primare (primary key) este alcătuită din TWO COLUMNS (ID + LastName).

SQL CHEIE PRIMARA. SQL CHEIE PRIMARA în ALTER TABLE. MySQL / SQL Server / Oracle / MS Access. Sintaxă SQL. Renunțare la o restricție CHEIE PRIMARA. MySQL. SQL Server / Oracle / MS Access.

SQL CHEIE PRIMARA în ALTER TABLE

Pentru a crea o restricție CHEIE PRIMARA în coloana „ID” atunci când tabelul este deja creat, utilizați următorul SQL:

MySQL / SQL Server / Oracle / MS Access:
 
ALTER TABLE Persons
ADD PRIMARY KEY (ID);

Pentru a permite denumirea unei restricții PRIMARY KEY și pentru a defini o restricție PRIMARY KEY pe mai multe coloane, utilizați următoarea sintaxă SQL:

MySQL / SQL Server / Oracle / MS Access:
 
ALTER TABLE Persons
ADD CONSTRAINT PK_Person PRIMARY KEY (ID,LastName);

Notă: Dacă utilizați instrucțiunea ALTER TABLE pentru a adăuga o cheie primară (primary key), coloana cheii primare (primary key) trebuie să fi fost deja declarată că nu conține valori NULL (când a fost creat tabelul pentru prima dată).

Renunțare la o restricție CHEIE PRIMARA (DROP a PRIMARY KEY Constraint)

Pentru a renunța la o restricție PRIMAR KEY, utilizați următorul SQL:

MySQL:
 
ALTER TABLE Persons
DROP PRIMARY KEY;

SQL Server / Oracle / MS Access:
 
ALTER TABLE Persons
DROP CONSTRAINT PK_Person;

Verificare SQL. SQL restricție VERIFICARE. Verificare SQL în CREATE TABLE. MySQL. SQL Server / Oracle / MS Access. Sintaxă SQL.

Verificare SQL (SQL CHECK)

SQL restricție VERIFICARE (SQL CHECK Constraint)

Restrângerea VERIFICARE (CHECK) este utilizată pentru a limita intervalul de valori care poate fi plasat într-o coloană.
Dacă definiți o restricție VERIFICARE (CHECK) pe o singură coloană, aceasta permite doar anumite valori pentru această coloană.
Dacă definiți o restricție VERIFICARE (CHECK) pe o tabelă, aceasta poate limita valorile din anumite coloane pe baza valorilor din alte coloane din rând.

SQL VERIFICARE în CREATE TABLE

Următorul SQL creează o restricție VERIFICARE (CHECK) în coloana „Vârstă” (Age) când se creează tabelul „Persoane” (Persons). Restrângerea VERIFICARE (CHECK) vă asigură că nu puteți avea nicio persoană sub 18 ani:

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

SQL Server / Oracle / MS Access:
 
CREATE TABLE Persons (
    ID int NOT NULL,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Age int CHECK (Age>=18)
);

Pentru a permite denumirea unei constrângeri CHECK și pentru a defini o restricție CHECK pe mai multe coloane, utilizați următoarea sintaxă SQL:

MySQL / SQL Server / Oracle / MS Access:
 
​​​​​​​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')
);

Verificare SQL. Verificare SQL în ALTER TABLE. MySQL / SQL Server / Oracle / MS Access. Sintaxă SQL. Eliminare constrângere VERIFICARE.

Verificare SQL în ALTER TABLE

Pentru a crea o restricție VERIFICARE (CHECK) în coloana „Vârstă” (Age) când tabelul este deja creat, utilizați următorul SQL:

MySQL / SQL Server / Oracle / MS Access:
 
ALTER TABLE Persons
ADD CHECK (Age>=18);

Pentru a permite denumirea unei constrângeri VERIFICARE (CHECK) și pentru a defini o restricție VERIFICARE (CHECK) pe mai multe coloane, utilizați următoarea sintaxă SQL:

MySQL / SQL Server / Oracle / MS Access:
 
ALTER TABLE Persons
ADD CONSTRAINT CHK_PersonAge CHECK (Age>=18 AND City='Sandnes');

Eliminare constrângere VERIFICARE (DROP a CHECK Constraint)

Pentru a elimina o constrângere VERIFICARE (CHECK), utilizați următorul SQL:

SQL Server / Oracle / MS Access:

 
ALTER TABLE Persons
DROP CONSTRAINT CHK_PersonAge;

MySQL:
 
ALTER TABLE Persons
DROP CHECK CHK_PersonAge;

SQL CREARE INDEX. Exemplu CREARE INDEX. Declarație DROP INDEX. Acces MS. MS Access. SQL Server. DB2/Oracle. MySQL.

Exemplu CREARE INDEX (CREATE INDEX)

Instrucțiunea SQL de mai jos creează un index numit "idx_lastname" în coloana "LastName" din tabelul "Persoane" (Persons):
 
CREATE INDEX idx_lastname
ON Persons (LastName);

Dacă doriți să creați un index pe o combinație de coloane, puteți lista numele coloanelor din paranteze, separate prin virgule:
 
CREATE INDEX idx_pname
ON Persons (LastName, FirstName);

Declarație DROP INDEX (DROP INDEX Statement)

Instrucțiunea DROP INDEX este utilizată pentru a șterge un index dintr-un tabel.

MS Access:
 
DROP INDEX index_name ON table_name;

SQL Server:
 
DROP INDEX table_name.index_name;

DB2/Oracle:
 
DROP INDEX index_name;

MySQL:
 
ALTER TABLE table_name
DROP INDEX index_name;

SQL CREARE INDEX. Instrucțiunea SQL CREATE INDEX. Sintaxă CREARE INDEX. Sintaxă SQL CREARE INDEX UNIC.

SQL CREARE INDEX (SQL CREATE INDEX)

Instrucțiunea SQL CREARE INDEX (SQL CREATE INDEX)

Instrucțiunea CREARE INDEX (CREATE INDEX) este utilizată pentru a crea indexuri în tabele.

Se folosesc indexuri pentru a prelua date din baza de date mai rapid decât in caz contrar. Utilizatorii nu pot vedea indexurile, ci sunt folosite doar pentru a accelera căutările / interogările (searches/queries).

Notă: Actualizarea unei tabele cu indexuri necesită mai mult timp decât actualizarea unui tabel fără indexuri (deoarece indexurile au nevoie și de o actualizare). Deci, creați doar indexuri pe coloane care vor fi căutate frecvent.

Sintaxă CREARE INDEX (CREATE INDEX)

Creează un index într-un tabel. Valorile duplicate sunt permise:
 
CREATE INDEX index_name
ON table_name (column1, column2, ...);

Sintaxă SQL CREARE INDEX UNIC (CREATE UNIQUE INDEX)

Creează un index unic pe un tabel. Valorile duplicate nu sunt permise:
 
CREATE UNIQUE INDEX index_name
ON table_name (column1, column2, ...);

Notă: Sintaxa pentru crearea indexurilor variază printre diferite baze de date. Prin urmare: verificați sintaxa pentru a crea indexuri în baza de date.

SQL INCREMENT AUTO. Sintaxa pentru SQL Server.

Sintaxa pentru SQL Server

Următoarea instrucțiune SQL definește coloana "Personid" pentru a fi un câmp cheie primară (primary key field) cu auto-increment in tabelul "Persoane" (Persons):
 
CREATE TABLE Persons (
    Personid int IDENTITY(1,1) PRIMARY KEY,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Age int
);

MS SQL Server folosește cuvântul cheie (primary key) IDENTITY pentru a efectua o funcție de auto-increment (auto-increment feature).

În exemplul de mai sus, valoarea de pornire pentru IDENTITY este 1 și va crește cu 1 pentru fiecare înregistrare nouă.

Sfat: Pentru a specifica că coloana „Personid” ar trebui să înceapă la valoarea 10 și să crească cu 5, schimbați-o în IDENTITY(10,5)

Pentru a insera o înregistrare nouă în tabelul „Persoane” (Persons), NU (NOT) va trebui să specificăm o valoare pentru coloana „Personid” (o valoare unică va fi adăugată automat):
 
​​​​​​​INSERT INTO Persons (FirstName,LastName)
VALUES ('Ion','Popecu');

Declarația SQL de mai sus ar insera o nouă înregistrare în tabelul „Persoane” (Persons). Coloanei „Personid” i se va atribui o valoare unică. Coloana „FirstName” ar fi setată la „Ion”, iar coloana „LastName” ar fi setată la „Popescu”.

SQL INCREMENT AUTO. Sintaxa pentru Access.

Sintaxa pentru Access

Următoarea instrucțiune SQL definește coloana "Personid" pentru a fi un câmp cheie primară cu auto-increment (auto-increment primary key field) în tabelul "Persoane" (Persons):
 
CREATE TABLE Persons (
    Personid AUTOINCREMENT PRIMARY KEY,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Age int
);

MS Access utilizează cuvântul cheie (keyword) AUTOINCREMENT pentru a efectua o funcție auto-increment (auto-increment feature).

În mod implicit, valoarea de pornire pentru AUTOINCREMENT este 1 și va crește cu 1 pentru fiecare înregistrare nouă.

Sfat: Pentru a specifica că coloana „Personid” ar trebui să înceapă la valoarea 10 și să crească cu 5, schimbați autoincrementul în AUTOINCREMENT(10,5).

Pentru a insera o înregistrare nouă în tabelul „Persoane” (Persons), NU (NOT) va trebui să specificăm o valoare pentru coloana „Personid” (o valoare unică va fi adăugată automat):
 
INSERT INTO Persons (FirstName,LastName)
VALUES ('Ion','Popescu');

Declarația SQL de mai sus ar insera o nouă înregistrare în tabelul „Persoane”(Persons). Coloanei „Personid” i se va atribui o valoare unică. Coloana „FirstName” ar fi setată la „Ion”, iar coloana „LastName” ar fi setată la „Popescu”.

SQL INCREMENT AUTO. SQL Câmpul INCREMENT AUTO . Sintaxa pentru MySQL.

SQL Câmpul INCREMENT AUTO

Câmpul INCREMENT AUTO

Auto-increment permite un număr unic de generat automat atunci când o nouă înregistrare este introdusă într-un tabel.
Adesea, acesta este câmpul cheie principal (primary key field) pe care am dori să fie creat automat de fiecare dată când se introduce o nouă înregistrare.

Sintaxa pentru MySQL

Următoarea instrucțiune SQL definește coloana "Personid" pentru a fi un câmp cheie primară (primary key field) cu auto-increment din tabelul "Persoane" (Persons):
 
CREATE TABLE Persons (
    Personid int NOT NULL AUTO_INCREMENT,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Age int,
    PRIMARY KEY (Personid)
);

MySQL folosește cuvântul cheie (keyword) AUTO_INCREMENT pentru a efectua o funcție auto-increment.
În mod implicit, valoarea de pornire pentru AUTO_INCREMENT este 1 și va crește cu 1 pentru fiecare înregistrare nouă.

Pentru a permite ca secvența AUTO_INCREMENT să înceapă cu o altă valoare, utilizați următoarea instrucțiune SQL:
 
ALTER TABLE Persons AUTO_INCREMENT=100;

Pentru a insera o înregistrare nouă în tabelul „Persoane” (Persons), NU (NOT) va trebui să specificăm o valoare pentru coloana „Personid” (o valoare unică va fi adăugată automat):
 
INSERT INTO Persons (FirstName,LastName)
VALUES ('Ion','Popescu');

Declarația SQL de mai sus ar insera o nouă înregistrare în tabelul „Persoane”(Persons). Coloanei „Personid” i se va atribui o valoare unică. Coloana „FirstName” ar fi setată la „Ion”, iar coloana „LastName” ar fi setată la „Popescu”.

SQL INCREMENT AUTO. Sintaxa pentru Oracle. Sintaxă CREATE SEQUENCE.

Sintaxa pentru Oracle

În Oracle codul este puțin mai complicat.

Va trebui să creați un câmp cu auto-increment (auto-increment field) cu obiectul secvenței (sequence object) (acest obiect generează o secvență numerică).

Utilizați următoarea sintaxă CREATE SEQUENCE:
 
CREATE SEQUENCE seq_person
MINVALUE 1
START WITH 1
INCREMENT BY 1
CACHE 10;

Codul de mai sus creează un obiect de secvență (sequence object) numit seq_person, care începe cu 1 și va crește cu 1. De asemenea, va stoca (cache) până la 10 valori pentru performanță. Opțiunea cache specifică câte valori de secvență (sequence values) vor fi stocate în memorie pentru acces mai rapid.

Pentru a introduce o nouă înregistrare în tabelul „Persoane” (Persons), va trebui să folosim funcția nextval (această funcție preia următoarea valoare din secvența seq_person):
 
​​​​​​​INSERT INTO Persons (Personid,FirstName,LastName)
VALUES (seq_person.nextval,'Ion','Popescu');

Declarația SQL de mai sus ar insera o nouă înregistrare în tabelul „Persoane” (Persons). Coloana „Personid” avea să i se atribuie următorul număr din secvența seq_person. Coloana „FirstName” ar fi setată la „Ion”, iar coloana „LastName” ar fi setată la „Popescu”.

Date SQL. SQL Lucrul cu datele. Datele SQL. SQL Date Data Types. MySQL. SQL Server.

SQL Lucrul cu datele

Datele SQL

Partea cea mai dificilă atunci când lucrați cu datele este să vă asigurați că formatul datei pe care încercați să îl inserați se potrivește cu formatul coloanei de date din baza de date.

Atâta timp cât datele dvs. conțin doar porțiunea de date (date portion), întrebările dvs. vor funcționa așa cum vă așteptați. Cu toate acestea, dacă este implicată o porție de timp (time portion), devine mai complicat.

SQL Date Data Types

MySQL vine cu următoarele tipuri de date (data types) pentru stocarea date/time în baza de date:
 
  • DATE - format YYYY-MM-DD
  • DATETIME - format: YYYY-MM-DD HH:MI:SS
  • TIMESTAMP - format: YYYY-MM-DD HH:MI:SS
  • YEAR - format YYYY or YY

SQL Server vine cu următoarele tipuri de date (data types) pentru stocarea date/time în baza de date:
 
  • DATE - format YYYY-MM-DD
  • DATETIME - format: YYYY-MM-DD HH:MI:SS
  • SMALLDATETIME - format: YYYY-MM-DD HH:MI:SS
  • TIMESTAMP - format: a unique number (un număr unic)

Notă: Tipurile de date (date types) sunt alese pentru o coloană atunci când creați un nou tabel în baza de date!

Date SQL. SQL Lucrul cu date. Declarația SELECT.

SQL Lucrul cu date

Puteți compara ușor două date dacă nu este implicată o componentă de timp!

Presupunem că avem următorul tabel „Comenzi” (Orders):



Acum dorim să selectăm înregistrările cu OrderDate "2008-11-11" din tabelul de mai sus.

Folosim următoarea declarație SELECT:
 
SELECT * FROM Orders WHERE OrderDate='2008-11-11'

Setul de rezultate va arăta astfel:



Acum, presupunem că tabelul „Comenzi” (Orders) arată așa (observați componenta de timp din coloana „OrderDate”):



Dacă folosim aceeași declarație SELECT ca mai sus:
 
SELECT * FROM Orders WHERE OrderDate='2008-11-11'

nu vom obține niciun rezultat! Acest lucru se datorează faptului că interogarea caută doar date fără o porție de timp (time portion).

Sfat: Pentru a vă menține întrebările simple și ușor de întreținut, nu permiteți componentele timpului în datele dvs.!

SQL MOD IMPLICIT. Eliminare constrângere DEFAULT. MySQL. SQL Server / Oracle / MS Access.

Eliminare constrângere DEFAULT (DROP a DEFAULT Constraint)

Pentru a elimina o constrângere DEFAULT, utilizați următorul SQL:

MySQL:
 
ALTER TABLE Persons
ALTER City DROP DEFAULT;

SQL Server / Oracle / MS Access:
 
ALTER TABLE Persons
ALTER COLUMN City DROP DEFAULT;
 

SQL MOD IMPLICIT. SQL Restrângerea DEFAULT. SQL DEFAULT în CREATE TABLE. SQL / SQL Server / Oracle / MS Access.

SQL MOD IMPLICIT (SQL DEFAULT)

SQL Restrângerea DEFAULT (SQL DEFAULT Constraint)

Restrângerea DEFAULT este utilizată pentru a furniza o valoare implicită pentru o coloană.
Valoarea implicită va fi adăugată la toate înregistrările noi, dacă nu este specificată nicio altă valoare.

SQL DEFAULT în CREATE TABLE

Următorul SQL stabilește o valoare DEFAULT pentru coloana „Oraș” (City) atunci când se creează tabelul „Persoane” (Persons):

SQL / SQL Server / Oracle / MS Access:
 
CREATE TABLE Persons (
    ID int NOT NULL,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Age int,
    City varchar(255) DEFAULT 'Sandnes'
);

Restrângerea DEFAULT poate fi de asemenea folosită pentru a insera valori system, utilizând funcții precum GETDATE():
CREATE TABLE Orders (
    ID int NOT NULL,
    OrderNumber int NOT NULL,
    OrderDate date DEFAULT GETDATE()
);

SQL MOD IMPLICIT. SQL DEFAULT în ALTER TABLE. MySQL. SQL Server. MS Access. Oracle.

SQL DEFAULT în ALTER TABLE

Pentru a crea o restricție DEFAULT pe coloana „Oraș” (City) atunci când tabelul este deja creat, utilizați următorul SQL:

MySQL:
 
ALTER TABLE Persons
ALTER City SET DEFAULT 'Sandnes';

SQL Server:
 
ALTER TABLE Persons
ADD CONSTRAINT df_City
DEFAULT 'Sandnes' FOR City;

MS Access:
 
ALTER TABLE Persons
ALTER COLUMN City SET DEFAULT 'Sandnes';

Oracle:
 
ALTER TABLE Persons
MODIFY City DEFAULT 'Sandnes';
 

Vizualizări SQL. SQL Actualizarea unei vizualizări. Comanda CREATE SAU REPLACE VIEW. Sintaxă SQL CREATE SAU REPLACE VIEW. SQL Eliminarea unei vizualizări. Sintaxă SQL DROP VIEW.

SQL Actualizarea unei vizualizări (SQL Updating a View)

O vizualizare (view) poate fi actualizată cu comanda CREATE SAU REPLACE VIEW.

Sintaxă SQL CREATE SAU REPLACE VIEW
 
CREATE OR REPLACE VIEW view_name AS
SELECT column1, column2, ...
FROM table_name
WHERE condition;

Următorul SQL adaugă coloana Oraș (City) la vizualizarea (view) Clienții din Brazilia” (Brazilia Customers):

Exemplu:

 
CREATE OR REPLACE VIEW [Brazilia Customers] AS
SELECT CustomerName, ContactName, City
FROM Customers
WHERE Country = "Brazilia";

SQL Eliminarea unei vizualizări (SQL Dropping a View)

O vizualizare (view) este ștersă cu comanda DROP VIEW.

Sintaxă SQL DROP VIEW
 
DROP VIEW view_name;

Următorul SQL renunță la vizualizarea (view) „Clienții din Brazilia” (Brazilia Customers):

Exemplu:
 
DROP VIEW [Brazilia Customers];

Vizualizări SQL. Instrucțiunea SQL CREATE VIEW. Funcțiile SQL, WHERE. Instrucțiuni JOIN.

Vizualizări SQL (SQL Views)

Instrucțiunea SQL CREATE VIEW


În SQL, o vizualizare (view) este un tabel virtual bazat pe setul de rezultate al unei instrucțiuni SQL.
O vizualizare (view) conține rânduri și coloane, la fel ca un tabel real. Câmpurile dintr-o vizualizare (view) sunt câmpuri dintr-una sau mai multe tabele reale din baza de date.

Puteți adăuga funcții SQL, WHERE și instrucțiuni JOIN într-o vizualizare (view) și prezentați datele ca și cum datele proveneau dintr-un singur tabel.
 
Sintaxă CREATE VIEW
CREATE VIEW view_name AS
SELECT column1, column2, ...
FROM table_name
WHERE condition;

Notă: O vizualizare (view) afișează întotdeauna date actualizate! Motorul bazei de date recreează datele, folosind instrucțiunea SQL a vizualizării (view), de fiecare dată când un utilizator solicită o vizualizare (view).

Vizualizări SQL. Exemple SQL CREATE VIEW.

Exemple SQL CREATE VIEW

Următorul SQL creează o vizualizare (view) care arată toți clienții (customers) din Brazilia:

Exemplu:
 
CREATE VIEW [Brazilia Customers] AS
SELECT CustomerName, ContactName
FROM Customers
WHERE Country = "Brazilia";

Putem consulta întrebarea de mai sus după cum urmează:

Exemplu:
 
SELECT * FROM [Brazilia Customers];

Următorul SQL creează o vizualizare (view) care selectează fiecare produs din tabelul „Produse” (Products) cu un preț mai mare decât prețul mediu:

Exemplu:
 
CREATE VIEW [Products Above Average Price] AS
SELECT ProductName, Price
FROM Products
WHERE Price > (SELECT AVG(Price) FROM Products);

Putem consulta întrebarea de mai sus după cum urmează:

Exemplu:
 
SELECT * FROM [Products Above Average Price];

Injecția SQL. Injecția SQL pe baza 1 = 1 este întotdeauna adevărată.

Injecția SQL pe baza 1 = 1 este întotdeauna adevărată

Privește din nou exemplul de mai sus. Scopul inițial al codului a fost crearea unei instrucțiuni SQL pentru a selecta un utilizator, cu un id de utilizator (user id) dat.

Dacă nu există nimic care să împiedice un utilizator să introducă o intrare „greșită” (wrong), utilizatorul poate introduce unele intrări „inteligente” (smart) ca aceasta:

UserId: 105 SAU 1 = 1

Apoi, instrucțiunea SQL va arăta astfel:
 
SELECT * FROM Users WHERE UserId = 105 OR 1=1;

SQL-ul de mai sus este valid și va întoarce TOATE (ALL) rândurile din tabelul „Utilizatori” (Users), deoarece OR 1 = 1 este întotdeauna TRUE.

Exemplul de mai sus pare periculos? Ce se întâmplă dacă tabelul „Utilizatori” (Users) conține nume și parole?

Instrucțiunea SQL de mai sus este la fel ca aceasta:
 
SELECT UserId, Name, Password FROM Users WHERE UserId = 105 or 1=1;

Un hacker ar putea avea acces la toate numele de utilizator și parolele (user names și passwords) dintr-o bază de date, introducând pur și simplu 105 OR 1 = 1 în câmpul de introducere.

Injecția SQL. Exemple. Interogări parametrizate. SELECTAȚI DECLARAȚIA ÎN ASP.NET. INSERAȚI ÎN DECLARAȚIE ÎN ASP.NET. INSERAȚI ÎN DECLARAȚIE ÎN PHP.

Exemple:

Următoarele exemple arată cum să construiți interogări parametrizate în unele limbaje web comune.

SELECTAȚI DECLARAȚIA ÎN ASP.NET:
 
txtUserId = getRequestString("UserId");
sql = "SELECT * FROM Customers WHERE CustomerId = @0";
command = new SqlCommand(sql);
command.Parameters.AddWithValue("@0",txtUserID);
command.ExecuteReader();

INSERAȚI ÎN DECLARAȚIE ÎN ASP.NET:
 
txtNam = getRequestString("CustomerName");
txtAdd = getRequestString("Address");
txtCit = getRequestString("City");
txtSQL = "INSERT INTO Customers (CustomerName,Address,City) Values(@0,@1,@2)";
command = new SqlCommand(txtSQL);
command.Parameters.AddWithValue("@0",txtNam);
command.Parameters.AddWithValue("@1",txtAdd);
command.Parameters.AddWithValue("@2",txtCit);
command.ExecuteNonQuery();

INSERAȚI ÎN DECLARAȚIE ÎN PHP:
 
$stmt = $dbh->prepare("INSERT INTO Customers (CustomerName,Address,City)
VALUES (:nam, :add, :cit)");
$stmt->bindParam(':nam', $txtNam);
$stmt->bindParam(':add', $txtAdd);
$stmt->bindParam(':cit', $txtCit);
$stmt->execute();

Injecția SQL. SQL în paginile web. Instrucțiunea SELECT.

Injecția SQL (SQL Injection)

Injecția SQL (SQL Injection) este o tehnică de injecție de cod (code injection) care ar putea distruge baza de date.
Injecția SQL (SQL Injection) este una dintre cele mai frecvente tehnici de hacking web.
Injecția SQL (SQL Injection) este plasarea codului rău intenționat în declarațiile SQL, prin introducerea paginii web.

SQL în paginile web

Injecția SQL (SQL Injection) are loc de obicei atunci când ceri utilizatorului o introducere, cum ar fi numele său de utilizator/userid (username/userid), iar în loc de nume/id (name/id), utilizatorul vă oferă o declarație SQL pe care o veți rula în mod neștiut pe baza de date.
Uitați-vă la următorul exemplu care creează o instrucțiune SELECT adăugând o variabilă (txtUserId) la un șir selectat. Variabila este preluată din intrarea utilizatorului (getRequestString):

Exemplu:
 
txtUserId = getRequestString("UserId");
txtSQL = "SELECT * FROM Users WHERE UserId = " + txtUserId;

Restul acestui capitol descrie pericolele potențiale ale utilizării intrării utilizatorului în declarațiile SQL.

Injecția SQL. Injecția SQL Bazată pe "" = "" este întotdeauna adevărată.

Injecția SQL Bazată pe "" = "" este întotdeauna adevărată

Iată un exemplu de autentificare a utilizatorului pe un site web:

Nume utilizator: John Doe

Parola: myPass

Exemplu:
 
uName = getRequestString("username");
uPass = getRequestString("userpassword");

sql = 'SELECT * FROM Users WHERE Name ="' + uName + '" AND Pass ="' + uPass + '"'

Rezultat:
 
SELECT * FROM Users WHERE Name ="John Doe" AND Pass ="myPass"

Un hacker ar putea avea acces la numele de utilizator și parolele (user names și passwords) dintr-o bază de date, introducând pur și simplu "OR" "=" în caseta de text a numelui de utilizator sau a parolei (user name sau password):

Nume utilizator: "sau" "="

Parola: "sau" "="

Codul de la server va crea o declarație SQL validă astfel:

Rezultat:
 
SELECT * FROM Users WHERE Name ="" or ""="" AND Pass ="" or ""=""

SQL de mai sus este valid și va returna toate rândurile din tabelul „Utilizatori” (Users), deoarece OR „„ = „„ este întotdeauna TRUE.

Injecția SQL. Injecție SQL bazată pe declarații SQL Batched.

Injecție SQL bazată pe declarații SQL Batched (SQL Injection Based on Batched SQL Statements)

Majoritatea bazelor de date acceptă declarația SQL batched.

Un batch (lot) de instrucțiuni SQL este un grup de două sau mai multe instrucțiuni SQL, separate prin punct și virgulă.

Instrucțiunea SQL de mai jos va returna toate rândurile din tabelul „Utilizatori” (Users), apoi va șterge tabelul „Furnizori” (Suppliers).

Exemplu:
 
SELECT * FROM Users; DROP TABLE Suppliers

Priviți următorul exemplu:

Exemplu:
 
txtUserId = getRequestString("UserId");
txtSQL = "SELECT * FROM Users WHERE UserId = " + txtUserId;

Și următoarea intrare:

User id: 105; DROP TABLE Suppliers

Instrucțiunea SQL validă ar arăta astfel:

Rezultat:
 
SELECT * FROM Users WHERE UserId = 105; DROP TABLE Suppliers;

Injecția SQL. Utilizați parametrii SQL pentru protecție. Parametrii SQL. Exemplu Razor ASP.NET. Marker@.

Utilizați parametrii SQL pentru protecție

Pentru a proteja un site web de injecția SQL, puteți utiliza parametrii SQL.

Parametrii SQL sunt valori care sunt adăugate la o interogare SQL la momentul executării, într-o manieră controlată.

Exemplu Razor ASP.NET
 
txtUserId = getRequestString("UserId");
txtSQL = "SELECT * FROM Users WHERE UserId = @0";
db.Execute(txtSQL,txtUserId);

Rețineți că parametrii sunt reprezentați în instrucțiunea SQL de către un marker@.

Motorul SQL verifică fiecare parametru pentru a se asigura că este corect pentru coloana sa și sunt tratate literal, și nu ca parte a SQL-ului care trebuie executat.

Alt exemplu:
 
txtNam = getRequestString("CustomerName");
txtAdd = getRequestString("Address");
txtCit = getRequestString("City");
txtSQL = "INSERT INTO Customers (CustomerName,Address,City) Values(@0,@1,@2)";
db.Execute(txtSQL,txtNam,txtAdd,txtCit);

SQL Găzduire. Internet Service Provider. SQL găzduire bază de date: MS SQL Server, Oracle, MySQL și MS Access. MS SQL Server. Oracle. MySQL. Access.

SQL Găzduire (SQL Hosting)

Dacă doriți ca site-ul dvs. web să poată stoca și prelua date dintr-o bază de date, serverul dvs. web ar trebui să aibă acces la o bază de date (database-system) care utilizează limbajul SQL.

Dacă serverul dvs. web este găzduit (hosted) de un furnizor de servicii Internet (Internet Service Provider) (ISP), va trebui să căutați planuri de găzduire SQL (SQL hosting).

Cele mai frecvente baze de date de găzduire SQL (SQL hosting databases) sunt MS SQL Server, Oracle, MySQL și MS Access.

MS SQL Server

Microsoft SQL Server este un software popular de bază de date pentru site-uri web bazate pe baze de date (database-driven) cu trafic ridicat.

SQL Server este un sistem de baze de date SQL (SQL database system) foarte puternic, robust și complet prezentat.

Oracle

Oracle este, de asemenea, un software popular de baze de date pentru site-uri web bazate pe baze de date cu trafic ridicat.

Oracle este un sistem de baze de date SQL foarte puternic, robust și complet prezentat.

MySQL

MySQL este, de asemenea, un software popular de baze de date pentru site-uri web.

MySQL este un sistem de baze de date SQL foarte puternic, robust și complet caracterizat.

MySQL este o alternativă ieftină la soluțiile scumpe Microsoft și Oracle.

Access

Când un site web necesită doar o bază de date simplă, Microsoft Access poate fi o soluție.

Access-ul nu este potrivit pentru traficul foarte ridicat și nu este la fel de puternic ca MySQL, SQL Server sau Oracle.

Operatorul SQL BETWEEN. Exemplu Date BETWEEN.

Exemplu Date BETWEEN

Următoarea instrucțiune SQL selectează toate comenzile cu o OrderDate BETWEEN '01-July-1996' și '31-July-1996':

Exemplu:

 
SELECT * FROM Orders
WHERE OrderDate BETWEEN #01/07/1996# AND #31/07/1996#;

SAU:

Exemplu:

 
SELECT * FROM Orders
WHERE OrderDate BETWEEN '1996-07-01' AND '1996-07-31';

Operatorul SQL BETWEEN. Sintaxa BETWEEN. Exemplu BETWEEN.

Operatorul SQL BETWEEN

Operatorul BETWEEN selectează valorile dintr-un interval dat. Valorile pot fi numere, text sau date (numbers, text sau dates).
Operatorul BETWEEN este inclus: valorile de început (begin) și de sfârșit (end) sunt incluse.

Sintaxa BETWEEN
 
SELECT column_name(s)
FROM table_name
WHERE column_name BETWEEN value1 AND value2;

Exemplu BETWEEN

Următoarea instrucțiune SQL selectează toate produsele cu un preț BETWEEN 10 și 20:

Exemplu:
 
SELECT * FROM Products
WHERE Price BETWEEN 10 AND 20;

Operatorul SQL BETWEEN. Exemplu Valori Text BETWEEN. Exemplu Valori Text NOT BETWEEN.

Exemplu Valori Text BETWEEN

Următoarea instrucțiune SQL selectează toate produsele cu un ProductName BETWEEN Carnarvon Tigers și Mozzarella di Giovanni:

Exemplu:
 
SELECT * FROM Products
WHERE ProductName BETWEEN 'Carnarvon Tigers' AND 'Mozzarella di Giovanni'
ORDER BY ProductName;

Următoarea instrucțiune SQL selectează toate produsele cu un ProductName BETWEEN Carnarvon Tigers și Chef Anton's Cajun Seasoning:

Exemplu:
 
SELECT * FROM Products
WHERE ProductName BETWEEN "Carnarvon Tigers" AND "Chef Anton's Cajun Seasoning"
ORDER BY ProductName;

Exemplu Valori Text NOT BETWEEN

Următoarea instrucțiune SQL selectează toate produsele cu un ProductName NOT BETWEEN Carnarvon Tigers și Mozzarella di Giovanni:

Exemplu:
 
SELECT * FROM Products
WHERE ProductName NOT BETWEEN 'Carnarvon Tigers' AND 'Mozzarella di Giovanni'
ORDER BY ProductName;

Operatorul SQL BETWEEN. Exemplu NOT BETWEEN. Exemplu BETWEEN cu IN.

Exemplu NOT BETWEEN

Pentru a afișa produsele în afara intervalului din exemplul precedent, utilizați NOT BETWEEN:

Exemplu:
 
SELECT * FROM Products
WHERE Price NOT BETWEEN 10 AND 20;

Exemplu BETWEEN cu IN 

Următoarea instrucțiune SQL selectează toate produsele cu un preț BETWEEN 10 și 20. În plus; (addition;) nu afișați produse cu o CategoryID de 1,2 sau 3:

Exemplu:
 
SELECT * FROM Products
WHERE Price BETWEEN 10 AND 20
AND NOT CategoryID IN (1,2,3);

SQL HAVING. Mai multe exemple SQL HAVING.

Mai multe exemple SQL HAVING

Următoarea instrucțiune SQL listează angajații care au înregistrat mai mult de 10 comenzi (orders):

Exemplu:
 
SELECT Employees.LastName, COUNT(Orders.OrderID) AS NumberOfOrders
FROM (Orders
INNER JOIN Employees ON Orders.EmployeeID = Employees.EmployeeID)
GROUP BY LastName
HAVING COUNT(Orders.OrderID) > 10;

Următoarea declarație SQL listează dacă angajații „Popescu” sau „Ionescu” au înregistrat mai mult de 25 de comenzi (orders):

Exemplu:
 
SELECT Employees.LastName, COUNT(Orders.OrderID) AS NumberOfOrders
FROM Orders
INNER JOIN Employees ON Orders.EmployeeID = Employees.EmployeeID
WHERE LastName = 'Popescu' OR LastName = 'Ionescu'
GROUP BY LastName
HAVING COUNT(Orders.OrderID) > 25;

SQL HAVING. Exemple SQL HAVING.

Exemple SQL HAVING

Următoarea instrucțiune SQL listează numărul de clienți (customers) din fiecare țară. Includeți numai țările cu mai mult de 5 clienți (customers):

Exemplu:
 
SELECT COUNT(CustomerID), Country
FROM Customers
GROUP BY Country
HAVING COUNT(CustomerID) > 5;

Următoarea instrucțiune SQL listează numărul de clienți (customers) din fiecare țară, sortat de la mare la cel mai mic (include numai țările cu mai mult de 5 clienți (customers)):

Exemplu:
 
SELECT COUNT(CustomerID), Country
FROM Customers
GROUP BY Country
HAVING COUNT(CustomerID) > 5
ORDER BY COUNT(CustomerID) DESC;

SQL Bază de date BACKUP. SQL Bază de date BACKUP pentru SQL Server. Instrucțiunea SQL Bază de date BACKUP. Instrucțiunea SQL Bază de date BACKUP CU DIFERENȚE.

SQL Bază de date BACKUP (SQL BACKUP DATABASE)

SQL Bază de date BACKUP (SQL BACKUP DATABASE) pentru SQL Server

Instrucțiunea SQL Bază de date BACKUP (SQL BACKUP DATABASE)

Instrucțiunea Bază de date BACKUP (BACKUP DATABASE) este utilizată în SQL Server pentru a crea o copie de rezervă completă a unei baze de date SQL existentă.

Sintaxă
 
BACKUP DATABASE databasename
TO DISK = 'filepath';

Instrucțiunea SQL Bază de date BACKUP CU DIFERENȚE

O copie de rezervă diferențială (differential back up) face doar backup pentru părțile bazei de date care s-au modificat de la ultima copie de rezervă completă a bazei de date (full database backup).

Sintaxă
 
BACKUP DATABASE databasename
TO DISK = 'filepath'
WITH DIFFERENTIAL;

SQL Bază de date BACKUP. Exemplu Bază de date BACKUP. Exemplu BACKUP CU DIFERENȚE.

Exemplu Bază de date BACKUP (BACKUP DATABASE)

Următoarea instrucțiune SQL creează o copie de rezervă completă (full back up) a bazei de date existente "testDB" pe discul D:

Exemplu:
 
BACKUP DATABASE testDB
TO DISK = 'D:\backups\testDB.bak';

Sfat: Faceți întotdeauna o copie de siguranță (back up) a bazei de date pe o unitate diferită de baza de date reală. Apoi, dacă primiți un crash pe disc, nu veți pierde fișierul dvs. de rezervă împreună cu baza de date.

Exemplu BACKUP CU DIFERENȚE (BACKUP WITH DIFFERENTIAL)

Următoarea instrucțiune SQL creează o copie de rezervă diferențială (back up cu diferențe) a bazei de date "testDB":

Exemplu:
 
BACKUP DATABASE testDB
TO DISK = 'D:\backups\testDB.bak'
WITH DIFFERENTIAL;

Sfat: O copie de rezervă diferențiată (back up cu diferențe) reduce timpul de rezervă (deoarece doar modificările sunt salvate).

SQL CHEIE STRĂINĂ. SQL Constrângere CHEIE STRĂINĂ.

SQL CHEIE STRĂINĂ (SQL FOREIGN KEY)

SQL Constrângere CHEIE STRĂINĂ (SQL FOREIGN KEY Constraint)

O CHEIE STRĂINĂ (FOREIGN KEY) este o cheie folosită pentru a lega două tabele între ele.
O CHEIE STRĂINĂ (FOREIGN KEY) este un câmp (sau o colecție de câmpuri) dintr-un tabel care se referă la CHEIE STRĂINĂ (FOREIGN KEY) dintr-un alt tabel.

Tabelul care conține cheia străină (foreign key) se numește tabel copil (child table), iar tabelul care conține cheia candidat (candidate key) este denumit referință sau tabel părinte (parent table).

Creați două tabele:

Tabelul „Persoane” (Persons).
Tabelul „Comenzi” (Orders).

Observați că coloana „PersonID” din tabelul „Comenzi” (Orders) indică coloana „PersonID” din tabelul „Persoane” (Persons).

Coloana „PersonID” din tabelul „Persoane” (Persons) este PRIMARY KEY din tabelul „Persoane” (Persons).
Coloana „PersonID” din tabelul „Comenzi” (Orders) este o FOREIGN KEY din tabelul „Comenzi” (Orders).

Limitarea CHEIE STRĂINĂ (FOREIGN KEY) este utilizată pentru a preveni acțiunile care ar distruge legăturile dintre tabele.

Restrângerea CHEIE STRĂINĂ (FOREIGN KEY) împiedică, de asemenea, introducerea datelor nevalide în coloana de cheie străină (foreign key), deoarece aceasta trebuie să fie una dintre valori.

SQL CHEIE STRĂINĂ. SQL CHEIE STRĂINĂ în ALTER TABLE. MySQL / SQL Server / Oracle / MS Access. Sintaxă SQL. Eliminare restricție CHEIE STRĂINĂ. MySQL. SQL Server / Oracle / MS Access.

SQL CHEIE STRĂINĂ (FOREIGN KEY) în ALTER TABLE

Pentru a crea o restricție CHEIE STRĂINĂ (FOREIGN KEY) în coloana „PersonID” atunci când tabelul „Comenzi” (Orders) este deja creat, utilizați următorul SQL:

MySQL / SQL Server / Oracle / MS Access:
 
ALTER TABLE Orders
ADD FOREIGN KEY (PersonID) REFERENCES Persons(PersonID);

Pentru a permite denumirea unei constrângeri CHEIE STRĂINĂ (FOREIGN KEY) și pentru a defini o restricție CHEIE STRĂINĂ (FOREIGN KEY) pe mai multe coloane, utilizați următoarea sintaxă SQL:

MySQL / SQL Server / Oracle / MS Access:
 
ALTER TABLE Orders
ADD CONSTRAINT FK_PersonOrder
FOREIGN KEY (PersonID) REFERENCES Persons(PersonID);

Eliminare restricție CHEIE STRĂINĂ (DROP a FOREIGN KEY Constraint)

Pentru a elimina o restricție CHEIE STRĂINĂ (FOREIGN KEY), utilizați următorul SQL:

MySQL:
 
ALTER TABLE Orders
DROP FOREIGN KEY FK_PersonOrder;

SQL Server / Oracle / MS Access:
 
ALTER TABLE Orders
DROP CONSTRAINT FK_PersonOrder;

SQL CHEIE STRĂINĂ . SQL CHEIE STRĂINĂ  în CREATE TABLE. MySQL. SQL Server / Oracle / MS Access. Sintaxă SQL.

SQL CHEIE STRĂINĂ (FOREIGN KEY) în CREATE TABLE

Următorul SQL creează o CHEIE STRĂINĂ (FOREIGN KEY) în coloana „PersonID” atunci când se creează tabelul „Comenzi” (Orders):

MySQL:
 
CREATE TABLE Orders (
    OrderID int NOT NULL,
    OrderNumber int NOT NULL,
    PersonID int,
    PRIMARY KEY (OrderID),
    FOREIGN KEY (PersonID) REFERENCES Persons(PersonID)
);

SQL Server / Oracle / MS Access:
 
CREATE TABLE Orders (
    OrderID int NOT NULL PRIMARY KEY,
    OrderNumber int NOT NULL,
    PersonID int FOREIGN KEY REFERENCES Persons(PersonID)
);

Pentru a permite denumirea unei restricții CHEIE STRĂINĂ (FOREIGN KE)Y și pentru a defini o restricție CHEIE STRĂINĂ (FOREIGN KEY) pe mai multe coloane, utilizați următoarea sintaxă SQL:

MySQL / SQL Server / Oracle / MS Access:
 
CREATE TABLE Orders (
    OrderID int NOT NULL,
    OrderNumber int NOT NULL,
    PersonID int,
    PRIMARY KEY (OrderID),
    CONSTRAINT FK_PersonOrder FOREIGN KEY (PersonID)
    REFERENCES Persons(PersonID)
);