SQLite INSERT, UPDATE, DELETE Interogare cu exemplu

โšก Rezumat inteligent

SQLite Instrucศ›iunile INSERT, UPDATE ศ™i DELETE modificฤƒ datele dintr-o bazฤƒ de date prin adฤƒugarea de noi rรขnduri, modificarea valorilor existente ศ™i eliminarea รฎnregistrฤƒrilor, รฎn timp ce clauza ON CONFLICT decide modul รฎn care sunt rezolvate รฎncฤƒlcฤƒrile constrรขngerilor รฎn timpul acestor operaศ›iuni.

  • ๐Ÿ“ INTRODUCE: Instrucศ›iunea INSERT adaugฤƒ unul sau mai multe rรขnduri noi, listรขnd coloanele ศ›intฤƒ ศ™i valorile acestora cu ajutorul clauzei VALUES.
  • โœ๏ธ ACTUALIZAศšI: Instrucศ›iunea UPDATE modificฤƒ valorile existente ale coloanelor, utilizรขnd SET pentru datele noi ศ™i WHERE pentru a viza rรขnduri specifice.
  • ๐Ÿ—‘๏ธ ศ˜TERGE: Instrucศ›iunea DELETE eliminฤƒ rรขndurile care corespund unei condiศ›ii WHERE sau fiecare rรขnd atunci cรขnd clauza WHERE este omisฤƒ.
  • โš ๏ธ Clauza de conflict: Clauza ON CONFLICT rezolvฤƒ รฎncฤƒlcฤƒrile constrรขngerilor prin ROLLBACK, ABORT, FAIL, IGNORE sau REPLACE.
  • ๐Ÿ” tranzacลฃii: O tranzacศ›ie รฎn baza de date grupeazฤƒ mai multe operaศ›ii รฎntr-o singurฤƒ unitate care fie se valideazฤƒ complet, fie se anuleazฤƒ complet.
  • ๐Ÿค– Asistenศ›ฤƒ AI: Instrumentele text-SQL cu inteligenศ›ฤƒ artificialฤƒ ศ™i GitHub Copilot genereazฤƒ SQLite Instrucศ›iuni INSERT, UPDATE ศ™i DELETE din prompturi รฎn limba englezฤƒ simplฤƒ.

SQLite INSERT, UPDATE, DELETE Interogare

Inserare, actualizare ศ™i ศ™tergere interogare รฎn SQLite

Clauzele de modificare a datelor รฎn SQLite sunt instrucศ›iunile INSERT, UPDATE ศ™i DELETE. Este folosit pentru inserarea de noi rรขnduri, actualizarea valorilor existente sau ศ™tergerea rรขndurilor din baza de date.

Reศ›ineศ›i cฤƒ, pentru toate exemplele urmฤƒtoare, trebuie sฤƒ rulaศ›i sqlite3.exe ศ™i sฤƒ deschideศ›i o conexiune la baza de date eศ™antion ca flux:

Pas 1) รŽn aceastฤƒ etapฤƒ,

  • Deschideศ›i My Computer ศ™i navigaศ›i la urmฤƒtorul director โ€žC:\sqliteโ€ ศ™i
  • Apoi deschideศ›i โ€žsqlite3.exeโ€:

SQLite Interogare - INSERT, UPDATE, DELETE

Pas 2) Deschideศ›i baza de date โ€žTutorialsSampleDB.dbโ€ cu urmฤƒtoarea comandฤƒ:

.open TutorialsSampleDB.db

SQLite Interogare - INSERT, UPDATE, DELETE

Acum sunteศ›i gata sฤƒ rulaศ›i orice tip de interogare รฎn baza de date.

SQLite INSERT

SQLite INSERT este folosit pentru a insera รฎnregistrฤƒri รฎntr-un tabel specificat al bazei de date. trebuie sฤƒ utilizaศ›i clauza โ€žINSERTโ€. Sintaxa clauzei INSERT este urmฤƒtoarea:

