Home » Articole » RO » Calculatoare » Programare » SQL » SQL: Editarea datelor într-un tabel

SQL: Editarea datelor într-un tabel

postat în: SQL 0

Avem un tabel gol numit person. Ce putem face cu un astfel de tabel? Folosiți-l ca pe o tolbă! Păstrați lucruri în el, uitați-vă în el pentru a verifica existența unor lucruri, modificați lucrurile din el sau aruncați lucruri din el. Acestea sunt cele patru operațiuni esențiale, care se referă la datele din tabele:

  • INSERT: puneți câteva date în tabel
  • SELECT: preluați date din tabel
  • UPDATE: modificați datele care există în tabel
  • DELETE: eliminați datele din tabel.

Pentru fiecare dintre aceste patru operații, există o comandă SQL. Începe cu un cuvânt cheie și ajunge până la un punct și virgulă final. Această regulă se aplică tuturor comenzilor SQL: sunt introduse printr-un cuvânt cheie și terminate cu punct și virgulă. În mijloc, pot exista mai multe cuvinte cheie, precum și nume de obiecte și valori.

Stocați date noi cu comanda INSERT

Când stocăm date noi în rândurile unui tabel SQL, trebuie să denumim toate obiectele și valorile afectate: numele tabelului (pot fi multe tabele în baza de date), numele coloanelor și valorile. Toate acestea sunt încorporate în unele cuvinte cheie, astfel încât compilatorul SQL să poată recunoaște simbolurile și semnificația lor. În general, sintaxa pentru un simplu INSERT este

INSERT INTO <tablename> (<list_of_columnnames>)
VALUES                  (<list_of_values>);

Iată un exemplu

-- put one row
INSERT INTO person (id, firstname, lastname,    date_of_birth,     place_of_birth, ssn,           weight)
VALUES             (1,  'Larry',   'Goldstein', date'1970-11-20', 'Dallas',        '078-05-1120', 95);
-- confirm the INSERT command
COMMIT;

Când SGBD recunoaște cuvintele cheie INSERT INTO și VALUES, știe ce să facă: creează un nou rând în tabel și pune valorile date în coloanele numite. În exemplul de mai sus, comanda este urmată de o a doua: COMMIT confirmă operația INSERT, precum și celelalte operațiuni de scriere UPDATE și DELETE. (Vom afla mult mai multe despre COMMIT și omologul său ROLLBACK într-un capitol ulterior.)

Un scurt comentariu despre formatul valorii pentru date_of_birth: Nu există un format unic pentru datele onorate în întreaga lume. Oamenii folosesc diferite formate în funcție de obiceiurile lor culturale. În scopul nostru, decidem să reprezentăm datele în formatul ierarhic definit în ISO 8601. Este posibil ca instalarea bazei de date locală să utilizeze un alt format, astfel încât să fiți obligat fie să modificați exemplele noastre, fie să modificați formatul implicit de date al instalării bazei dvs. de date.

Acum vom mai pune câteva rânduri în tabelul nostru. Pentru a face acest lucru, folosim o variație a sintaxei de mai sus. Este posibil să se omită lista de nume de coloane dacă lista de valori se corelează exact cu numărul, ordinea și tipul de date al coloanelor utilizate în instrucțiunea originală CREATE TABLE.

Sugestie: Practica de a omite lista de nume de coloane nu este recomandată pentru aplicații reale! Structurile tabelului se modifică în timp, de ex. cineva poate adăuga noi coloane la tabel. În acest caz, în aplicații pot apărea efecte secundare neașteptate.

-- put four rows
INSERT INTO person VALUES (2,  'Tom',    'Burton',    date'1980-01-22', 'Birmingham',    '078-05-1121', 75);
INSERT INTO person VALUES (3,  'Lisa',   'Hamilton',  date'1975-12-30', 'Mumbai',        '078-05-1122', 56);
INSERT INTO person VALUES (4,  'Debora', 'Patterson', date'2011-06-01', 'Shanghai',      '078-05-1123', 11);
INSERT INTO person VALUES (5,  'James',  'de Winter', date'1975-12-23', 'San Francisco', '078-05-1124', 75);
COMMIT;

Selectarea datelor cu comanda SELECT

Acum tabelul nostru ar trebui să conțină cinci rânduri. Putem fi siguri de asta? Cum putem verifica dacă totul a funcționat bine și dacă rândurile și valorile există cu adevărat? Pentru a face acest lucru, avem nevoie de o comandă care ne arată conținutul real al tabelului. Este comanda SELECT cu următoarea sintaxă generală

SELECT   <list_of_columnnames>
FROM     <tablename>
WHERE    <search_condition>
ORDER BY <order_by_clause>;

Ca și în cazul comenzii INSERT, puteți omite unele părți. Cel mai simplu exemplu este

SELECT   *
FROM     person;

Caracterul asterisc „*” indică „toate coloanele”. În rezultat, SGBD-ul ar trebui să livreze toate cele cinci rânduri, fiecare cu cele șapte valori pe care le-am folosit anterior cu comanda INSERT.

În exemplele următoare, adăugăm clauzele care lipsesc în prezent din sintaxa generală – una după alta.

Adăugați o listă a unora sau a tuturor numelor de coloane

SELECT   firstname, lastname
FROM     person;

SGBD-ul ar trebui să furnizeze cele două coloane nume și prenume din toate cele cinci rânduri.

Adăugați o condiție de căutare

SELECT   id, firstname, lastname
FROM     person
WHERE    id > 2;

SGBD-ul ar trebui să furnizeze cele trei coloane id, firstname și lastname din trei rânduri.

Adăugați o instrucțiune de sortare

SELECT   id, firstname, lastname, date_of_birth
FROM     person
WHERE    id > 2
ORDER BY date_of_birth;

