Home » Articole » Articole » Afaceri » Știința datelor (Data Science) » Limbajul de manipulare a datelor SQL (DML)

Limbajul de manipulare a datelor SQL (DML)

Limbajul de manipulare a datelor SQL (data manipulation language, DML) este utilizat pentru interogarea și modificarea datelor din baza de date. Vom descrie modul de utilizare a instrucțiunilor de comandă SQL DML SELECT, INSERT, UPDATE și DELETE, definite mai jos.

  • SELECT – pentru interogarea datelor din baza de date
  • INSERT – pentru a insera date într-un tabel
  • UPDATE – pentru actualizarea datelor dintr-un tabel
  • DELETE – pentru a șterge datele dintr-un tabel

În instrucțiunea SQL DML:

  • Fiecare clauză dintr-o declarație ar trebui să înceapă pe o nouă linie.
  • Începutul fiecărei clauze trebuie să se alinieze cu începutul celorlalte clauze.
  • Dacă o clauză are mai multe părți, acestea ar trebui să apară pe linii separate și să fie indentate la începutul clauzei pentru a arăta relația.
  • Literele majuscule sunt folosite pentru a reprezenta cuvintele rezervate.
  • Minusculele sunt folosite pentru a reprezenta cuvintele definite de utilizator.

Instrucțiunea SELECT

Instrucțiunea sau comanda SELECT permite utilizatorului să extragă date din tabele, pe baza unor criterii specifice. Acesta este procesat conform următoarei secvențe:

SELECT DISTINCT element(e)
FROM tabel(e)
WHERE determină câmp(urile) GROUP BY
ORDER BY câmpuri

Putem utiliza declarația SELECT pentru a genera o listă de telefon a angajaților din tabelul Angajați, după cum urmează:

SELECT FirstName, LastName, Phone
FROM Employees
ORDER BY LastName

 

Această acțiune va afișa numele, prenumele și numărul de telefon ale angajaților din tabelul Angajați, afișat în Tabelul 16.1.

FirstName LastName Phone
Hagans Jim 604-232-3232
Wong Bruce 604-244-2322

Tabelul 16.1. Tabelul angajaților.

În acest exemplu următor, vom folosi un tabel al editorilor (Tabelul 16.2). (Veți observa că țara Canada este scris greșit în câmpul Publisher Country pentru Example Publishing și ABC Publishing. Pentru a corecta scrierea greșită, utilizați instrucțiunea UPDATE pentru a standardiza câmpul țării în Canada – consultați declarația UPDATE mai târziu în acest articol.)

Publisher Name Publisher City Publisher Province Publisher Country
Acme Publishing Vancouver BC Canada
Example Publishing Edmonton AB Cnada
ABC Publishing Toronto ON Canda

Tabelul 16.2. Tabelul editorilor.

Dacă adăugați numele și orașul editorului, veți utiliza declarația SELECT urmată de numele câmpurilor separate printr-o virgulă:

SELECT PubName, city
FROM Publishers

 

Această acțiune va afișa numele și orașul editorului din tabelul Publishers.

Dacă doriți doar numele editorului sub orașul cu nume afișat, veți utiliza declarația SELECT, fără virgulă, care să separe pub_name și city:

SELECT PubName city
FROM Publishers

 

Efectuarea acestei acțiuni va afișa doar pub_name din tabelul Publishers cu un titlu „city”. Dacă nu includeți virgula, SQL Server presupune că doriți un nou nume de coloană pentru pub_name.

Instrucțiune SELECT cu criterii WHERE

Uneori s-ar putea să doriți să vă concentrați asupra unei porțiuni din tabelul Publishers, cum ar fi doar editorii care se află în Vancouver. În această situație, ați folosi instrucțiunea SELECT cu criteriul WHERE, adică WHERE city = ‘Vancouver’.