SQLite INSERT

  • Dupฤƒ clauza INSERT, ar trebui sฤƒ precizaศ›i รฎn ce tabel trebuie sฤƒ introduceศ›i valorile.
  • Dupฤƒ numele tabelului scrieศ›i lista de coloane, doriศ›i sฤƒ introduceศ›i valorile รฎn care.
  • Puteศ›i ignora numele coloanelor ศ™i nu le scrieศ›i.
  • Dacฤƒ nu scrieศ›i numele coloanelor, valorile vor fi inserate รฎn toate coloanele gฤƒsite รฎn tabel รฎn aceeaศ™i ordine, coloanele sunt definite รฎn tabel.
  • Dupฤƒ clauza VALUES, ar trebui sฤƒ enumeraศ›i valorile care trebuie inserate.
  • Fiecare clauzฤƒ INSERT insereazฤƒ doar un rรขnd. Dacฤƒ doriศ›i sฤƒ inseraศ›i mai multe rรขnduri, ar trebui sฤƒ scrieศ›i mai multe clauze INSERT, cรขte una pentru fiecare rรขnd.

SQLite Exemplu de inserare

รŽn exemplul urmฤƒtor, vom insera 2 rรขnduri รฎn tabelul studenศ›ilor, cรขte unul pentru fiecare elev:

INSERT INTO Students(StudentId, StudentName, DepartmentId, DateOfBirth)
              VALUES(11, 'Ahmad', 4, '1997-10-12');

INSERT INTO Students VALUES(12, 'Aly', 4, '1996-10-12');

Aceasta ar trebui sฤƒ ruleze cu succes ศ™i nu existฤƒ nicio ieศ™ire pentru aceasta:

SQLite Insera

Aceasta va introduce doi elevi:

  • Primul elev cu StudentId=11, StudentName = Ahmad, DepartmentId = 4 ศ™i DateOfBirth = 1997-10-12.
  • Al doilea student cu StudentId=12, StudentName = Aly, DepartmentId = 4 ศ™i DateOfBirth = 1996-10-12.

รŽn prima instrucศ›iune, am listat numele coloanelor โ€žStudentId, StudentName, DepartmentId, DateOfBirthโ€. Cu toate acestea, รฎn a doua instrucศ›iune, nu am fฤƒcut-o.

Cele patru valori โ€ž12, 'Aly', 4, '1996-10-12'โ€ vor fi inserate รฎn toate cele patru coloane ale tabelului Studenศ›i รฎn aceeaศ™i ordine รฎn care sunt definite coloanele.

Acum, sฤƒ verificฤƒm dacฤƒ cei doi studenศ›i au fost inseraศ›i รฎn tabelul Studenศ›i, rulรขnd urmฤƒtoarele รฎntrebare:

SELECT * FROM Students;

Apoi ar trebui sฤƒ vedeศ›i cei doi studenศ›i reveniศ›i de la acea interogare dupฤƒ cum urmeazฤƒ:

SQLite Insera

SQLite Actualizeazฤƒ

SQLite UPDATE Query este folositฤƒ pentru a modifica รฎnregistrฤƒrile existente รฎntr-un tabel. Puteศ›i utiliza clauza WHERE cu interogarea UPDATE pentru a actualiza rรขndurile selectate. Clauza UPDATE actualizeazฤƒ un tabel prin modificarea unei valori pentru o anumitฤƒ coloanฤƒ. Urmฤƒtoarea este sintaxa clauzei UPDATE:

SQLite Actualizeazฤƒ

Dupฤƒ cum urmeazฤƒ:

  • Dupฤƒ โ€žclauza de actualizareโ€, ar trebui sฤƒ scrieศ›i numele tabelului de actualizat.
  • Trebuie sฤƒ scrieศ›i โ€žclauza SETโ€ care este folositฤƒ pentru a scrie numele coloanei de actualizat ศ™i valoarea de actualizat.
  • Puteศ›i actualiza mai multe coloane. Puteศ›i folosi o virgulฤƒ รฎntre fiecare rรขnd.
  • Puteศ›i specifica o clauzฤƒ WHERE pentru a specifica doar unele rรขnduri. Sunt actualizate doar rรขndurile pe care expresia le evalueazฤƒ drept adevฤƒrat. Dacฤƒ nu aศ›i specificat o clauzฤƒ WHERE, toate rรขndurile vor fi actualizate.

SQLite Exemplu de actualizare

รŽn urmฤƒtoarea instrucศ›iune UPDATE, vom actualiza DepartmentId pentru Studentul cu StudentId = 6 pentru a fi 3:

UPDATE Students
SET DepartmentId = 3 
WHERE StudentId = 6;

Aceasta ar trebui sฤƒ ruleze cu succes ศ™i nu ar trebui sฤƒ obศ›ineศ›i niciun rezultat:

SQLite Actualizeazฤƒ