SGBD-ul ar trebui să furnizeze cele patru coloane id, firstname, lastname și date_of_birth pe trei rânduri, în ordinea crescătoare a datei_nașterii (date_of_birth).

Modificați datele cu comanda UPDATE

Dacă dorim să modificăm valorile unor coloane din unele rânduri, putem face acest lucru folosind comanda UPDATE. Sintaxa generală pentru o UPDATE simplă este:

UPDATE <tablename>
SET    <columnname> = <value>, 
       <columnname> = <value>,
                   ...
WHERE  <search_condition>;

Valorile sunt atribuite coloanelor numite. Coloanele nemenționate rămân neschimbate. Search_condition acționează în același mod ca și în comanda SELECT. Limitează acoperirea comenzii la rânduri, care îndeplinesc criteriile. Dacă cuvântul cheie WHERE și search_condition sunt omise, toate rândurile tabelului sunt afectate. Este posibil să specificați search_conditions, care nu atinge niciun rând. În acest caz, niciun rând nu este actualizat – și nu apare nicio eroare sau excepție.

Schimbați o coloană dintr-un rând

UPDATE person
SET    firstname = 'James Walker' 
WHERE  id = 5;
COMMIT;

Prenumele domnului de Winter se schimbă în James Walker, în timp ce toate celelalte valori ale lui rămân neschimbate. De asemenea, toate celelalte rânduri rămân neschimbate. Vă rugăm să verificați acest lucru cu o comandă SELECT.

Schimbați o coloană cu mai multe rânduri

UPDATE person
SET    firstname = 'Unknown' 
WHERE  date_of_birth < date'2000-01-01';
COMMIT;

<search_condition> nu este limitată la coloana Cheie primară (Primary Key). Putem specifica orice altă coloană. Și operatorul de comparație nu este limitat la semnul egal. Putem folosi diferiți operatori – aceștia trebuie doar să se potrivească cu tipul de date al coloanei.

În acest exemplu, schimbăm prenumele celor patru rânduri cu o singură comandă. Dacă există un tabel cu milioane de rânduri, le putem modifica pe toate folosind o singură comandă.

Schimbați două coloane dintr-un rând

-- Please note the additional comma
UPDATE person
SET    firstname = 'Jimmy Walker', 
       lastname  = 'de la Crux' 
WHERE  id = 5;
COMMIT;

Cele două valori sunt modificate cu o singură comandă.

Eliminați datele cu comanda DELETE

Comanda DELETE elimină rânduri complete din tabel. Deoarece rândurile sunt eliminate ca întreg, nu este nevoie să specificați niciun nume de coloană. Semantica <search_condition> este aceeași ca și cu SELECT și UPDATE.

DELETE
FROM   <tablename>
WHERE  <search_condition>;

Eliminați un rând

DELETE
FROM   person
WHERE  id = 5;
COMMIT;

Rândul lui James de Winter este scos din tabel.

Ștergeți multe rânduri

DELETE
FROM   person;
COMMIT;

Toate rândurile rămase sunt șterse deoarece am omis <search_condition>. Tabelul este gol, dar încă există.

Niciun rând afectat

DELETE
FROM   person
WHERE  id = 99;
COMMIT;

Această comandă nu va elimina niciun rând, deoarece nu există niciun rând cu id egal cu 99. Dar sintaxa și execuția în SGBD sunt încă perfecte. Nu se face nicio excepție. Comanda se termină fără niciun mesaj de eroare sau cod de eroare.

Rezumat

Comenzile INSERT și DELETE afectează rândurile în întregime. INSERT pune un rând complet nou într-un tabel (coloanele nemenționate rămân goale), iar DELETE elimină rânduri întregi. În schimb, SELECT și UPDATE afectează numai acele coloane care sunt menționate în comandă; coloanele nemenționate nu sunt afectate.

Comanda INSERT (în versiunea simplă a acestei pagini) nu are <search_condition> și, prin urmare, gestionează exact un rând. Celelalte trei comenzi pot afecta zero, unul sau mai multe rânduri, în funcție de evaluarea <search_condition>.

(Include texte din Wikibooks traduse și adaptate de Nicolae Sfetcu)

Rețele de comunicații 5G
Rețele de comunicații 5G

Datorită impactului său așteptat în economie și societate, a cincea generație de telecomunicații mobile (5G) este una dintre cele mai importante inovații ale timpului nostru. Așteptările cresc cu capacitățile de bandă largă ale 5G, accesibile tuturor și peste tot, la … Citeşte mai mult

Nu a fost votat $2,99$6,88 Selectează opțiunile
Introducere în Business Intelligence
Introducere în Business Intelligence

Colecția ȘTIINȚA INFORMAȚIEI ”Introducere în Business Intelligence” oferă cititorilor informații cuprinzătoare despre business intelligence, explorând toate aspectele importante ale inteligenței de afaceri în scenariul actual. Subiectele tratate se referă la abordările de bază ale business intelligence. Cartea își propune să … Citeşte mai mult

Nu a fost votat $2,99$4,80 Selectează opțiunile
Tehnologia Blockchain - Bitcoin
Tehnologia Blockchain – Bitcoin

Internetul a schimbat complet lumea, cultura şi obiceiurile oamenilor. După o primă fază caracterizată prin transferul liber al informaţiilor, au apărut preocupările pentru siguranţa comunicaţiilor online şi confidenţialitatea utilizatorilor. Tehnologia blockchain asigură ambele aceste deziderate. Relativ nouă, ea are şansa să producă … Citeşte mai mult

Nu a fost votat $2,99$11,99 Selectează opțiunile

Lasă un răspuns

Adresa ta de email nu va fi publicată.