Aceste prime două exemple ilustrează modul de a limita selecția înregistrării cu criteriul WHERE folosind BETWEEN. Fiecare dintre aceste exemple oferă aceleași rezultate pentru articolele din magazin cu între 20 și 50 de articole în stoc.

Exemplul #1 utilizează cantitatea, qty BETWEEN 20 and 50.

SELECT StorID, qty, TitleID
FROM Sales
WHERE qty BETWEEN 20 and 50 (includes the 20 and 50)

 

Exemplul #2, pe de altă parte, folosește qty >=20 and qty <=50.

SELECT StorID, qty, TitleID
FROM Sales
WHERE qty >= 20 and qty <= 50

 

Exemplul #3 ilustrează modul de a limita selecția înregistrării cu criteriul WHERE folosind NOT BETWEEN.

SELECT StorID, qty, TitleID
FROM Sales
WHERE qty NOT BETWEEN 20 and 50

 

Următoarele două exemple arată două moduri diferite de a limita selecția înregistrării cu criteriul WHERE folosind IN, fiecare obținând aceleași rezultate.

Exemplul #4 arată cum să selectați înregistrările folosind province= ca parte a instrucțiunii WHERE.

SELECT *
FROM Publishers
WHERE province = ‘BC’ OR province = ‘AB’ OR province = ‘ON’

 

Exemplul #5 selectează înregistrări folosind province IN ca parte a instrucțiunii WHERE.

SELECT *
FROM Publishers
WHERE province IN (‘BC’, ‘AB’, ‘ON’)

 

Ultimele două exemple ilustrează modul în care NULL și NOT NULL pot fi utilizate pentru selectarea înregistrărilor. Pentru aceste exemple, se va utiliza tabelul Books (neafișat) care conține câmpuri numite Title, Quantity, și Price (prețul cărții). Fiecare editor are un tabel Books care listează toate cărțile sale.

Exemplul #6 folosește NULL.

SELECT price, title
FROM Books
WHERE price IS NULL

 

Exemplul #7 folosește NOT NULL.

SELECT price, title
FROM Books
WHERE price IS NOT NULL

 

Folosind metacaractere (wildcard) în clauza LIKE

Cuvântul cheie LIKE selectează rânduri care conțin câmpuri care se potrivesc cu porțiuni specificate de șiruri de caractere. LIKE este utilizat cu date char, varchar, text, datetime și smalldatetime. Un wildcard permite utilizatorului să potrivească câmpurile care conțin anumite litere. De exemplu, province = ‘N%’ ar da toate provinciilor care încep cu litera „N”. Tabelul 16.3 prezintă patru moduri de a specifica metacaractere în instrucțiunea SELECT în format expres regulat.

% Orice șir de zero sau mai multe caractere
_ Orice character unic
[ ] Orice caracter unic în intervalul specificat (de exemplu, [a-f]) sau set (de exemplu, [abcdef])
[^] Orice caracter unic care nu se încadrează în intervalul specificat (de exemplu, [~ a – f]) sau set (de exemplu, [^ abcdef])

Tabelul 16.3. Cum se specifică metacaracterele în instrucțiunea SELECT.

În exemplul #1, LIKE ‘Mc%’ caută toate numele de familie care încep cu literele „Mc” (de exemplu, McBadden).

SELECT LastName
FROM Employees
WHERE LastName LIKE ‘Mc%’

 

În exemplul #2 LIKE ‘%inger’ caută toate numele de familie care se termină cu literele „inger” (de exemplu, Ringer, Stringer).

SELECT LastName
FROM Employees
WHERE LastName LIKE ‘%inger’

 

În exemplul #3, LIKE ‘%en%’ caută toate numele de familie care au literele „en” (de exemplu, Bennett, Green, McBadden).

SELECT LastName
FROM Employees
WHERE LastName LIKE ‘%en%’

 

Instrucțiunea SELECT cu clauza ORDER BY