รŽn clauza UPDATE am specificat cฤƒ dorim sฤƒ actualizฤƒm tabelul Studenศ›i.

  • รŽn clauza WHERE, am filtrat toศ›i studenศ›ii pentru a selecta doar rรขndul pentru StudentId = 6.
  • Clauza SET va actualiza valoarea ID-ului departamentului pentru studenศ›ii selectaศ›i sฤƒ fie 3.

Acum, sฤƒ verificฤƒm dacฤƒ studentul cu ID 6 este actualizat, rulรขnd urmฤƒtoarea comandฤƒ:

SELECT * FROM Students WHERE StudentId = 6;

Ar trebui sฤƒ vedeศ›i acum cฤƒ valoarea ID-ului departamentului este acum 3, dupฤƒ cum urmeazฤƒ:

SQLite Actualizeazฤƒ

SQLite ศ˜terge

SQLite Interogarea DELETE este utilizatฤƒ pentru a elimina รฎnregistrฤƒrile existente dintr-un tabel specificat. Puteศ›i folosi clauza WHERE cu interogฤƒri DELETE pentru a ศ™terge rรขndurile selectate.

Clauza DELETE are urmฤƒtoarea sintaxฤƒ:

SQLite ศ˜terge

  • Trebuie sฤƒ scrieศ›i un nume de tabel dupฤƒ clauza DELETE FROM, din care doriศ›i sฤƒ ศ™tergeศ›i รฎnregistrฤƒrile. (Notฤƒ: clauza DELETE este utilizatฤƒ pentru a ศ™terge unele รฎnregistrฤƒri dintr-un tabel sau pentru a ศ™terge toate รฎnregistrฤƒrile ศ™i nu va ศ™terge tabelul รฎn sine. Cu toate acestea, clauza DROP este utilizatฤƒ pentru a ศ™terge รฎntregul tabel cu toate รฎnregistrฤƒrile de pe acesta.)
  • Dacฤƒ scrieศ›i clauza DELETE astfel โ€žDELETE FROM guruโ€, aceasta va ศ™terge toate รฎnregistrฤƒrile din tabelul โ€žguruโ€.
  • Puteศ›i specifica o condiศ›ie WHERE cu o expresie dacฤƒ doriศ›i sฤƒ ศ™tergeศ›i anumite rรขnduri. Doar rรขndurile pentru care expresia este evaluatฤƒ ca adevฤƒratฤƒ vor fi ศ™terse. De exemplu, โ€žDELETE FROM guru WHERE id > 5โ€ โ€“ aceasta va ศ™terge numai รฎnregistrฤƒrile care au id-ul mai mare de 5.

Exemplu

รŽn urmฤƒtoarea declaraศ›ie, vom ศ™terge doi studenศ›i cu StudentId 11 ศ™i 12:

DELETE FROM Students WHERE StudentId = 11 OR StudentId = 12;

Expresia โ€žStudentId = 11 OR StudentId = 12โ€ va fi adevฤƒratฤƒ doar pentru studenศ›ii cu ID-urile 11 ศ™i 12. Deci, clauza DELETE se va aplica ambilor ศ™i รฎi va ศ™terge doar pe aceศ™tia.

Aceastฤƒ comandฤƒ ar trebui sฤƒ ruleze cu succes ศ™i nu ar trebui sฤƒ obศ›ineศ›i niciun rezultat dupฤƒ cum urmeazฤƒ:

SQLite ศ˜terge

Puteศ›i verifica dacฤƒ cei doi studenศ›i au fost ศ™terศ™i, selectรขnd toate รฎnregistrฤƒrile din tabelul Studenศ›i dupฤƒ cum urmeazฤƒ:

SELECT * FROM Students;

Nu ar trebui sฤƒ vedeศ›i cei doi studenศ›i cu ID-urile 11 ศ™i 12 dupฤƒ cum urmeazฤƒ:

SQLite ศ˜terge

SQLite Clauza de conflict

Sฤƒ presupunem cฤƒ aveศ›i o coloanฤƒ care are una dintre urmฤƒtoarele constrรขngeri de coloanฤƒ: UNIQUE, NOT NULL, CHECK sau PRIMARY KEY. ศ˜i apoi aศ›i รฎncercat sฤƒ inseraศ›i sau sฤƒ actualizaศ›i o valoare pe acea coloanฤƒ cu o valoare care intrฤƒ รฎn conflict cu aceastฤƒ constrรขngere.

