mysql insert into table insert statement syntax examples
Denne vejledning forklarer MYSQL INSERT INTO tabelerklæringen sammen med Query Syntax & eksempler. Lær også forskellige variationer af MYSQL Insert Command:
I MySQL bruges INSERT-kommandoen til at føje data til tabellen. Ved hjælp af denne kommando kan vi indsætte data i en eller flere end en række i en enkelt transaktion. Data kan også føjes til en eller flere end en tabel i en enkelt transaktion.
Vi gennemgår alle disse i de kommende sektioner. Før du fortsætter, skal du være opmærksom på, at vi bruger MySQL version 8.0. Du kan downloade det fra her .
Hvad du lærer:
- MySQL INSERT Kommandosyntaks
- MySQL INSERT Statement Variations
- Ofte stillede spørgsmål og svar
- Konklusion
MySQL INSERT Kommandosyntaks
INSERT (LOW_PRIORITY|DELAYED|HIGH_PRIORITY)(IGNORE) INTO tablename (column1, column2, column3...) VALUES (value1, value2, value3, ....);
Syntaks Forklaring:
- Syntaksen starter med nøgleordet “INSERT INTO” og informerer derved MySQL-serveren om typen af aktivitet, der skal udføres. Dette er et obligatorisk nøgleord og kan ikke udelades.
- Derefter kommer navnet på den tabel, som indsættelsen skal udføres på. Dette er obligatorisk og kan heller ikke udelades.
- Dernæst er kolonnenavnene, der skal indsættes sammen med deres tilsvarende værdier. Igen er dette også obligatorisk og kan ikke udelades.
- Dernæst bliver værdiklausulen. I denne klausul skal man angive værdien for hver kolonne, som vi indsætter i tabellen. Rækkefølgen af værdier og rækkefølgen af kolonnenavne skal være synkroniseret.
- Antallet og datatyperne af kolonner skal være det samme som værdierne.
Modifikatorer i INSERT-erklæring
- LAV PRIORITET: Denne modifikator informerer MySQL-motoren om at udskyde udførelsen af INSERT-erklæringen indtil et sådant tidspunkt, at der ikke er nogen forbindelse med at læse fra tabellen, som vi forsøger at INDSÆTTE. Dette hjælper med at opnå konsistens på tværs af alle andre operationer, der udføres på bordet.
- HØJ PRIORITET: Denne modifikator informerer MySQL-motoren om at prioritere INSERT-sætningen højt over enhver anden erklæring / transaktion der udføres på bordet.
- IGNORERE: Denne modifikator informerer MySQL Engine om at ignorere eventuelle fejl, der kan opstå på grund af udførelsen af INSERT-sætningen. Eventuelle fejl, der opstår, vil blive behandlet som blotte advarsler og indsættelse af poster i tabellen vil fortsætte uhindret.
- FORSINKET: Dette er MySQL-udvidelsen til standard SQL. Når INSERT DELAYED udstedes af brugeren, sætter serveren alle rækkerne i kø, og dataene indsættes i tabellen på et senere tidspunkt, når tabellen ikke bruges af andre transaktioner.
MySQL INSERT Eksempel
Følgende er en eksempeltabel oprettet i MySQL.
Skema navn: pacific
Tabelnavn: medarbejdere
Kolonne navne:
- empNum - Indeholder heltalværdier for medarbejdernummeret.
- lastName - Indeholder varchar-værdier for medarbejderens efternavn.
- fornavn - Indeholder varchar-værdier for medarbejderens fornavn.
- e-mail - Indeholder varchar-værdier for medarbejderens e-mail-id.
- deptNum - Indeholder varchar for det afdelings-id, som en medarbejder tilhører.
- løn - Indeholder decimalværdier af lønnen for hver medarbejder.
- start_date - Indeholder datoværdier for medarbejderens tiltrædelsesdato.
Skema navn: pacific
Tabelnavn: medarbejdere_historie
Kolonne navne:
- empNum - Indeholder heltalværdier for medarbejdernummeret.
- lastName - Indeholder varchar-værdier for medarbejderens efternavn.
- fornavn - Indeholder varchar-værdier for medarbejderens fornavn.
- e-mail - Indeholder varchar-værdier for medarbejderens e-mail-id.
- deptNum - Indeholder varchar for det afdelings-id, som en medarbejder tilhører.
- løn - Indeholder decimalværdier af løn for hver medarbejder.
- start_date - Indeholder datoværdier for medarbejderens tiltrædelsesdato.
MySQL INSERT Statement Variations
# 1) MySQL Indsæt en enkelt række
Først skal vi se på et scenarie, hvor vi har specificeret både kolonnenavnene og de værdier, der skal indsættes ved hjælp af INSERT INTO-nøgleordet.
For eksempel, Her vil vi prøve at indsætte en ny medarbejder. Vi tilføjer medarbejdernummeret, for- og efternavn, sammen med det opdaterer vi også e-mail-id'et, løn og afdeling-id, som den nye medarbejder skal tilhøre.
Forespørgslen og de tilsvarende resultater er som følger:
Som vist i billedet ovenfor har INSERT-erklæringen udført med succes og indsat en række i medarbejderens tabel.
Output-sætningen nedenfor viser det tidspunkt, hvor erklæringen blev udført, den MySQL-sætning, der blev udført, og antallet af rækker, der blev berørt.
Vær opmærksom her, at værdien for hver søjle er nævnt i samme rækkefølge som for søjlenavnene. Bemærk også, at søjlen med datatypen heltal / decimal ikke er lukket i inverterede kommaer, men søjletyperne med datatypen varchar / char er lukket med inverterede kommaer.
For at verificere output fra denne INSERT-sætning, lad os udføre SELECT-sætningen på denne tabel med empNum som 1012.
Forespørgsel:
INSERT INTO employees ( empNum, lastName, firstName, email, deptNum, salary ) VALUES ( 1012, 'Luther', 'Martin', 'ml@gmail.com', 3, 13000 ) ;
Tabelbillede efter:
empNum | efternavn | fornavn | deptNum | Løn | ||
---|---|---|---|---|---|---|
1007 | Schmitt | James | js@gmail.com | 4 | 21780 | 0001-01-01 |
1012 | Luther | Martin | ml@gmail.com | 3 | 13000 |
# 2) MySQL indsætter kun data i en specificeret kolonne
Dernæst er en anden måde at indsætte data i en tabel på, men ved kun at indsætte poster i de krævede kolonner og ikke i alle kolonnerne. Bemærk dog, at vi ikke kan udelade nøglekolonnerne i dette scenarie. I tilfælde af vores medarbejders tabel er nøglekolonnen empNum-kolonnen. Lad os prøve det.
For eksempel, Vi indsætter en ny post i medarbejdertabellen med data om bare empNum, efternavn, fornavn. Vi tildeler ikke noget e-mail-id, afdeling eller løn til denne medarbejder.
Følgende er forespørgslen og dens resultat:
Som vist på billedet ovenfor har indsætningserklæringen udført med succes og indsat en række i medarbejderens tabel.
indsættelses sorteringsalgoritme c ++
Bemærk venligst, at for kun at indsætte de valgte kolonner, skal de kolonner, som vi sprang over, enten erklæres NULL eller skulle have en standardværdi, der udfyldes, hvis denne kolonne springes over. Hvis denne betingelse ikke er opfyldt, mislykkes indsætningserklæringen.
Lad os kontrollere udførelsen af ovenstående INSERT-sætning ved at udføre en SELECT-sætning for empNum = 1013.
Forespørgsel:
INSERT INTO employees ( empNum, lastName, firstName ) VALUES ( 1013, 'Nolan', 'Chris' ) ;
Tabelbillede efter:
empNum | efternavn | fornavn | deptNum | Løn | |
---|---|---|---|---|---|
1013 | Nolan | Chris | NUL | NUL | NUL |
# 3) MySQL indsæt flere rækker
Dernæst gennemgår vi scenariet, hvor vi skal indsætte flere rækker i tabellen med den samme INSERT-sætning.
For eksempel, i dette tilfælde skal vi kun nævne kolonnenavnene én gang, men vi kan fortsætte med at gentage værdierne for disse kolonner så mange gange som nødvendigt.
Følgende er forespørgslen sammen med de resultater, der er knyttet til den:
Som afbildet på billedet ovenfor lykkedes udførelsen af erklæringen.
Overhold meddelelsesdelen, der siger, at 3 rækker var berørt, dette indebærer, at denne enkelt INSERT-sætning indsatte 3 poster med udførelsen af denne INSERT-sætning.
Yderligere læsning = >> MySQL If Statement Tutorial
Lad os kontrollere output fra vores INSERT-sætning ved at udføre SELECT-sætningen for nye medarbejder-id'er 1014, 1015 og 1016.
Detaljerne er som følger:
Forespørgsel:
INSERT INTO employees ( empNum, lastName, firstName, email, deptNum, salary ) VALUES (1014, 'Murray', 'Keith', 'km@gmail.com', 1, 25000), (1015, 'Branson', 'John', 'jb@gmail.com', 2, 15000), (1016, 'Martin', 'Richard', 'rm@gmail.com', 4, 5000) ;
Tabelbillede efter:
empNum | efternavn | fornavn | deptNum | Løn | |
---|---|---|---|---|---|
1014 | Murray | Keith | km@gmail.com | en | 25000 |
1015 | Branson | John | jb@gmail.com | to | 15000 |
1016 | Martin | Richard | rm@gmail.com | 4 | 5000 |
# 4) MySQL indsætter dato
Dernæst gennemgår vi scenariet, hvor vi skal indsætte værdier i datakolonnen.
For eksempel, At indsætte værdier i datakolonnen kan være vanskelig. Datoen i MySQL kunne føjes til formatet 'ÅÅÅÅ-MM-DD'. For at opnå dette, lad os tilføje en kolonne startdato med standardværdien som '0001-01-01'.
Dette indebærer, at alle eksisterende poster i medarbejderens tabel med startdatoen opdateres som '0001-01-01'. Ændringserklæringen vil være som følger.
Forespørgsel:
ALTER TABLE employees ADD start_date DATE default '0001-01-01' ;
Lad os verificere output fra ovenstående forespørgsel ved at udføre en simpel SELECT-sætning på bordet:
Så vi har tilføjet en ny datakolonne med datatype som 'DATE' med standardværdien som '0001-01-01'. Lad os nu indsætte to nye medarbejderoptegnelser, en med den aktuelle dato og en anden med en bestemt dato.
hvordan man opretter en java-applikation i formørkelse
Følgende er forespørgsler sammen med detaljerne:
Som vist i ovenstående billede har vi brugt funktionen til at indsætte flere rækker i tabellen som forklaret i det foregående afsnit.
Den første post blev indsat med funktionen CURRENT_DATE (). Denne funktion returnerer den aktuelle systemdato. Den anden post blev indsat med en bestemt dato i formatet 'ÅÅÅÅ-MM-DD'.
Dernæst vil vi kontrollere output fra vores INSERT-sætning med en SELECT-sætning for empNum 1017 og 1018.
Den første post med empNum = 1017 har startdatoen den samme som den aktuelle dato, der er 25thNov 2019 (i dette tilfælde datoen, hvor denne tutorial blev skrevet) i formatet 'ÅÅÅÅ-MM-DD'.
Forespørgsel:
INSERT INTO employees ( empNum, lastName, firstName, email, deptNum, salary, start_date ) VALUES (1017, 'Johnson', 'Eve', 'ej@gmail.com', 3, 5500, CURRENT_DATE()), (1018, 'Bond', 'Nolan', 'nb@gmail.com', 2, 15000, '2019-09-13') ;
Tabelbillede efter:
empNum | efternavn | fornavn | deptNum | Løn | Start dato | |
---|---|---|---|---|---|---|
1017 | Johnson | Eva | ej@gmail.com | 3 | 5500 | 2019-11-25 00:00:00 |
1018 | Bånd | Nolan | nb@gmail.com | to | 15000 | 2019-09-13 00:00:00 |
# 5) MySQL indsættes i en tabel fra en anden tabel
Dernæst gennemgår vi scenariet, hvor vi skal indsætte data i en ny tabel fra en eksisterende tabel.
For eksempel, Overvej et scenario, hvor vi regelmæssigt skal flytte data fra vores eksisterende tabel til en historisk eller arkivtabel. For at opnå dette skal vi oprette en ny tabel medarbejderhistorie.
Vores opgave er at flytte data fra medarbejdertabellen til tabellen medarbejder_historie.
CREATE-udsagnet er som følger:
Forespørgsel:
CREATE TABLE employees_history LIKE employees ;
Lad os kontrollere output fra ovenstående forespørgsel ved at udføre en simpel DESC-sætning på den nye tabel, som giver os tabelstrukturen for den nye tabel:
Så vi har oprettet en ny tabel. Lad os nu indlæse data i denne nye tabel fra medarbejderens tabel.
=> Lær mere om MySQL OPRET TABELKOMMANDO .
Følgende er forespørgslen og dens detaljer:
Som vist i ovenstående billede lykkedes indsættelsen af data i den nye tabel fra den eksisterende tabel.
Overhold meddelelseskolonnen i outputfanen. Der står, at 18 rækker er berørt. Dette indebærer, at alle de 18 rækker i den eksisterende tabel blev kopieret til den nyoprettede medarbejderhistorie-tabel.
Dernæst vil vi kontrollere output fra vores INSERT-sætning med en SELECT-sætning på medarbejder-historik-tabellen.
Ovenstående billede viser alle rækkerne, der er kopieret fra medarbejderens tabel i tabellen medarbejdere_historie.
Ovenstående billede viser alle de rækker, der er kopieret fra medarbejdertabellen i tabellen medarbejderhistorie.
Forespørgsel:
INSERT INTO employees_history ( empNum, lastName, firstName, email, deptNum, salary, start_date ) SELECT empNum, lastName, firstName, email, deptNum, salary, start_date FROM employees ;
Tabelbillede efter:
empNum | efternavn | fornavn | deptNum | Løn | Start dato | |
---|---|---|---|---|---|---|
1001 | Andrews | Jack | ja@gmail.com | en | 3182,7 | 0001-01-01 |
1002 | Schwatz | Mike | ms@gmail.com | en | 5304,5 | 0001-01-01 |
1003 | Langley | Margaret | margaret.langley@gmail.com | to | 8820 | 0001-01-01 |
1004 | Harera | Sandra | sh@gmail.com | en | 10609 | 0001-01-01 |
1005 | Læs | Peter | pl@gmail.com | to | 14333 | 0001-01-01 |
1006 | Keith | Jenny | jk@gmail.com | to | 16538 | 0001-01-01 |
1008 | Bailey | Oliver | oliver.bailey@gmail.com | 3 | 24494 | 0001-01-01 |
1009 | Kop | Harry | hb@gmail.com | 5 | 30646 | 0001-01-01 |
1010 | Armstrong | Jacob | jacob.armstrong@gmail.com | 4 | 32670 | 0001-01-01 |
1011 | Hanks | Tom | th@gmail.com | NUL | 10100 | 0001-01-01 |
1012 | Luther | Martin | ml@gmail.com | 3 | 13000 | 0001-01-01 |
1013 | Nolan | Chris | NUL | NUL | NUL | 0001-01-01 |
1014 | Murray | Keith | km@gmail.com | en | 25000 | 0001-01-01 |
1015 | Branson | John | jb@gmail.com | to | 15000 | 0001-01-01 |
1016 | Martin | Richard | rm@gmail.com | 4 | 5000 | 0001-01-01 |
1017 | Johnson | Eva | ej@gmail.com | 3 | 5500 | 2019-11-25 00:00:00 |
1018 | Bånd | Nolan | nb@gmail.com | to | 15000 | 2019-09-13 00:00:00 |
Ofte stillede spørgsmål og svar
Q # 1) Hvordan indsætter du data i tabellen i MySQL?
Svar: For at indsætte data i en MySQL-tabel giver MySQL os et vigtigt nøgleord 'INSERT INTO'. Dette efterfølges af tabelnavnet, listen over kolonner og listen over tilsvarende værdier, der skal indsættes. Vi kan bruge dette nøgleord til at indsætte en eller flere kolonner i den samme transaktion.
Q # 2) Forklar klausulen “INSERT IGNORE INTO”.
Svar: Når vi forsøger at indsætte mere end en række i en enkelt INSERT-sætning, kan det være muligt, at udførelsen muligvis mislykkes på grund af dårlige data for en bestemt række. Dette får transaktionen til at stoppe og blive rullet tilbage til den foregående forpligtelse.
For at undgå sådanne scenarier, “INDSÆT IGNORER I” anvendes. Denne klausul ignorerer fejlen, der forårsager ugyldige poster, og indsætter kun gyldige poster, så transaktionen ikke stopper. Dette er nyttigt, når du skal udføre bulkindsatser, og du ikke har råd til at gøre det igen for dårlige data i en række.
Spørgsmål nr. 3) Hvordan opdaterer jeg attributter i MySQL?
Svar: Vi kan opdatere attribut (er) ved hjælp af MySQL Update-sætningen, hvor udsagnet begynder med UPDATE-nøgleordet efterfulgt af tabelnavnet. Dernæst er SET-klausulen efterfulgt af et kolonnenavn og en WHERE-klausul.
Q # 4) Kan jeg indsætte flere poster i en enkelt MySQL Insert-transaktion?
Svar: Som afbildet ovenfor, under 'Indsættelse af data i flere rækker' sektion, kan vi indsætte flere rækker i en enkelt indsætte transaktion. Vi kan bruge INSERT INTO-klausulen efterfulgt af tabelnavnet og kolonnelisten, men i stedet for en liste med værdier skal vi nævne flere værdilister for hver af kolonnerne.
Spørgsmål nr. 5) Hvor downloader du MySQL fra?
Svar: Du kan downloade MySQL version 8.0 herfra: MySQL .
Læs også => Sådan downloades MySQL
Q # 6) Kan SELECT-klausulen bruges i MySQL INSERT-sætningen?
Svar: Ja, SELECT kan bruges sammen med MySQL INSERT-sætningen. Dette er blevet forklaret i afsnittet “MySQL Indsættelse af en tabel fra en anden tabel”. Dette bruges, når vi skal indsætte rækker i en tabel ved hjælp af de data, der allerede findes i en anden tabel.
For eksempel, flytte data fra den aktuelle tabel til den historiske tabel i datalageret.
Spørgsmål nr. 7) Hvordan gemmer MySQL datoen i tabeller?
Svar: MySQL bruger formatet 'ÅÅÅÅ-MM-DD' til lagring af dato i tabeller. Datatypen her er DATE. Datointervallet, der understøttes af MySQL, er fra '1000-01-01' til '9999-12-31'.
MySQL har også en DATETIME-datatype til at gemme både dato og klokkeslæt. Formatet er “ÅÅÅÅ-MM-DD tt: mm: ss”. Det acceptable interval er fra '1000-01-01 00:00:00' til '9999-12-31 23:59:59'.
hvordan man åbner shockwave flash-objekt
Anbefalet læsning = >> MySQL datatyper vejledning
Konklusion
I denne vejledning lærte vi således om de fem forskellige måder at udføre INSERT-udsagn i MySQL på.
- MySQL indsætter enkelt række
- MySQL indsætter kun data i en specificeret kolonne
- MySQL Indsættelse af data i flere rækker
- MySQL indsætter dato
- MySQL Indsættelse af en tabel fra en anden tabel
Vi kan bruge en af disse baseret på vores projektkrav.
God læselyst!!
Anbefalet læsning
- Forskellen mellem SQL Vs MySQL Vs SQL Server (med eksempler)
- Top 40 bedste MySQL-interviewspørgsmål og -svar (2021 spørgsmål)
- MySQL Update Statement Tutorial - Update Query Syntax & Eksempler
- Unix Cat Command Syntax, indstillinger med eksempler
- Unix sorteringskommando med syntaks, indstillinger og eksempler
- Indsæt flere dokumenter i MongoDB ved hjælp af arrays
- C # Brug af erklæring og C # Vejledning til virtuel metode med eksempler
- C # Programstruktur og grundlæggende syntaks med eksempler