Utilizați clauza ORDER BY pentru a sorta înregistrările din lista rezultată. Utilizați ASC pentru a sorta rezultatele în ordine crescătoare și DESC pentru a sorta rezultatele în ordine descrescătoare.

De exemplu, cu ASC:

SELECT *
FROM Employees
ORDER BY HireDate ASC

 

Și cu DESC:

SELECT *
FROM Books
ORDER BY type, price DESC

 

Instrucțiunea SELECT cu clauza GROUP BY

Clauza GROUP BY este utilizată pentru a crea un rând de ieșire pentru fiecare grup și produce valori rezumative pentru coloanele selectate, așa cum se arată mai jos.

SELECT type
FROM Books
GROUP BY type

 

Iată un exemplu care folosește afirmația de mai sus.

SELECT type AS ‘Type’, MIN(price) AS ‘Minimum Price’
FROM Books
WHERE royalty > 10
GROUP BY type

 

Dacă declarația SELECT include un criteriu WHERE în care prețul nu este nul,

SELECT type, price
FROM Books
WHERE price is not null

 

atunci o declarație cu clauza GROUP BY ar arăta astfel:

SELECT type AS ‘Type’, MIN(price) AS ‘Minimum Price’
FROM Books
WHERE price is not null
GROUP BY type

 

Utilizarea COUNT cu GROUP BY

Putem folosi COUNT pentru a calcula câte articole sunt într-un container. Cu toate acestea, dacă dorim să numărăm diferite articole în grupuri separate, cum ar fi marmuri de culori diferite, atunci am folosi funcția COUNT cu comanda GROUP BY.

Instrucțiunea SELECT de mai jos ilustrează modul de numărare a grupurilor de date utilizând funcția COUNT cu clauza GROUP BY.

SELECT COUNT(*)
FROM Books
GROUP BY type

 

Utilizarea AVG și SUM cu GROUP BY

Putem folosi funcția AVG pentru a ne oferi media oricărui grup și SUM pentru a da totalul. Exemplul #1 folosește funcția AVG cu tipul GROUP BY.

SELECT AVG(qty)
FROM Books
GROUP BY type

 

Exemplul #2 folosește funcția SUM cu tipul GROUP BY.

SELECT SUM(qty)
FROM Books
GROUP BY type

 

Exemplul #3 folosește atât funcțiile AVG cât și SUM cu tipul GROUP BY din instrucțiunea SELECT.

SELECT ‘Total Sales’ = SUM(qty), ‘Average Sales’ = AVG(qty), stor_id
FROM Sales
GROUP BY StorID ORDER BY ‘Total Sales’

 

Restricționarea rândurilor cu HAVING

Clauza HAVING poate fi utilizată pentru a restricționa rândurile. Este similară condiției WHERE, cu excepția faptului că HAVING poate include funcția agregată; WHERE nu poate face acest lucru.

Clauza HAVING se comportă ca și clauza WHERE, dar este aplicabilă grupurilor. În acest exemplu, folosim clauza HAVING pentru a exclude grupurile cu provincia „BC”.

SELECT au_fname AS ‘Author”s First Name’, province as ‘Province’
FROM Authors
GROUP BY au_fname, province
HAVING province <> ‘BC

 

Declarația INSERT

Instrucțiunea INSERT adaugă rânduri la un tabel. În plus,

  • INSERT specifică tabelul sau vizualizarea în care vor fi inserate datele.
  • Column_list listează coloanele care vor fi afectate de INSERT.
  • Dacă o coloană este omisă, fiecare valoare trebuie furnizată.
  • Dacă includeți coloane, acestea pot fi listate în orice ordine.
  • VALUES specifică datele pe care doriți să le inserați în tabel. VALUES este obligatorie.
  • Coloanele cu proprietatea IDENTITY nu trebuie să fie listate în mod explicit în column_list sau values_clause.

Sintaxa pentru instrucțiunea INSERT este:

