SQLite INSERT, UPDATE, DELETE Query met voorbeeld

De gegevenswijzigingsclausules in SQLite zijn INSERT-, UPDATE- en DELETE-instructies. Het wordt gebruikt voor het invoegen van nieuwe rijen, het bijwerken van bestaande waarden of het verwijderen van rijen uit de database.

Merk op dat, voor al het vervolgwing voorbeelden, je moet de sqlite3.exe en open een verbinding met de voorbeelddatabase als flowing:

Stap 1) In deze stap,

  1. Open Deze computer en navigeer naar het volgendewing map “C: \sqlite"En
  2. Open vervolgens “sqlite3.exe"

SQLite Zoekopdracht - INVOEGEN, BIJWERKEN, VERWIJDEREN

Stap 2) Open de databank “ZelfstudiesSampleDB.db'door de volgendewing opdracht:

.open TutorialsSampleDB.db

SQLite Zoekopdracht - INVOEGEN, BIJWERKEN, VERWIJDEREN

Nu bent u klaar om elk type query op de database uit te voeren.

SQLite INSERT

SQLite INSERT wordt gebruikt om records in een opgegeven tabel van de database in te voegen. u moet de clausule 'INSERT' gebruiken. De syntaxis van de INSERT-clausule is als volgt:

SQLite INSERT

  • Na de INSERT-clausule moet u aangeven in welke tabel u de waarden moet invoegen.
  • Na de tabelnaam schrijft u de lijst met kolommen waarin u de waarden wilt invoegen.
  • U kunt de kolomnaam negeren en er niet naar schrijven.
  • Als u de naam van de kolom niet opgeeft, worden de waarden in dezelfde volgorde ingevoegd in alle kolommen in de tabel. De kolommen zijn gedefinieerd in de tabel.
  • Na de VALUES-clausule moet u de waarden vermelden die moeten worden ingevoegd.
  • Elke INSERT-clausule voegt slechts één rij in. Als u meerdere rijen wilt invoegen, moet u meerdere INSERT-clausules schrijven, één voor elke rij.

SQLite Voorbeeld invoegen

In het vervolgwing We voegen bijvoorbeeld twee rijen in de studententabel in, één voor elke student:

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

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

Dit zou met succes moeten worden uitgevoerd en er is geen uitvoer hiervoor:

SQLite Invoegen

Hierdoor worden twee studenten ingevoegd:

  • De eerste student met StudentId=11, StudentName = Ahmad, DepartmentId = 4 en DateOfBirth = 1997-10-12.
  • De tweede student met StudentId=12, StudentName = Aly, DepartmentId = 4 en DateOfBirth = 1996-10-12′.

In de eerste verklaring hebben we de kolomnamen vermeld “StudentId, StudentName, AfdelingsId, Geboortedatum“In de tweede verklaring deden we dat echter niet.

De vier waarden “12, 'Aly', 4, '1996-10-12'” wordt ingevoegd in alle vier de kolommen van de tabel Studenten, in dezelfde volgorde waarin de kolommen zijn gedefinieerd.

Laten we nu verifiëren dat de twee studenten in de tabel Studenten zijn ingevoegd door de opdracht following vraag:

SELECT * FROM Students;

Dan zou je de twee studenten als volgt moeten zien terugkomen van die vraagwing:

SQLite Invoegen

SQLite bijwerken

SQLite UPDATE Query wordt gebruikt om de bestaande records in een tabel te wijzigen. U kunt de WHERE-clausule met UPDATE-query gebruiken om geselecteerde rijen bij te werken. De UPDATE-clausule werkt een tabel bij door een waarde voor een specifieke kolom te wijzigen. De volgendewing is de syntaxis van de UPDATE-clausule:

SQLite bijwerken

Als vervolgwing:

  • Na de “update-clausule” moet u de tabelnaam schrijven die u wilt bijwerken.
  • U moet een “SET-clausule” schrijven die wordt gebruikt om de kolomnaam te schrijven die moet worden bijgewerkt en de waarde die moet worden bijgewerkt.
  • U kunt meer dan één kolom bijwerken. Tussen elke regel kunt u een komma plaatsen.
  • U kunt een WHERE-clausule opgeven om slechts enkele rijen op te geven. Alleen de rijen die door de expressie als waar worden geëvalueerd, worden bijgewerkt. Als u geen WHERE-clausule heeft opgegeven, worden alle rijen bijgewerkt.

SQLite Voorbeeld bijwerken

In het vervolgwing UPDATE-instructie, zullen we de DepartmentId voor de Student met StudentId = 6 bijwerken naar 3:

UPDATE Students
SET DepartmentId = 3 
WHERE StudentId = 6;

Dit zou met succes moeten worden uitgevoerd en u zou geen uitvoer moeten krijgen:

SQLite bijwerken

In de UPDATE-clausule hebben we aangegeven dat we de tabel Studenten willen bijwerken.

  • In de WHERE-clausule hebben we alle studenten gefilterd om alleen de rij voor StudentId = 6 te selecteren.
  • De SET-clausule zal de waarde van de Afdelings-ID voor de geselecteerde studenten bijwerken naar 3.

Laten we nu verifiëren dat de leerling met ID 6 is bijgewerkt door het volgende voorbeeld uit te voeren:wing opdracht:

SELECT * FROM Students WHERE StudentId = 6;

U zou nu moeten zien dat de afdelings-ID-waarde nu 3 is, zoals volgtwing:

SQLite bijwerken

SQLite Verwijder

SQLite DELETE-query wordt gebruikt om bestaande records uit een opgegeven tabel te verwijderen. U kunt de WHERE-clausule gebruiken met DELETE-query's om de geselecteerde rijen te verwijderen.

DELETE-clausule heeft de following syntaxis:

SQLite Verwijder

  • U moet een tabelnaam schrijven na de DELETE FROM-clausule waaruit u records wilt verwijderen. (Opmerking: dat de DELETE-clausule wordt gebruikt om enkele records uit een tabel te verwijderen of om alle records te verwijderen, maar de tabel zelf wordt niet verwijderd. echter, de DROP-clausule wordt gebruikt om de hele tabel met alle records erop te verwijderen.)
  • Als u de DELETE-clausule zo schrijft: “DELETE FROM guru”, worden alle records uit de tabel “guru” verwijderd.
  • U kunt een WHERE-voorwaarde opgeven met een expressie als u enkele specifieke rijen wilt verwijderen. Alleen de rijen waarvoor de expressie als waar wordt geëvalueerd, worden verwijderd. Bijvoorbeeld: “DELETE FROM guru WHERE id > 5” – dit zal alleen de records verwijderen die een id groter dan 5 hebben.

Voorbeeld

In het vervolgwing verklaring verwijderen we twee studenten met StudentId 11 en 12:

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

De uitdrukking "StudentId = 11 OF StudentId = 12” geldt alleen voor studenten met ID 11 en 12. De DELETE-clausule wordt dus op beide toegepast en verwijdert alleen deze studenten.

Deze opdracht zou met succes moeten worden uitgevoerd en u zou geen uitvoer moeten krijgen zoals volgtwing:

SQLite Verwijder

U kunt verifiëren dat de twee studenten zijn verwijderd door als volgt alle records uit de tabel Studenten te selecterenwing:

SELECT * FROM Students;

Je moet de twee leerlingen met ID 11 en 12 niet als volgt zien:

SQLite Verwijder

SQLite Conflictclausule

Stel dat u een kolom heeft met een van de volgende following kolombeperkingen: UNIQUE, NOT NULL, CHECK of PRIMARY KEY. En vervolgens probeerde u een waarde in die kolom in te voegen of bij te werken met een waarde die in strijd is met deze beperking.

Als een kolom bijvoorbeeld een UNIEK-beperking heeft en u probeert een waarde in te voegen die al bestaat (een dubbele waarde), wat in strijd is met de UNIEK-beperking. Vervolgens kunt u met de CONFLICT-clausule kiezen wat u in dergelijke gevallen moet doen om dit conflict op te lossen.

Voordat we verder gaan met uitleggen hoe de CONFLICT-clausule het conflict oplost. U moet begrijpen wat een databasetransactie is.

Database-transactie

De term databasetransactie is een lijst van SQLite opera(invoegen, bijwerken of verwijderen). De databasetransactie moet als één eenheid worden uitgevoerd, ofwel als geheel operamet succes of helemaal niet uitgevoerd. Al de operaacties worden geannuleerd als een van deze niet kan worden uitgevoerd.

Voorbeeld voor een databasetransactie

De transactie voor het overboeken van geld van de ene bankrekening naar de andere omvat een aantal activiteiten. Deze transactie operaDit omvat het opnemen van geld van de eerste rekening en het storten ervan op een andere rekening. Deze transactie moet volledig worden voltooid of volledig worden geannuleerd en mag niet halverwege mislukken.

Hier is de lijst met vijf resoluties die u kunt kiezen in de CONFLICT-clausule:

  1. TERUGROLLEN – hierdoor wordt de transactie teruggedraaid waarin de huidige SQLite verklaring die het conflict bevat (het zal de hele transactie annuleren). Als u bijvoorbeeld tien rijen probeert bij te werken en de vijfde rij een waarde heeft die in strijd is met een beperking, worden er geen rijen bijgewerkt en blijven de tien rijen hetzelfde. Er wordt een fout gegenereerd.
  2. AFBREKEN – hierdoor wordt de stroom afgebroken (annuleert). SQLite alleen de verklaring die het conflict bevat en de transactie wordt niet geannuleerd. Als u bijvoorbeeld tien rijen probeert bij te werken en de vijfde rij een waarde heeft die in strijd is met een beperking, wordt alleen de vijfde waarde niet bijgewerkt, maar worden de overige negen rijen wel bijgewerkt. Er wordt een fout gegenereerd.
  3. MISLUKKING - breekt de stroom af SQLite verklaring die het conflict bevat. De transactie gaat echter niet door, maar de eerdere wijzigingen die zijn aangebracht in rijen voorafgaand aan de rij met het conflict worden doorgevoerd. Als u bijvoorbeeld tien rijen probeert bij te werken en de vijfde rij een waarde heeft die in strijd is met een beperking, worden alleen de vier rijen bijgewerkt en de andere niet. Er wordt een fout gegenereerd.
  1. NEGEREN – hierdoor wordt de rij overgeslagen die de schending van de beperking bevat en wordt de andere vervolgstap voortgezetwing rijen van de SQLite stelling. Als u bijvoorbeeld tien rijen probeert bij te werken en de vijfde rij een waarde heeft die in strijd is met een beperking, worden alleen de vier rijen bijgewerkt en de andere niet. Er wordt niet verder gegaan met het bijwerken van andere rijen en het stoppen bij de rij met de conflictwaarde. Er wordt geen fout gegenereerd.
  1. VERVANGEN – het hangt af van het type beperking waarbij de overtreding plaatsvindt:
  • Wanneer er sprake is van een beperkingsovertreding voor de UNIEKE of PRIMAIRE SLEUTELbeperking. De REPLACE vervangt de rij die de overtreding veroorzaakt door de nieuwe ingevoegde of bijgewerkte rij.
  • Als er sprake is van een overtreding van de NOT NULL-beperking, vervangt de REPLACE-clausule de NULL-waarde door de standaardwaarde van die kolom. Als de kolom geen standaardwaarde heeft, dan SQLite zal de afrekening afbreken (afrekening wordt geannuleerd)
  • ALS de CHECK-beperking wordt overtreden, wordt de clausule afgebroken.

Opmerking: De bovenstaande 5 resoluties zijn opties voor hoe u het conflict wilt oplossen. Het hoeft niet noodzakelijkerwijs zo te zijn dat wat van toepassing is om het ene conflict op te lossen, ook van toepassing is op het oplossen van andere soorten conflicten.

Hoe u de CONFLICT-clausule declareert

U kunt de clausule ON CONFLICT declareren wanneer u een beperking definieert voor een kolomdefinitie binnen de clausule CREATE TABLE. Met behulp van de volgendewing syntaxis:

SQLite Conflictclausule

U kunt één van de vijf resoluties kiezen om het conflict op te lossen, zoals eerder uitgelegd.

BIJ CONFLICTEN NEGEER Voorbeeld

Stap 1) Maak als volgt een nieuw tabelonderwerp:

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

Merk op dat we een PRIMARY KEY-beperking hebben gedefinieerd voor de kolom SubjectId. De beperking van de primaire sleutel staat niet toe dat er twee dubbele waarden in de kolom SubjectId worden ingevoegd, zodat alle waarden in die kolom uniek moeten zijn. Merk ook op dat we een conflictoplossing kiezen als “NEGEREN'.

De opdracht zou succesvol moeten worden uitgevoerd en u zou geen fouten moeten krijgen:

BIJ CONFLICTEN NEGEER Voorbeeld

Stap 2) Laten we nu enkele waarden in de nieuwe tabelonderwerpen invoegen, maar met een waarde die de primaire sleutelbeperking schendt:

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');

In deze INSERT-instructie hebben we geprobeerd twee cursussen in te voegen met dezelfde Primary Key Subject ID 2, wat in strijd is met de beperking van de primaire sleutel.

De opdrachten zouden goed moeten werken en u zou geen fouten moeten krijgen. Als vervolgwing:

BIJ CONFLICTEN NEGEER Voorbeeld

Stap 3) Selecteer als volgt alle onderwerpen uit de tabel:

SELECT * FROM Subjects;

Dit geeft je de lijst met onderwerpen:

BIJ CONFLICTEN NEGEER Voorbeeld

Merk op dat er slechts drie onderwerpen zijn ingevoegd “Algebra, databasecursus en Algorithms” in plaats van 4 rijen.

De rij met de waarde die in strijd is met de beperking van de primaire sleutel, namelijk 'Gegevensstructuren', is genegeerd en niet ingevoegd. Echter, SQLite gaat door met het uitvoeren van andere instructies na die rij.

Stap 4) VERWIJDER de tabelonderwerpen om deze opnieuw te maken met een andere ON CONFLICT-clausule voor de following bijvoorbeeld door het uitvoeren van de following opdracht:

DROP TABLE Subjects;

Met het drop-commando wordt de hele tabel verwijderd. Tabelonderwerpen bestaan ​​nu niet.

BIJ CONFLICT VERVANGEN Voorbeeld

Stap 1) Maak als volgt een nieuw tabelonderwerp:

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

Merk op dat we een PRIMARY KEY-beperking hebben gedefinieerd voor de kolom SubjectId. De beperking van de primaire sleutel staat niet toe dat er twee dubbele waarden in de kolom SubjectId worden ingevoegd, zodat alle waarden in die kolom uniek moeten zijn.

Merk ook op dat we een optie voor conflictoplossing kiezen als “VERVANGEN“. De opdracht zou succesvol moeten worden uitgevoerd en u zou geen fouten moeten krijgen:

BIJ CONFLICT VERVANGEN Voorbeeld

Stap 2) Laten we nu enkele waarden in de nieuwe tabel Onderwerpen invoegen, maar met een waarde die de primaire sleutelbeperking schendt:

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');

In deze INSERT-instructie hebben we geprobeerd twee cursussen in te voegen met dezelfde Primary Key Subject ID 2, wat in strijd is met de beperking van de primaire sleutel.

De opdrachten zouden goed moeten werken en u zou geen fouten moeten krijgen. Als vervolgwing:

BIJ CONFLICT VERVANGEN Voorbeeld

Stap 3) Selecteer als volgt alle onderwerpen uit de tabel:

SELECT * FROM Subjects;

Dit geeft je de lijst met onderwerpen:

BIJ CONFLICT VERVANGEN Voorbeeld

Merk op dat er slechts drie onderwerpen zijn ingevoegd “Algebra, datastructuren, en Algorithms'terwijl we probeerden vier rijen in te voegen.

De rij met de waarde die de primaire sleutelbeperking schendt, namelijk 'Data structuren” verving de waarde “Databasecursus”als volgtwing:

  • De eerste twee insert-instructies werken prima en zonder problemen. Er worden twee vakken Algebra en Databasecursus ingevoegd met ID's 1, 2.
  • . SQLite probeert de derde insert-instructie uit te voeren met SubjectId 2 en SubjectName “Data structuren“, komt het erachter dat er al een onderwerp is met SubjectId = 2. Dat is een overtreding van de primaire sleutelbeperking die is gedefinieerd in de kolom SubjectId.
  • SQLite zal een VERVANGENDE resolutie voor dit conflict kiezen. Het vervangt de waarde die al bestaat in de onderwerpentabel door de nieuwe waarde uit de insert-instructie. Dus de "Databasecursus'Onderwerpnaam wordt vervangen door'Data structuren" Onderwerp.

Samengevat

INSERT-, UPDATE- en DELETE-clausules worden gebruikt om de gegevens in de SQLite databank. De CONFLICT-clausule is een krachtige clausule om elk conflict tussen de gegevens en de gegevens die moeten worden gewijzigd op te lossen.