sql >> Database teknologi >  >> RDS >> SQLite

SQLite REPLACE-sætning

Oversigt :i denne øvelse lærer du, hvordan du bruger SQLite REPLACE sætning for at indsætte eller erstatte den eksisterende række i en tabel.

Introduktion til SQLite REPLACE erklæring

Ideen med REPLACE sætning er, at når en UNIQUE eller PRIMARY KEY overtrædelse af begrænsninger, gør det følgende:

  • Først skal du slette den eksisterende række, der forårsager en overtrædelse af begrænsninger.
  • For det andet, indsæt en ny række.

I det andet trin, hvis en begrænsning overtræder, f.eks. NOT NULL begrænsning opstår, REPLACE erklæring vil afbryde handlingen og rulle transaktionen tilbage.

Det følgende illustrerer syntaksen for REPLACE erklæring.

INSERT OR REPLACE INTO table(column_list)
VALUES(value_list);Code language: SQL (Structured Query Language) (sql)

Eller i en kort form:

REPLACE INTO table(column_list)
VALUES(value_list);Code language: SQL (Structured Query Language) (sql)

Lad os tage et kig på nogle eksempler på brug af SQLite REPLACE erklæring for at forstå, hvordan det virker.

SQLite REPLACE udsagnseksempler

Først skal du oprette en ny tabel med navnet positions med følgende struktur.

CREATE TABLE IF NOT EXISTS positions (
	id INTEGER PRIMARY KEY,
	title TEXT NOT NULL,
	min_salary NUMERIC
);Code language: SQL (Structured Query Language) (sql)

Prøv det

For det andet, indsæt nogle rækker i positions tabel.

INSERT INTO positions (title, min_salary)
VALUES ('DBA', 120000),
       ('Developer', 100000),
       ('Architect', 150000);Code language: SQL (Structured Query Language) (sql)

Prøv det

For det tredje skal du bekræfte indsættelsen ved at bruge følgende SELECT erklæring.

SELECT * FROM positions;Code language: SQL (Structured Query Language) (sql)

Prøv det

Følgende sætning opretter et unikt indeks på title kolonne i positions tabel for at sikre, at den ikke har nogen dubleret positionstitel:

CREATE UNIQUE INDEX idx_positions_title 
ON positions (title);Code language: SQL (Structured Query Language) (sql)

Prøv det

Antag, at du vil tilføje en position til positions tabel, hvis den ikke findes, i tilfælde af at positionen eksisterer, skal du opdatere den nuværende.

Følgende REPLACE sætning indsætter en ny række i positions tabel, fordi positionstitlen Full Stack Developer er ikke i positions tabel.

REPLACE INTO positions (title, min_salary)
VALUES('Full Stack Developer', 140000);Code language: SQL (Structured Query Language) (sql)

Prøv det

Du kan bekræfte REPLACE handling ved hjælp af SELECT erklæring.

SELECT
	id,title,min_salary
FROM
	positions;Code language: SQL (Structured Query Language) (sql)

Prøv det

Se følgende erklæring.

REPLACE INTO positions (title, min_salary)
VALUES('DBA', 170000);
Code language: SQL (Structured Query Language) (sql)

Prøv det

Først kontrollerede SQLite koden UNIQUE begrænsning.

For det andet fordi denne erklæring overtrådte UNIQUE begrænsning ved at prøve at tilføje DBA titel, der allerede eksisterer, slettede SQLite den eksisterende række.

For det tredje indsatte SQLite en ny række med dataene leveret af REPLACE erklæring.

Bemærk, at REPLACE sætning betyder INSERT eller REPLACE , ikke INSERT eller UPDATE .

Se følgende erklæring.

REPLACE INTO positions (id, min_salary)
VALUES(2, 110000);Code language: SQL (Structured Query Language) (sql)

Prøv det

Hvad erklæringen forsøgte at gøre, er at opdatere min_salary for stillingen med id 2, som er udvikleren.

For det første eksisterer positionen med id 2 allerede, REPLACE statement fjerner det.

Derefter forsøgte SQLite at indsætte en ny række med to kolonner:( id , min_salary ). Det overtræder dog NOT NULL begrænsning af titelkolonnen. Derfor ruller SQLite transaktionen tilbage.

Hvis title kolonnen har ikke NOT NULL begrænsning, REPLACE sætning vil indsætte en ny række, hvis titelkolonnen er NULL .

I denne øvelse har vi vist dig, hvordan du bruger SQLite REPLACE sætning for at indsætte eller erstatte en række i en tabel.


  1. JDBC returnerer tomt resultatsæt

  2. Hvad skal jeg bruge for at køre SQL?

  3. PL/SQL Online MCQ Quiz

  4. Brug af Intel Optane Storage til SQL Server