INSERT [INTO] Table_name | view name [column_list] DEFAULT VALUES | values_list | select statement

 

La inserarea rândurilor cu instrucțiunea INSERT, se aplică aceste reguli:

  • Introducerea unui șir gol (‘‘) într-o coloană varchar sau text introduce un singur spațiu.
  • Toate coloanele de caractere sunt umplute la dreapta la lungimea definită.
  • Toate spațiile finale sunt eliminate din datele inserate în coloane varchar, cu excepția șirurilor care conțin doar spații. Aceste șiruri sunt trunchiate într-un singur spațiu.
  • Dacă o instrucțiune INSERT încalcă o constrângere, implicită sau regulă, sau dacă este un tip de date greșit, declarația eșuează și SQL Server afișează un mesaj de eroare.

Când specificați valori doar pentru unele dintre coloanele din lista de coloane, unul dintre cele trei lucruri se poate întâmpla coloanelor care nu au valori:

  1. Se introduce o valoare implicită dacă coloana are o constrângere DEFAULT, dacă o valoare implicită este legată de coloană sau dacă o valoare implicită este legată de tipul de date subiacent definit de utilizator.
  2. NULL este introdus dacă coloana permite NULL și nu există o valoare implicită pentru coloană.
  3. Se afișează un mesaj de eroare și rândul este respins dacă coloana este definită ca NOT NULL și nu există nicio valoare implicită. Acest exemplu folosește INSERT pentru a adăuga o înregistrare în tabelul Authors al editorului.

INSERT INTO Authors
VALUES(‘555-093-467’, ‘Martin’, ‘April’, ‘281 555-5673’, ‘816 Market St.,’ , ‘Vancouver’, ‘BC, ‘V7G3P4’, 0)

 

Următorul exemplu ilustrează modul de inserare a unui rând parțial în tabelul Publishers cu o listă de coloane. Coloana țară avea o valoare implicită a Canadei, deci nu necesită includerea acesteia în valorile dvs.

INSERT INTO Publishers (PubID, PubName, city, province)
VALUES (‘9900’, ‘Acme Publishing’, ‘Vancouver’, ‘BC’)

 

Pentru a insera rânduri într-un tabel cu o coloană IDENTITY, urmați exemplul de mai jos. Nu furnizați valoarea pentru IDENTITY și nici numele coloanei din lista de coloane.

INSERT INTO jobs
VALUES (‘DBA’, 100, 175)

 

Inserarea valorilor specifice într-o coloană IDENTITY

În mod implicit, datele nu pot fi inserate direct într-o coloană IDENTITY; totuși, dacă un rând este șters accidental sau există goluri în valorile coloanei IDENTITY, puteți insera un rând și puteți specifica valoarea coloanei IDENTITY.

IDENTITY_INSERT option

 

Pentru a permite o inserare cu o valoare de identitate specifică, opțiunea IDENTITY_INSERT poate fi utilizată după cum urmează.

SET IDENTITY_INSERT jobs ON
INSERT INTO jobs (job_id, job_desc, min_lvl, max_lvl)
VALUES (19, ’DBA2’, 100, 175)
SET IDENTITY_INSERT jobs OFF

 

Inserarea rândurilor cu o instrucțiune SELECT

Uneori putem crea un mic tabel temporar dintr-un tabel mare. Pentru aceasta, putem insera rânduri cu o instrucțiune SELECT. Când utilizați această comandă, nu există validare pentru unicitate. În consecință, pot exista mai multe rânduri cu același pub_id în exemplul de mai jos.

Acest exemplu creează un tabel de editori temporari mai mic folosind instrucțiunea CREATE TABLE. Apoi, INSERT cu o instrucțiune SELECT este utilizată pentru a adăuga înregistrări la acest tabel temporar de editori din tabelul public.