De exemplu, dacฤƒ o coloanฤƒ are o constrรขngere UNIQUE ศ™i aศ›i รฎncercat sฤƒ inseraศ›i o valoare care existฤƒ deja (o valoare duplicatฤƒ), care intrฤƒ รฎn conflict cu constrรขngerea UNIQUE. Apoi, clauza CONFLICT vฤƒ permite sฤƒ alegeศ›i ce sฤƒ faceศ›i รฎn astfel de cazuri pentru a rezolva acest conflict.

รŽnainte de a continua explicarea modului รฎn care clauza CONFLICT rezolvฤƒ conflictul. Ar trebui sฤƒ รฎnศ›elegeศ›i ce este o tranzacศ›ie de bazฤƒ de date.

Tranzacศ›ie cu baze de date

Termenul tranzacศ›ie baza de date este o listฤƒ de SQLite operaศ›iuni (inserare sau actualizare sau ศ™tergere). Tranzacศ›ia bazei de date trebuie sฤƒ fie executatฤƒ ca o singurฤƒ unitate, fie toate operaศ›iunile executate cu succes, fie deloc. Toate operaศ›iunile vor fi anulate dacฤƒ una dintre ele nu a reuศ™it sฤƒ se execute.

Exemplu pentru o tranzacศ›ie de bazฤƒ de date

Tranzacศ›ia de transfer de bani dintr-un cont bancar รฎn altul va implica cรขteva activitฤƒศ›i. Aceastฤƒ operaศ›iune de tranzacศ›ie include retragerea banilor din primul cont ศ™i depunerea acestora รฎn alt cont. Aceastฤƒ tranzacศ›ie trebuie sฤƒ fie finalizatฤƒ sau anulatฤƒ complet ศ™i sฤƒ nu eศ™ueze la jumฤƒtate.

Iatฤƒ lista cu cinci rezoluศ›ii pe care le puteศ›i alege รฎn clauza CONFLICT:

  1. ROLLBACK โ€“ aceasta va anula tranzacศ›ia รฎn care a fost efectuatฤƒ tranzacศ›ia curentฤƒ SQLite declaraศ›ie care are conflictul (va anula รฎntreaga tranzacศ›ie). De exemplu, dacฤƒ รฎncercaศ›i sฤƒ actualizaศ›i 10 rรขnduri, iar al cincilea rรขnd are o valoare care intrฤƒ รฎn conflict cu o constrรขngere, atunci niciun rรขnd nu va fi actualizat, cele 10 rรขnduri vor rฤƒmรขne aceleaศ™i. O eroare va fi aruncatฤƒ.
  2. ABORT โ€“ aceasta va anula (abandona) procesul curent SQLite numai declaraศ›ie care are conflict ศ™i tranzacศ›ia nu va fi anulatฤƒ. De exemplu, dacฤƒ รฎncercaศ›i sฤƒ actualizaศ›i 10 rรขnduri, iar al cincilea rรขnd are o valoare care intrฤƒ รฎn conflict cu o constrรขngere, atunci numai a cincea valoare nu va fi actualizatฤƒ, dar celelalte 9 rรขnduri vor fi actualizate. O eroare va fi aruncatฤƒ.
  3. Eศ˜EC โ€“ รฎntrerupe curentul SQLite declaraศ›ie care are conflictul. Cu toate acestea, tranzacศ›ia nu va continua, dar modificฤƒrile anterioare aduse rรขndurilor รฎnainte de rรขndul care are conflictul vor fi comise. De exemplu, dacฤƒ รฎncercaศ›i sฤƒ actualizaศ›i 10 rรขnduri, iar al cincilea rรขnd are o valoare care intrฤƒ รฎn conflict cu o constrรขngere, atunci numai cele 4 rรขnduri vor fi actualizate, iar celฤƒlalt nu. O eroare va fi aruncatฤƒ.
  4. IGNORE โ€“ aceastฤƒ funcศ›ie va omite rรขndul care conศ›ine รฎncฤƒlcarea constrรขngerii ศ™i va continua procesarea celorlalte rรขnduri urmฤƒtoare ale SQLite afirmaศ›ie. De exemplu, dacฤƒ รฎncercaศ›i sฤƒ actualizaศ›i 10 rรขnduri, iar al cincilea rรขnd are o valoare care intrฤƒ รฎn conflict cu o constrรขngere, atunci numai cele 4 rรขnduri vor fi actualizate, iar celฤƒlalt nu. Nu va continua sฤƒ actualizeze alte rรขnduri ศ™i sฤƒ se opreascฤƒ la rรขndul care are valoarea conflictului. Nicio eroare nu va fi aruncatฤƒ.
  5. รŽNLOCUIRE โ€“ depinde de tipul de constrรขngere care are รฎncฤƒlcarea:
    • Cรขnd existฤƒ o รฎncฤƒlcare a constrรขngerii pentru constrรขngerea UNIQUE sau PRIMARY KEY. REPLACE va รฎnlocui rรขndul care provoacฤƒ รฎncฤƒlcarea cu noul rรขnd inserat sau actualizat.
    • Cรขnd existฤƒ o รฎncฤƒlcare a constrรขngerii NOT NULL, clauza REPLACE va รฎnlocui valoarea NULL cu valoarea implicitฤƒ a acelei coloane. Dacฤƒ coloana nu are o valoare implicitฤƒ, atunci SQLite va anula declaraศ›ia (declaraศ›ia va fi anulatฤƒ)
    • DACฤ‚ are loc รฎncฤƒlcarea constrรขngerii CHECK, clauza va fi anulatฤƒ.

Notฤƒ: Cele 5 rezolvฤƒri de mai sus sunt opศ›iuni pentru modul รฎn care doriศ›i sฤƒ rezolvaศ›i conflictul. Este posibil ca ceea ce este aplicabil pentru a rezolva un conflict sฤƒ nu fie neapฤƒrat aplicabil ศ™i pentru a rezolva alte tipuri de conflicte.

Cum se declarฤƒ clauza CONFLICT

Puteศ›i declara clauza ON CONFLICT atunci cรขnd definiศ›i o constrรขngere pentru definiศ›ia unei coloane รฎn cadrul clauzei CREATE TABLE. Folosind urmฤƒtoarea sintaxฤƒ:

SQLite Clauza de conflict

Puteศ›i alege una dintre cele cinci rezoluศ›ii pentru a rezolva conflictul, aศ™a cum a fost explicat mai sus.

ON CONFLICT IGNORE Exemplu

Pas 1) Creaศ›i un nou subiect de tabel dupฤƒ cum urmeazฤƒ:

CREATE TABLE [Subjects] (  
    [SubjectId] INTEGER NOT NULL PRIMARY KEY ON CONFLICT IGNORE,
    [SubjectName] NVARCHAR NOT NULL
);

Observaศ›i cฤƒ am definit o constrรขngere PRIMARY KEY asupra coloanei SubjectId. Constrรขngerea cheii primare nu va permite inserarea a douฤƒ valori duplicate รฎn coloana SubjectId, astfel รฎncรขt toate valorile din acea coloanฤƒ sฤƒ fie unice. De asemenea, observaศ›i cฤƒ am ales ca rezoluศ›ie a conflictelor sฤƒ fie โ€žIGNORฤ‚โ€.

Comanda ar trebui sฤƒ ruleze cu succes ศ™i nu ar trebui sฤƒ primeศ™ti erori:

ON CONFLICT IGNORE Exemplu

Pas 2) Acum, sฤƒ inserฤƒm cรขteva valori รฎn noile subiecte ale tabelului, dar cu o valoare care รฎncalcฤƒ constrรขngerea cheii primare:

INSERT INTO Subjects VALUES(1, 'Algebra');
INSERT INTO Subjects VALUES(2, 'Database Course');
INSERT INTO Subjects VALUES(2, 'Data Structures');
INSERT INTO Subjects VALUES(4, 'Algorithms');

รŽn aceste instrucศ›iuni INSERT, am รฎncercat sฤƒ inserฤƒm douฤƒ cursuri cu acelaศ™i ID de subiect al cheii primare 2, ceea ce reprezintฤƒ o รฎncฤƒlcare a constrรขngerii cheii primare.

Comenzile ar trebui sฤƒ ruleze bine ศ™i nu ar trebui sฤƒ primeศ™ti erori. Dupฤƒ cum urmeazฤƒ:

ON CONFLICT IGNORE Exemplu

Pas 3) Selectaศ›i toate subiectele din tabel dupฤƒ cum urmeazฤƒ:

SELECT * FROM Subjects;

Aceasta vฤƒ va oferi lista de subiecte:

