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

Sådan opdaterer du eksisterende data med SQLite


Introduktion

Når først et stykke data kommer ind i en database, er det meget usandsynligt, at det forbliver statisk i hele sin tid brugt i en tabel. Data opdateres for at afspejle ændringer i systemer, de repræsenterer, for at forblive relevante og opdaterede. SQLite giver dig mulighed for at ændre værdierne i poster ved hjælp af UPDATE SQL-kommando.

UPDATE funktioner, der ligner INSERT (ved at du angiver kolonner og deres ønskede værdier) og DELETE (ved at du angiver de nødvendige kriterier for at målrette mod specifikke poster). Du er også i stand til at ændre data enten én efter én eller i bulk. I denne artikel vil vi dykke ned i, hvordan du bruger UPDATE effektivt at administrere dine data, der allerede er gemt i tabeller.



Brug af UPDATE for at ændre data

Den grundlæggende syntaks for UPDATE kommandoen ser sådan ud:

UPDATE my_tableSET        column1 = value1,        column2 = value2,WHERE        id = 1;

Den grundlæggende struktur involverer tre separate klausuler:

  • angivelse af en tabel, der skal handles på
  • angiver de kolonner, du ønsker at opdatere, samt deres nye værdier
  • definering af kriterier, SQLite skal evaluere for at bestemme, hvilke poster der skal matche

Mens du kan tildele værdier direkte til kolonner, som vi gjorde ovenfor, kan du også bruge kolonnelistens syntaks, som det ofte ses i INSERT kommandoer.

For eksempel kan vi ændre ovenstående eksempel til at se ud som følger:

UPDATE my_tableSET (column1, column2) =        (value1, value2)WHERE        id = 1;


Returnerende poster ændret af UPDATE kommando

Som standard viser SQLite ikke antallet af rækker, der er påvirket af en UPDATE udmelding. Men SQLite tilføjede RETURNING klausul modelleret efter PostgreSQL i version 3.35.0 . Denne klausul får kommandoerne til at returnere alle eller dele af de poster, der blev ændret.

Du kan bruge stjernen * symbol for at returnere alle kolonnerne i de ændrede rækker meget som en SELECT erklæring:

UPDATE my_tableSET        column1 = value1,        column2 = value2,WHERE        id = 1RETURNING *;

Derudover kan du også angive nøjagtige kolonner, som du er interesseret i at vise med/uden et alias ved hjælp af AS :

UPDATE my_tableSET        column1 = value1,        column2 = value2WHERE        id = 1RETURNING column1 AS 'first column';


Opdatering af poster baseret på værdier i en anden tabel

Opdatering af data baseret på nye eksterne data er en relativt strømlinet proces. Du skal blot angive tabellen, kolonnerne, nye værdier og målretningskriterierne.

Men med SQLite kan du også bruge UPDATE at betinget opdatere tabelværdier baseret på information i en anden tabel i din database. Den grundlæggende syntaks vil se nogenlunde sådan ud:

UPDATE table1SET table1.column1 =(    SELECT table2.column1    FROM table2    WHERE table1.column2 = table2.column2);

Her opdaterer vi direkte værdien af ​​column1 i table1 at være returneringen af ​​en SELECT underforespørgsel på table2 , men kun i rækker hvor column2 af table1 matcher column2 af table2 . FROM klausul angiver en forbindelse mellem de to tabeller og WHERE specificerer betingelserne.

Lad os som et eksempel antage, at vi har to tabeller kaldet book og author .

CREATE TABLE author (  id INTEGER PRIMARY KEY,   first_name TEXT,   last_name TEXT,   last_publication TEXT);CREATE TABLE book (    id INTEGER PRIMARY KEY,    author_id INT REFERENCES author.id    title TEXT,    publication_year INTEGER);INSERT INTO author (first_name, last_name)VALUES        ('Leo', 'Tolstoy'),        ('James', 'Joyce'),        ('Jean-Paul', 'Sarte');        INSERT INTO book (author_id, title, publication_year)VALUES        (1, 'Anna Karenina', '1877'),        (1, 'War and Peace', '1867'),        (2, 'Ulysses', '1920'),        (2, 'Dubliners', '1914'),        (3, 'Nausea', '1938');

Disse to tabeller har en relation til book.author_id med henvisning til author.id . I øjeblikket er last_publication for author tabellen er NULL . Vi kan udfylde den med forfatterens seneste udgivne bog i vores book tabel ved hjælp af FROM og WHERE klausuler for at bringe de to tabeller sammen.

Her viser vi et eksempel på opdatering af last_publication :

UPDATE author SET last_publication=(  SELECT title   FROM book   WHERE author_id = author.id  ORDER BY author_id, publication_year DESC);

Hvis du spørger author tabel nu, vil den vise dig titlen på deres seneste publikation i databasen:

SELECT * FROM author;
+------------+------------+-----------+--------------------------+      id       first_name  last_name      last_publication     +-------------+------------+-----------+--------------------------+       1       Leo          Tolstoy        Anna Karenina              2       James         Joyce             Ulysses                3       Jean-Paul     Sarte             Nausea          +-------------+------------+-----------+--------------------------+


Konklusion

I denne vejledning tog vi et kig på de grundlæggende måder, hvorpå du kan ændre eksisterende data i en tabel ved hjælp af UPDATE kommando. Udførelse af disse grundlæggende koncepter giver dig mulighed for at specificere de nøjagtige kriterier, der er nødvendige for at identificere de eksisterende rækker i en tabel, opdatere kolonnenavne med værdier og eventuelt returnere de rækker, der blev påvirket af RETURNING . UPDATE kommandoen er afgørende for at administrere dine data efter den første indsættelse i dine databaser.




  1. Kører PostgreSQL ved hjælp af Amazon RDS

  2. Hvordan kan jeg automatisere opgaven med at generere scripts i SQL Server Management Studio 2008?

  3. Hvordan får man den næste værdi af SQL Server-sekvens i Entity Framework?

  4. Dato i en URL dd/mm/åååå