CREATE TABLE dbo.tmpPublishers (
PubID char (4) NOT NULL ,
PubName varchar (40) NULL ,
city varchar (20) NULL ,
province char (2) NULL ,
country varchar (30) NULL DEFAULT (‘Canada’)
)
INSERT tmpPublishers
SELECT * FROM Publishers

 

În acest exemplu, copiem un subset de date.

INSERT tmpPublishers (pub_id, pub_name)
SELECT PubID, PubName
FROM Publishers

 

În acest exemplu, datele editorilor sunt copiate în tabelul tmpPublishers, iar coloana țară este setată la Canada.

INSERT tmpPublishers (PubID, PubName, city, province, country)
SELECT PubID, PubName, city, province, ‘Canada’
FROM Publishers

 

Instrucțiunea UPDATE

Instrucțiunea UPDATE modifică datele din rândurile existente fie prin adăugarea de date noi, fie prin modificarea datelor existente.

UPDATE Publishers
SET country = ‘Canada’

 

Acest exemplu folosește declarația UPDATE pentru a standardiza câmpul de țară pentru a fi Canada pentru toate înregistrările din tabelul Publishers.

UPDATE roysched
SET royalty = royalty + (royalty * .10)
WHERE royalty BETWEEN 10 and 20

 

Includerea subinterogărilor într-o declarație UPDATE

Angajaților din tabelul Employees care au fost angajați de editor în 2010 li se oferă o promovare la cel mai înalt nivel de job pentru tipul lor de job. Așa ar arăta declarația UPDATE.

UPDATE Employees
SET job_lvl =
(SELECT max_lvl FROM jobs
WHERE employee.job_id = jobs.job_id)
WHERE DATEPART(year, employee.hire_date) = 2010

 

Instrucțiunea DELETE

Instrucțiunea DELETE elimină rândurile dintr-un set de înregistrări. DELETE numește tabelul sau vizualizarea care conține rândurile care vor fi șterse și doar un singur tabel sau rând poate fi listat la un moment dat. WHERE este o clauză standard WHERE care limitează ștergerea pentru selectarea înregistrărilor.

Sintaxa DELETE arată astfel.

DELETE [FROM] {table_name | view_name }
[WHERE clause]

 

Regulile pentru declarația DELETE sunt:

  1. Dacă omiteți o clauză WHERE, toate rândurile din tabel sunt eliminate (cu excepția indexurilor, tabelului, constrângerilor).
  2. DELETE nu poate fi utilizat cu o vizualizare care are o clauză FROM denumind mai multe tabele. (Ștergerea poate afecta doar un singur tabel de bază la un moment dat.)

Ceea ce urmează sunt trei instrucțiuni DELETE diferite care pot fi utilizate.

  1. Ștergerea tuturor rândurilor dintr-un tabel.

DELETE
FROM Discounts

 

  1. Ștergerea rândurilor selectate:

DELETE
FROM Sales
WHERE stor_id = ‘6380’

 

  1. Ștergerea rândurilor pe baza unei valori dintr-o interogare:

DELETE FROM Sales
WHERE title_id IN
(SELECT title_id FROM Books WHERE type = ‘mod_cook’)

 

Funcții încorporate

Există multe funcții încorporate în SQL Server, cum ar fi:

  1. Aggregate: returnează valori rezumative
  2. Conversion: transformă un tip de date în altul
  3. Date: afișează informații despre date și ore
  4. Mathematical: efectuează operații pe date numerice
  5. String: efectuează operații pe șiruri de caractere, date binare sau expresii
  6. System: returnează o informație specială din baza de date
  7. Text and image: efectuează operațiuni pe date de text și imagine

Mai jos veți găsi descrieri detaliate și exemple pentru primele patru funcții.

Funcții agregate

Funcțiile agregate efectuează un calcul pe un set de valori și returnează o singură valoare sau un rezumat. Tabelul 16.4 prezintă aceste funcții.

FUNCȚIA DESCRIERE
AVG Returnează media tuturor valorilor, sau numai a valorilor DISTINCT, din expresie.
COUNT Returnează numărul de valori care nu sunt nule în expresie. Când se specifică DISTINCT, COUNT găsește numărul de valori unice care nu sunt nule.
COUNT(*) Returnează numărul de rânduri. COUNT(*) nu ia parametri și nu poate fi utilizat cu DISTINCT.
MAX Returnează valoarea maximă din expresie. MAX poate fi utilizat cu coloane numerice, character  și de date, dar nu și cu coloane de biți. Cu coloane de caractere, MAX găsește cea mai mare valoare în secvența de asociere. MAX ignoră orice valoare nulă.
MIN Returnează valoarea minimă din expresie. MIN poate fi utilizat cu coloane numerice, de caractere și date, dar nu și cu coloane de biți. Cu coloanele de caractere, MIN găsește valoarea cea mai mică în secvența de sortare. MIN ignoră orice valoare nulă.
SUM Returnează suma tuturor valorilor, sau numai a valorilor DISTINCT, din expresie. SUM poate fi utilizat numai cu coloane numerice.

Tabelul 16.4 O listă de funcții și descrieri agregate.

Mai jos sunt exemple ale fiecărei funcții agregate enumerate în Tabelul 16.4.

Exemplul #1: AVG

SELECT AVG (price) AS ‘Average Title Price’
FROM Books

 

Exemplul #2: COUNT

SELECT COUNT(PubID) AS ‘Number of Publishers’
FROM Publishers

 

Exemplul #3: COUNT

SELECT COUNT(province) AS ‘Number of Publishers’
FROM Publishers

 

Exemplul #3: COUNT (*)

SELECT COUNT(*)
FROM Employees
WHERE job_lvl = 35

 

Exemplul #4: MAX

SELECT MAX (HireDate)
FROM Employees

 

Exemplul #5: MIN

SELECT MIN (price)
FROM Books

 

Exemplul #6: SUM

SELECT SUM(discount) AS ‘Total Discounts’
FROM Discounts

 

Funcția CONVERT

Funcția CONVERT transformă un tip de date în altul.

În exemplul de mai jos, un preț care conține doi de 9 este convertit în cinci caractere. Sintaxa pentru această afirmație este SELECT ‘The date is ‘ + CONVERT(varchar(12), getdate()).

SELECT CONVERT(int, 10.6496)
SELECT title_id, price
FROM Books
WHERE CONVERT(char(5), price) LIKE ‘%99%’

 

În acest al doilea exemplu, funcția CONVERT schimbă datele într-un tip de date cu o dimensiune diferită.

SELECT title_id, CONVERT(char(4), ytd_sales) as ‘Sales’
FROM Books
WHERE type LIKE ‘%cook’

 

Funcția date

Funcția date produce o dată prin adăugarea unui interval la o dată specificată. Rezultatul este o valoare datetime egală cu data plus numărul de părți de dată. Dacă parametrul date este o valoare smalldatetime, rezultatul este și el o valoare smalldatetime.

Funcția DATEADD este utilizată pentru a adăuga și a crește valorile date. Sintaxa pentru această funcție este DATEADD(datapart,number,date).

SELECT DATEADD(day, 3, hire_date)
FROM Employees

 

În acest exemplu, este utilizată funcția DATEDIFF(datapart,date1,date2).

Această comandă returnează numărul de „limite” ale părții de date traversate între două date specificate. Metoda de numărare a limitelor încrucișate face ca rezultatul dat de DATEDIFF să fie consecvent în toate tipurile de date, cum ar fi minute, secunde și milisecunde.

SELECT DATEDIFF(day, HireDate, ‘Nov 30 1995’)
FROM Employees

 

Pentru orice dată anume, putem examina orice parte a acelei date de la an la milisecundă.

Părțile de dată (DATEPART) și abrevierile recunoscute de SQL Server și valorile acceptabile sunt enumerate în Tabelul 16.5.