ON CONFLICT IGNORE Exemplu

Observaศ›i cฤƒ au fost inserate doar trei materii โ€žAlgebrฤƒ, Curs de baze de date ศ™i Algorithmsโ€ รฎn loc de 4 rรขnduri.

Rรขndul care are valoarea care รฎncalcฤƒ constrรขngerea cheii primare, care este โ€žStructuri de dateโ€, a fost ignorat ศ™i nu a fost inserat. In orice caz, SQLite continuฤƒ sฤƒ execute alte instrucศ›iuni dupฤƒ acel rรขnd.

Pas 4) ศ˜TERGEศšI subiectele tabelului pentru a le crea din nou cu o clauzฤƒ ON CONFLICT diferitฤƒ pentru urmฤƒtorul exemplu, rulรขnd urmฤƒtoarea comandฤƒ:

DROP TABLE Subjects;

Comanda drop ศ™terge รฎntregul tabel. Subiectele tabelului acum nu existฤƒ.

ON CONFLICT REPLACE Exemplu

Pas 1) Creaศ›i un nou subiect de tabel dupฤƒ cum urmeazฤƒ:

CREATE TABLE [Subjects] (  
    [SubjectId] INTEGER NOT NULL PRIMARY KEY ON CONFLICT REPLACE,
    [SubjectName] NVARCHAR NOT NULL
);

Observaศ›i cฤƒ am definit o constrรขngere PRIMARY KEY pe coloana SubjectId. Constrรขngerea cheii primare nu va permite inserarea a douฤƒ valori duplicate รฎn coloana SubjectId, astfel รฎncรขt toate valorile din acea coloanฤƒ sฤƒ fie unice.

De asemenea, observaศ›i cฤƒ am ales ca opศ›iune de rezolvare a conflictelor โ€žREPLACEโ€. Comanda ar trebui sฤƒ ruleze cu succes ศ™i nu ar trebui sฤƒ รฎntรขmpinaศ›i nicio eroare:

ON CONFLICT REPLACE Exemplu

Pas 2) Acum, sฤƒ inserฤƒm cรขteva valori รฎn noul tabel Subiecte, dar cu o valoare care รฎncalcฤƒ constrรขngerea cheii primare:

INSERT INTO Subjects VALUES(1, 'Algebra');
INSERT INTO Subjects VALUES(2, 'Database Course');
INSERT INTO Subjects VALUES(2, 'Data Structures');
INSERT INTO Subjects VALUES(4, 'Algorithms');

รŽn aceste instrucศ›iuni INSERT, am รฎncercat sฤƒ inserฤƒm douฤƒ cursuri cu acelaศ™i ID de subiect al cheii primare 2, ceea ce reprezintฤƒ o รฎncฤƒlcare a constrรขngerii cheii primare.

Comenzile ar trebui sฤƒ ruleze bine ศ™i nu ar trebui sฤƒ primeศ™ti erori. Dupฤƒ cum urmeazฤƒ:

ON CONFLICT REPLACE Exemplu

Pas 3) Selectaศ›i toate subiectele din tabel dupฤƒ cum urmeazฤƒ:

SELECT * FROM Subjects;

Aceasta vฤƒ va oferi lista de subiecte:

ON CONFLICT REPLACE Exemplu

Observaศ›i cฤƒ au fost inserate doar trei materii โ€žAlgebrฤƒ, Structuri de date ศ™i Algorithmsโ€ รฎn timp ce am รฎncercat sฤƒ introducem 4 rรขnduri.

Rรขndul care are valoarea ce รฎncalcฤƒ constrรขngerea cheii primare, ศ™i anume โ€žStructuri de dateโ€, a รฎnlocuit valoarea โ€žCurs baza de dateโ€ dupฤƒ cum urmeazฤƒ:

  • Primele douฤƒ instrucศ›iuni de inserare funcศ›ioneazฤƒ bine, fฤƒrฤƒ probleme. Douฤƒ materii Algebrฤƒ ศ™i Curs de baze de date vor fi inserate cu id-urile 1, 2.
  • Atunci cรขnd SQLite รฎncearcฤƒ sฤƒ execute a treia instrucศ›iune de inserare cu SubjectId 2 ศ™i SubjectName โ€žStructuri de dateโ€, descoperฤƒ cฤƒ existฤƒ deja un subiect cu SubjectId = 2. Ceea ce reprezintฤƒ o รฎncฤƒlcare a constrรขngerii de cheie primarฤƒ definitฤƒ รฎn coloana SubjectId.
  • SQLite va alege o soluศ›ie REPLACE pentru acest conflict. รŽnlocuieศ™te valoarea care existฤƒ deja รฎn tabelul de subiecte cu noua valoare din instrucศ›iunea de inserare. Aศ™adar, Numele Subiectului din โ€žCurs Bazฤƒ de Dateโ€ va fi รฎnlocuit cu Numele Subiectului din โ€žStructuri de Dateโ€.

รŽntrebฤƒri frecvente

UPSERT combinฤƒ inserarea ศ™i actualizarea. Deoarece SQLite 3.24.0 (2018), INSERT INTO โ€ฆ ON CONFLICT(coloanฤƒ) DO UPDATE SET โ€ฆ insereazฤƒ un rรขnd nou sau รฎl actualizeazฤƒ pe cel existent atunci cรขnd apare un conflict UNIQUE sau PRIMARY KEY. DO NOTHING sare rรขndul รฎn mod silenศ›ios.

INSERT OR REPLACE ศ™terge rรขndul aflat รฎn conflict ศ™i insereazฤƒ unul nou, astfel รฎncรขt coloanele nelistate se reseteazฤƒ la valorile implicite. ON CONFLICT DO UPDATE editeazฤƒ rรขndul existent, pฤƒstreazฤƒ-l.ping celelalte coloane intacte, ceea ce o face adevฤƒrata suprapunere mai sigurฤƒ.

Enumeraศ›i mai multe grupuri de valori dupฤƒ VALUES, separate prin virgule: INSERT INTO Students (id, name) VALUES (1,'A'), (2,'B'), (3,'C');. Acest formular cu mai multe rรขnduri funcศ›ioneazฤƒ deoarece SQLite 3.7.11 ศ™i este mai rapid decรขt rularea unei singure instrucศ›iuni INSERT pe rรขnd.

Executaศ›i DELETE FROM nume_tabelฤƒ; fฤƒrฤƒ o clauzฤƒ WHERE. SQLite Nu are comanda TRUNCATE, dar aplicฤƒ o optimizare trunchiatฤƒ care eliminฤƒ toate rรขndurile simultan. Structura tabelului rฤƒmรขne; utilizaศ›i DROP TABLE pentru a elimina complet tabelul.

รŽntrucรขt SQLite 3.35.0 (2021), INSERT, UPDATE ศ™i DELETE acceptฤƒ o clauzฤƒ opศ›ionalฤƒ RETURNING care afiศ™eazฤƒ rรขndurile afectate. De exemplu, INSERT โ€ฆ RETURNING id; returneazฤƒ valorile generate imediat, evitรขnd o comandฤƒ SELECT separatฤƒ pentru a citi ce s-a modificat.

Foloseศ™te INSERT INTO โ€ฆ SELECT: INSERT INTO Archive (id, nume) SELECT id, nume FROM Studenศ›i WHERE IdDepartament = 4;. SQLite insereazฤƒ fiecare rรขnd returnat de comanda SELECT, deci ordinea ศ™i numฤƒrul coloanelor trebuie sฤƒ corespundฤƒ cu tabelul ศ›intฤƒ.

Da. Asistenศ›ii text-SQL cu inteligenศ›ฤƒ artificialฤƒ convertesc cererile รฎn limba englezฤƒ simplฤƒ รฎn SQLite Instrucศ›iunile INSERT, UPDATE ศ™i DELETE, inclusiv clauzele WHERE ศ™i ON CONFLICT. Furnizarea numelor tabelelor ศ™i coloanelor รฎmbunฤƒtฤƒศ›eศ™te precizia, iar fiecare instrucศ›iune generatฤƒ ar trebui revizuitฤƒ ศ™i testatฤƒ รฎnainte de a fi executatฤƒ pe date reale.

Copilotul GitHub sugereazฤƒ SQLite Interogฤƒri INSERT, UPDATE ศ™i DELETE inline รฎn editori precum VS CodeCiteศ™te schemele ศ™i comentariile din apropiere, astfel รฎncรขt completฤƒrile reutilizeazฤƒ numele reale ale tabelelor ศ™i coloanelor, dar ar trebui sฤƒ verificaศ›i fiecare instrucศ›iune รฎnainte de executare.

Rezumaศ›i aceastฤƒ postare cu: