Mysql-oppdatering er en kompleks oppdateringsforespørsel. Syntaks OPPDATERING. Eksempel på oppdatering av én kolonne



Innholdet i artikkelen
1. De enkleste MySQL-spørringene
2. Enkle SELECT-spørringer
3. Enkle INSERT (ny oppføring) spørringer
4. Enkle OPPDATERING (overskriv, legg til) spørringer
5. Enkle DELETE (slett post)-spørringer
6. Enkle DROP-spørringer (slett tabell).
7. Komplekse MySQL-spørringer
8. MySQL-spørringer og PHP-variabler

1. De enkleste SQL-spørringene

1. Viser en liste over ALLE databaser.

VIS databaser;
2. Viser ALLE tabeller i databasen base_name.

VIS tabeller i base_name;

2. Enkle SELECT-spørringer til MySQL-databasen

PLUKKE UT– en spørring som velger eksisterende data fra databasen. Du kan spesifisere spesifikke utvalgsparametere for valg. For eksempel høres essensen av forespørselen på russisk slik ut: VELG slike og slike kolonner FRA en slik og en tabell HVOR parameteren til en slik og en kolonne er lik verdien.

1. Velger ALLE data i tabellen tbl_name.

VELG * FRA tbl_name;
2. Viser antall poster i tabellen tbl_name.

SELECT count(*) FROM tbl_name;
3. Velger (SELECT) fra (FROM) tabellen tbl_name limit (LIMIT) 3 poster, med start fra 2.

VELG * FRA tbl_name LIMIT 2,3;
4. Velger (SELECT) ALL (*) poster fra (FROM) tabellen tbl_name og sorterer dem (ORDER BY) etter id-feltet i rekkefølge.

VELG * FRA tbl_name ORDER BY id;
5. Velger (SELECT) ALLE poster fra (FROM) tbl_name-tabellen og sorterer dem (ORDER BY) etter id-feltet i omvendt rekkefølge.

VELG * FRA tbl_name ORDER BY id DESC;
6. Velger ( PLUKKE UT) ALLE (*) poster fra ( FRA) tabeller brukere og sorterer dem ( REKKEFØLGE ETTER) på banen id i stigende rekkefølge, limit ( GRENSE) første 5 oppføringer.

VELG * FRA brukere BESTILL ETTER ID LIMIT 5;
7. Velger alle poster fra tabellen brukere, hvor er feltet fnavn tilsvarer verdien Gena.

SELECT * FRA brukere WHERE fname="Gena";
8. Velger alle poster fra tabellen brukere, hvor feltverdien fnavn starte med Ge.

SELECT * FRA brukere WHERE fname LIKE "Ge%";
9. Velger alle poster fra tabellen brukere, Hvor fnavn slutter med na, og sorterer postene i stigende rekkefølge etter verdi id.

VELG * FRA brukere HVOR fname LIKE "%na" ORDER BY id;
10. Velger alle data fra kolonner fnavn, lnavn fra bordet brukere.

SELECT fname, lname FRA brukere;

11. La oss si at du har et land i brukerdatatabellen. Så hvis du KUN vil vise en liste over forekommende verdier (slik at for eksempel Russland ikke vises 20 ganger, men bare én gang), bruker vi DISTINCT. Det vil bringe Russland, Ukraina, Hviterussland ut av massen av gjentatte verdier. Altså fra bordet brukere høyttalere land ALLE UNIKE verdier vil bli sendt ut

VELG DISTINKT land FRA brukere;
12. Velger ALLE raddata fra tabellen brukere Hvor alder har verdiene 18,19 og 21.

VELG * FRA brukere WHERE alder IN (18,19,21);
13. Velger MAKSIMUM-verdien alder i bordet brukere. Det vil si hvis du har den største verdien i tabellen din alder(fra engelsk alder) er 55, så vil søkeresultatet være 55.

VELG maks(alder) FRA brukere;
14. Velg data fra tabellen brukere etter felt Navn Og alder HVOR alder tar den minste verdien.

VELG navn, min(alder) FRA brukere;
15. Velg data fra tabellen brukere på banen Navn HVOR id IKKE LIK MED 2.

VELG navn FRA brukere WHERE id!="2";

3. Enkle INSERT (ny oppføring) spørringer

SETT INN– en spørring som lar deg i utgangspunktet sette inn en post i databasen. Det vil si at den oppretter en NY post (linje) i databasen.

1. Gjør Ny inngang i bordet brukere, i felt Navn setter inn Sergey, og i feltet alder setter inn 25. Dermed legges en ny rad med disse verdiene til i tabellen. Hvis det er flere kolonner, vil de resterende forbli enten tomme eller med standardverdier.

INSERT INTO brukere (navn, alder) VERDIER ("Sergey", "25");

4. Enkle UPDATE-spørringer til MySQL-databasen

OPPDATER– en spørring som lar deg RESERVERE feltverdier eller LEGG TIL noe i en allerede eksisterende rad i databasen. For eksempel er det en ferdig linje, men aldersparameteren må skrives om i den, siden den har endret seg over tid.

1. I tabellen brukere alder blir 18.

OPPDATER brukere SET age = "18" WHERE id = "3";
2. Alt er det samme som i den første forespørselen, den viser bare forespørselssyntaksen, der to eller flere felt overskrives.
I bordet brukere WHERE id er lik 3 feltverdi alder fyller 18 og land Russland.

OPPDATER brukere SET alder = "18", land = "Russland" WHERE id = "3";

5. Enkle DELETE (slett post)-spørringer til MySQL-databasen

SLETT– en spørring som sletter en rad fra en tabell.

1. Fjerner en rad fra tabellen brukere HVOR id tilsvarer 10.

SLETT FRA brukere WHERE id = "10";

6. Enkle DROP (slett tabell) spørringer til en MySQL database

MISTE– en spørring som sletter en tabell.

1. Sletter hele tabellen tbl_name.

SLIP TABELL tbl_name;

7. Komplekse spørringer til MySQL-databasen

Interessante spørsmål som kan være nyttige selv for erfarne brukere

VELG ID, navn, land FRA brukere, administratorer WHERE TO_DAYS(NOW()) - TO_DAYS(registration_date)<= 14 AND activation != "0" ORDER BY registration_date DESC;
Denne komplekse spørringen SELECTS kolonner id, navn, land I TABELLER brukere, administratorer HVOR Registreringsdato(dato) ikke eldre 14 dager jeg aktivering IKKE LIK 0 , Sorter etter Registreringsdato i omvendt rekkefølge (ny først).

OPPDATER brukere SET age = "18+" WHERE age = (VELG alder FRA brukere WHERE mann = "mann");
Ovenfor er et eksempel på den såkalte forespørsel i en forespørsel i SQL. Oppdater alder blant brukere til 18+, der kjønn er mann. Jeg anbefaler ikke slike forespørselsalternativer. Fra personlig erfaring vil jeg si at det er bedre å lage flere separate - de vil bli behandlet raskere.

8. MySQL- og PHP-databasespørringer

I MySQL-spørringer på en PHP-side kan du sette inn variabler som sammenlignet verdier, etc. Et par eksempler

1. Velger alle poster fra tabellen brukere, hvor er feltet fnavn tilsvarer verdien av variabelen $navn.

SELECT * FRA brukere WHERE fname="$name";
2. I tabellen brukere WHERE id er lik 3 feltverdi alder endringer i verdien av $age-variabelen.

OPPDATERT brukere SET age = "$age" WHERE id = "3";

Merk følgende! Hvis du er interessert i et annet eksempel, skriv et spørsmål i kommentarfeltet!

I denne opplæringen lærer du hvordan du bruker MySQL UPDATE-erklæring med syntaks og eksempler.

Beskrivelse

MySQL UPDATE-erklæring brukes til å oppdatere eksisterende poster i en tabell i databasen MySQL-data. Det er tre syntakser for UPDATE-setningen, avhengig av typen oppdatering du vil utføre.

Syntaks

En enkel form for syntaks for UPDATE-setningen når du oppdaterer en enkelt tabell i MySQL:

Nå er den fulle syntaksen for MySQL UPDATE-setningen når du oppdaterer en enkelt tabell:

ELLER
Syntaksen for UPDATE-setningen når du oppdaterer en tabell med data fra en annen tabell i MySQL er:

ELLER
MySQL-syntaksen for UPDATE-setningen ved oppdatering av flere tabeller er:

Parametere eller argumenter

LOW_PRIORITY – valgfritt. Hvis LOW_PRIORITY er spesifisert, vil oppdateringen bli forsinket til det ikke er noen prosesser som leser fra tabellen. LOW_PRIORITY kan brukes med MyISAM-, MEMORY- og MERGE-tabeller som bruker tabellnivålåsing.
IGNORER - valgfritt. Hvis IGNORER angis, ignoreres alle feil som oppstår under oppdateringen. Hvis en oppdatering på en rad vil bryte med en primærnøkkel eller unik indeks, vil oppdateringen på den raden mislykkes.
kolonne1, kolonne2 er kolonnene du vil oppdatere.
expression1 , expression2 - nye verdier for å tilordne kolonne1 , kolonne2 . Så kolonne1 er tildelt verdien av expression1 , column2 er tildelt verdien av expression2 , og så videre.
WHERE-forhold - valgfritt. Betingelser som må oppfylles for at oppdateringen skal skje.
ORDER BY uttrykk – valgfritt. Den kan brukes sammen med LIMIT for å sortere poster på riktig måte og samtidig begrense antallet poster som skal oppdateres.
LIMIT number_rows - valgfritt. Hvis LIMIT er spesifisert, kontrollerer den maksimalt antall poster som skal oppdateres i tabellen. Maksimalt antall poster spesifisert i number_rows-filen vil bli oppdatert i tabellen.

Eksempel på oppdatering av én kolonne

La oss se på et veldig enkelt eksempel på en MySQL UPDATE-spørring.

I dette MySQL-eksemplet oppdaterte UPDATE feltet etternavn til "Ford" i kundetabellen, der kunde_id = 500.

Eksempel på oppdatering av flere kolonner

La oss se på MySQL UPDATE-eksemplet, der du kan oppdatere mer enn én kolonne ved å bruke en enkelt UPDATE-setning.

Hvis du vil oppdatere flere kolonner, kan du gjøre det ved å skille kolonne-/verdiparene med kommaer.
Dette eksempelet på MySQL UPDATE-setningen oppdaterte tilstanden til "Nevada" og kunde_rep til 23, der kunde_id er større enn 200.

Eksempel på oppdatering av en tabell med data fra en annen tabell

La oss se på UPDATE-eksemplet, som viser hvordan du oppdaterer en tabell med data fra en annen tabell i MySQL.

MySQL

Dette OPPDATERING-eksemplet vil kun oppdatere kundetabellen for alle poster der kunde_id er større enn 5000. Når leverandørnavn fra leverandørtabellen samsvarer med kundenavn fra kundetabell, vil by fra leverandørtabell kopieres til byfeltet i kundetabellen.

Denne MySQL-opplæringen forklarer hvordan du bruker MySQL OPPDATERING erklæring med syntaks og eksempler.

Syntaks

I sin enkleste form er syntaksen for UPDATE-setningen ved oppdatering av en tabell i MySQL:

OPPDATERING tabell SET kolonne1 = uttrykk1, kolonne2 = uttrykk2, ... ;

Imidlertid er den fulle syntaksen for MySQL UPDATE-setningen ved oppdatering av en tabell:

OPPDATERING [ LOW_PRIORITY ] [ IGNORER ] tabell SET column1 = expression1, column2 = expression2, ... ] ;

Syntaksen for UPDATE-setningen når du oppdaterer en tabell med data fra en annen tabell i MySQL er:

OPPDATERING tabell1 SET kolonne1 = (VELG uttrykk1 FRA tabell2 WHERE-betingelser) ;

Syntaksen for MySQL UPDATE-setningen ved oppdatering av flere tabeller er:

OPPDATERING tabell1, tabell2, ... SET kolonne1 = uttrykk1, kolonne2 = uttrykk2, ... WHERE tabell1.kolonne = tabell2.kolonne OG betingelser;

Parametere eller argumenter

LOW_PRIORITY Valgfritt. Hvis LOW_PRIORITY er oppgitt, vil oppdateringen bli forsinket til det ikke er noen prosesser som leser fra bord. LOW_PRIORITY kan brukes med MyISAM, MEMORY og MERGE-tabeller som bruker tabellnivålåsing. IGNORER Valgfritt. Hvis IGNORER angis, ignoreres alle feil som oppstår under oppdateringen. Hvis en oppdatering på en rad vil resultere i et brudd på en primærnøkkel eller unik indeks, utføres ikke oppdateringen på den raden. kolonne1, kolonne2 Kolonnene du ønsker å oppdatere. expression1, expression2 De nye verdiene som skal tilordnes til kolonne 1, kolonne 2. Så kolonne 1 uttrykk1, kolonne 2 ville bli tildelt verdien av uttrykk2, og så videre. WHERE-forhold Valgfritt. Betingelsene som må være oppfylt for at oppdateringen skal utføres. ORDER BY uttrykk Valgfritt. Den kan brukes i kombinasjon med LIMIT for å sortere postene riktig når man begrenser antall poster som skal oppdateres. LIMIT number_rows Valgfritt. Hvis LIMIT er oppgitt, kontrollerer den maksimalt antall poster som skal oppdateres i tabellen. Høyst antall poster spesifisert av tall_rader vil bli oppdatert i tabellen.

Eksempel - Oppdater enkelt kolonne

La oss se på et veldig enkelt MySQL UPDATE-spørringseksempel.

OPPDATER kunder SET last_name = "Anderson" WHERE kunde_id = 5000;

Dette MySQL-OPPDATERING-eksemplet vil oppdatere etternavn til "Anderson" i kunder tabell hvor Kunde ID er 5000.

Eksempel - Oppdater flere kolonner

La oss se på et MySQL UPDATE-eksempel der du kanskje vil oppdatere mer enn én kolonne med en enkelt UPDATE-setning.

OPPDATER kunder SET state = "California", customer_rep = 32 WHERE customer_id > 100;

Når du ønsker å oppdatere flere kolonner, du kan gjør dette ved å skille kolonne/verdi-parene med kommaer.

stat til "California" og kunde_rep til 32 hvor Kunde ID er større enn 100.

Eksempel - Oppdater tabell med data fra en annen tabell

La oss se på et OPPDATERING-eksempel som viser hvordan du oppdaterer en tabell med data fra en annen tabell i MySQL.

OPPDATERT kunder
SET by = (VELG by
FRA leverandører
WHERE suppliers.supplier_name = customer.customer_name)
WHERE customer_id > 2000;

Dette OPPDATERING-eksemplet vil bare oppdatere kunder tabell for alle poster der Kunde ID er større enn 2000. Når leverandørnavn fra leverandører tabellen samsvarer med Kundenavn fra kunder bordet, den by fra leverandørtabellen vil bli kopiert til by feltet i kunder bord.

Eksempel - Oppdater flere tabeller

La oss se på et MySQL UPDATE-eksempel der du kanskje ønsker å utføre en oppdatering som involverer mer enn én tabell i en enkelt UPDATE-setning.

OPPDATER kunder, leverandører SET kunder.by = leverandører.by HVOR kunder.kunde_id = leverandører.leverandør_id;

Dette MySQL UPDATE-eksemplet vil oppdatere by feltet i kunder bordet til by fra leverandører tabell hvor Kunde ID samsvarer med leverandør_id.

Hvis vi trenger å endre eller oppdatere data i MySQL, kan vi bruke SQL UPDATE-kommandoen til å fungere. ,

grammatikk

Følgende er UPDATE-kommandoen for å endre MySQL Sheet Data Generell SQL-syntaks:

OPPDATERING tabellnavn SET felt1=ny-verdi1, felt2=ny-verdi2

  • Du kan oppdatere ett eller flere felt samtidig.
  • Du kan spesifisere hvilken som helst betingelse i WHERE-leddet.
  • Du kan også oppdatere data i en egen tabell.

Når du trenger å oppdatere dataene som er spesifisert i radene i en tabell, er INEKE veldig nyttig.

Kommandolinje for å oppdatere data

Nedenfor vil vi oppdatere w3big_tbl spesifisert i datatabellen ved hjelp av SQL-kommandoer OPPDATERING INEKE:

eksempler

Følgende eksempel vil oppdatere datatabellen som w3big_title w3big_id feltverdi 3:

# mysql -u root -p passord; Skriv inn passord:******* mysql> bruk w3big; Database endret mysql> OPPDATERING w3big_tbl -> SET w3big_title="Learning JAVA" -> WHERE w3big_id=3; Query OK, 1 row affected (0.04 sec) Rows matched: 1 Changed: 1 Warnings: 0 mysql> !}

Bruk PHP-skript for å oppdatere data

PHP-funksjon for å bruke mysql_query() til å utføre SQL-setninger, kan du bruke UPDATE SQL-setningen eller INEKE gjelder ikke.

Denne funksjonen i MySQL> kommandolinje effekten av å utføre SQL-setninger er den samme.

eksempler

Følgende eksempel vil oppdatere w3big_id-dataene i w3big_title 3-feltet.

OPPDATERING syntaks

Enkelttabellsyntaks:
OPPDATER shya_tabletsh
SETT kolonnenavn1=uttrykk1 [, Navn_ kolonne2=uttrykk2 ...]


Syntaks for flere tabeller:

OPPDATERING tabellnavn [, tabellnavn...] SET kolonnenavn 1=uttrykk1 [,kolonnenavn2=uttrykk2...]
UPDATE-setningen oppdaterer kolonnene i eksisterende tabellrader med nye verdier. SET-klausulen viser kolonnene som skal endres og verdiene som skal tildeles dem. Hvis WHERE-leddet er spesifisert, spesifiserer det hvilke rader som skal oppdateres. Ellers oppdateres alle rader i tabellen. Hvis ORDER BY-klausulen er spesifisert, vil radene bli oppdatert i den angitte rekkefølgen. LIMIT-konstruksjonen setter en grense på antall rader som skal oppdateres.
UPDATE-setningen støtter følgende modifikatorer:

  1. Hvis nøkkelordet LOW_PRIORITY er spesifisert, forsinkes OPPDATERING til alle andre klienter er ferdige med å lese tabellen.
  2. Hvis IGNORE-nøkkelordet er spesifisert, vil ikke oppdateringsoperasjonen mislykkes selv om duplikatnøkkelfeil oppstår. Rader som forårsaker konflikter vil ikke bli oppdatert.

Hvis du bruker kolonner fra en tabell tabellnavn i uttrykk bruker UPDATE gjeldende verdi av kolonnene. For eksempel, neste uttalelseøker alderskolonnen med én:
mysql> OPPDATER persondata SET age=age+l;
Oppgaver i UPDATE gjøres fra venstre mot høyre. For eksempel dobler følgende setning verdien av alderskolonnen og øker den deretter med én: mysql> OPPDATER persondata SET alder=alder*2, alder=alder+l;
Hvis du setter verdien på en kolonne til hva den er, oppdager MySQL dette og oppdaterer ikke.
Hvis du oppdaterer en kolonne som har blitt erklært IKKE null til NULL, settes den til standardverdien som passer for den bestemte datatypen og øker advarselstelleren med én. Standardverdien er 0 for numeriske kolonner, den tomme strengen ("") for tegnkolonner og "null" for dato- og klokkeslettkolonner.
UPDATE returnerer antall rader som faktisk ble oppdatert. I MySQL 3.22 og nyere, funksjonen mysql_info(). programvaregrensesnitt MED API returnerer antall rader som samsvarte med spørringen og ble oppdatert, og antall advarsler som oppstod under OPPDATERING.
Fra og med MySQL 3.23 kan du bruke limit antall linjer for å begrense omfanget av OPPDATERING.
LIMIT-konstruksjonen fungerer som følger:

  1. Før MySQL 4.0.13 var LIMIT en grense på antall rader som ble behandlet. Operatøren gikk ut så snart den ble oppdatert antall linjer rader som tilfredsstilte WHERE-betingelsen.
  2. Siden MySQL 4.0.13 er limit grensen for strengmatching. Operatøren går ut så snart den finner det antall linjer rader som tilfredsstiller WHERE-betingelsen, uavhengig av om de faktisk ble oppdatert.

Hvis UPDATE-setningen inkluderer en orden etter klausul, oppdateres radene i den rekkefølgen som er spesifisert i denne klausulen. ORDER BY kan brukes fra og med MySQL 4.0.0.
Siden MySQL 4.0.0 er det også mulig å utføre OPPDATERINGSoperasjoner som opererer på flere tabeller samtidig:
OPPDATER varer, måned SET items.price=month.price WHERE items.id-month. id/ Dette eksemplet demonstrerer en indre sammenføyning ved hjelp av kommaoperatoren, men multi-tabell OPPDATERINGER kan bruke alle sammenføyningstyper som er tillatt i SELECT-setning, for eksempel, LEFT JOIN.
På en lapp!

  • Du kan ikke bruke ORDER BY eller LIMIT i multi-table UPDATE-setninger.
Før MySQL 4.0.18 var det nødvendig å ha UPDATE-rettigheter på alle tabeller som ble brukt i en multi-table UPDATE, selv om de faktisk ikke ble oppdatert. Fra og med MySQL 4.0.18 trenger slike tabeller hvis kolonner kun leses, men ikke oppdateres, bare ha SELECT-privilegiet.
Hvis du bruker en UPDATE-setning for flere tabeller på InnoDB-tabeller som har fremmednøkkelbegrensninger definert, kan MySQL-optimalisatoren behandle dem i en annen rekkefølge enn den som er spesifisert av deres foreldre-underordnede relasjoner. I dette tilfellet vil erklæringen mislykkes, og transaksjonen vil bli rullet tilbake. Oppdater i stedet en enkelt tabell og stol på egenskapen ON UPDATE, som gir InnoDB-motoren for automatisk oppdatering relaterte tabeller.


Topp