PARTE DATĂ ABREVIERE VALORI
An yy 1753-9999
Trimestru qq 1-4
Lună mm 1-12
Ziua anului dy 1-366
Zi dd 1-31
Săptămână wk 1-53
Ziua săptămânii dw 1-7 (Sun.-Sat.)
Ora hh 0-23
Minut mi 0-59
Secundă ss 0-59
Milisecundă ms 0-999

Tabelul 16.5. Abrevieri și valori ale părților de date.

Funcții matematice

Funcțiile matematice efectuează operații pe date numerice. Următorul exemplu listează prețul curent pentru fiecare carte vândută de editor, și care ar fi acestea dacă toate prețurile ar crește cu 10%.

SELECT Price, (price * 1.1) AS ‘New Price’, title
FROM Books
SELECT ‘Square Root’ = SQRT(81)
SELECT ‘Rounded‘ = ROUND(4567.9876,2)
SELECT FLOOR (123.45)

 

Combinarea tabelelor

Combinarea a două sau mai multe tabele este procesul de comparare a datelor din coloanele specificate și utilizarea rezultatelor comparației pentru a forma un nou tabel din rândurile care se califică. O declarație de combinare:

  • Specifică o coloană din fiecare tabel
  • Compară valorile din acele coloane rând cu rând
  • Combină rânduri cu valori de calificare într-un rând nou

Deși comparația este de obicei pentru egalitate – valori care se potrivesc exact – pot fi specificate și alte tipuri de asocieri. Toate combinările diferite, cum ar fi interior, stânga (exterior), dreapta (exterior) și combinare transversală vor fi descrise mai jos.

O combinare interioară conectează două tabele pe o coloană cu același tip de date. Sunt returnate numai rândurile în care se potrivesc valorile coloanei; rândurile neegalate sunt aruncate.

Exemplul #1

SELECT jobs.job_id, job_desc
FROM jobs
INNER JOIN Employees ON employee.job_id = jobs.job_id
WHERE jobs.job_id < 7

 

Exemplul #2

SELECT authors.au_fname, authors.au_lname, books.royalty, title
FROM authorsINNER JOIN titleauthor ON authors.au_id=titleauthor.au_id
INNER JOIN books ON titleauthor.title_id=books.title_id
GROUP BY authors.au_lname, authors.au_fname, title, title.royalty
ORDER BY authors.au_lname

 

Combinarea exterioară stângă

O combinare exterioară stângă specifică faptul că toate rândurile exterioare stânga trebuie returnate. Toate rândurile din tabelul din stânga care nu îndeplinesc condiția specificată sunt incluse în setul de rezultate, iar coloanele de ieșire din celălalt tabel sunt setate la NULL.

Acest prim exemplu folosește noua sintaxă pentru o combinare exterioară stângă.

SELECT publishers.pub_name, books.title
FROM Publishers
LEFT OUTER JOIN Books On publishers.pub_id = books.pub_id

 

Acesta este un exemplu de combinare exterioară stângă utilizând vechea sintaxă.

SELECT publishers.pub_name, books.title
FROM Publishers, Books
WHERE publishers.pub_id *= books.pub_id

 

Combinarea exterioară dreaptă

O combinare exterioară dreaptă include, în setul de rezultate, toate rândurile din tabelul din dreapta care nu îndeplineau condiția specificată. Coloanele de ieșire care corespund celuilalt tabel sunt setate la NULL.

Mai jos este un exemplu care utilizează noua sintaxă pentru o combinare exterioară dreaptă.

SELECT titleauthor.title_id, authors.au_lname, authors.au_fname
FROM titleauthor
RIGHT OUTER JOIN authors ON titleauthor.au_id = authors.au_id
ORDERY BY au_lname

 

Acest al doilea exemplu arată sintaxa veche utilizată pentru o îmbinare exterioară dreaptă.

SELECT titleauthor.title_id, authors.au_lname, authors.au_fname
FROM titleauthor, authors
WHERE titleauthor.au_id =* authors.au_id
ORDERY BY au_lname

 

Combinarea exterioară completă

O combinare exterioară completă specifică faptul că dacă un rând din oricare dintre tabele nu corespunde criteriilor de selecție, rândul este inclus în setul de rezultate, iar coloanele sale de ieșire care corespund celuilalt tabel sunt setate la NULL.

Iată un exemplu de combinare exterioară completă.

SELECT books.title, publishers.pub_name, publishers.province
FROM Publishers
FULL OUTER JOIN Books ON books.pub_id = publishers.pub_id
WHERE (publishers.province <> “BC” and publishers.province <> “ON”)
ORDER BY books.title_id

 

Combinarea încrucișată

O combinare încrucișată este un produs care combină două tabele. Această combinare returnează aceleași rânduri ca și când nu ar fi fost specificată nicio clauză WHERE. De exemplu:

SELECT au_lname, pub_name,
FROM Authors CROSS JOIN Publishers

 

Termeni cheie

  • combinare exterioară completă: specifică faptul că dacă un rând din oricare dintre tabele nu corespunde criteriilor de selecție
  • combinare exterioară dreaptă: include toate rândurile din tabelul din dreapta care nu îndeplineau condiția specificată
  • combinare exterioară stângă: specifică faptul că toate rândurile exterioare stânga trebuie returnate
  • combinare interioară: conectează două tabele pe o coloană cu același tip de date
  • DESC: ordinea descrescătoare
  • funcția agregată: returnează valori sumare ASC: ordine crescătoare
  • funcția date: afișează informații despre date și ore
  • funcția de conversie: transformă un tip de date în altul
  • funcția de sistem: returnează o informație specială din baza de date
  • funcția matematică: efectuează operații pe date numerice
  • funcția șir: efectuează operații pe șiruri de caractere, date binare sau expresii
  • funcții de text și imagine: efectuează operațiuni pe date de text și imagine
  • combinare încrucișată: un produs care combină două tabele
  • GROUP BY: folosit pentru a crea un rând de ieșire pentru fiecare grup și produce valori rezumate pentru coloane selectate
  • instrucțiunea DELETE: elimină rândurile dintr-un set de înregistrări
  • instrucțiunea INSERT: adaugă rânduri la un tabel
  • instrucțiunea SELECT: utilizată pentru interogarea datelor din baza de date
  • instrucțiunea UPDATE: modifică datele din rândurile existente fie adăugând date noi, fie modificând datele existente
  • wildcard: permite utilizatorului să potrivească câmpurile care conțin anumite litere.

Sursa: Adrienne Watt, Database Design – 2nd Edition. Descărcare gratuită de la B.C. Open Textbook Collection. © 2014 Adrienne Watt and Nelson Eng. Licența (inclusiv imagini) CC BY 4.0. Traducere Nicolae Sfetcu

© 2021 MultiMedia Publishing, Baze de date, Volumul 1

Traducere şi traducători
Traducere şi traducători

Ghidul esențial pentru toți cei pasionați de arta traducerii și complexitatea comunicării interculturale.

Nu a fost votat 2.64 Selectează opțiunile Acest produs are mai multe variații. Opțiunile pot fi alese în pagina produsului.
Ghidul Google SEO
Ghidul Google SEO

O resursă esențială pentru orice proprietar de site, specialist în marketing digital sau antreprenor online.

Nu a fost votat 0.00 Selectează opțiunile Acest produs are mai multe variații. Opțiunile pot fi alese în pagina produsului.
Ghid WordPress pentru începători
Ghid WordPress pentru începători

Descoperă arta gestionării site-urilor web cu WordPress!

Nu a fost votat 2.644.83 Selectează opțiunile Acest produs are mai multe variații. Opțiunile pot fi alese în pagina produsului.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *