CodeGym/Java kursus/All lectures for DA purposes/Indsættelse af data i en tabel

Indsættelse af data i en tabel

Ledig

INSERT INTO VALUES()-sætning

Vi fandt ud af, hvordan man opretter tabeller, lad os nu tage et detaljeret kig på, hvordan man tilføjer data til en tabel ved hjælp af en SQL-forespørgsel.

Faktisk er det meget enkelt at gøre dette, men der er flere nuancer. Den enkleste mulighed for at indsætte data i en tabel kræver specificering af to ting:

  • kolonnenavne
  • kolonneværdier (data)

Kolonnenavne skal angives, da kolonner meget ofte har standardværdier, der ikke er angivet ved indsættelse af data. Og normalt har hver tabel mindst én sådan kolonne, for eksempel række-id.

Den generelle form for forespørgslen til indsættelse af data i en tabel ser sådan ud:

INSERT INTO table (column1, column2, column3) VALUES
    (value1, value2, value3),
    (value1, value2, value3),
    (value1, value2, value3);

Hvis du for eksempel vil indsætte en ny post i brugertabellen, er forespørgslen sådan her:

INSERT INTO user (name, level, created_time) VALUES
	('Rabinovich', 5, ‘2022-06-06’);

INSERT INTO SELECT-sætning

Et andet almindeligt scenarie for indsættelse af data i en tabel er at tage det fra en anden tabel, et skema eller endda et DBMS.

For at gøre dette er der et andet INSERT INTO-forespørgselsformat, hvor du i stedet for VALUES-delen kan angive en forespørgsel for at vælge data.

Den generelle form for en sådan anmodning er:

INSERT INTO table (column1, column2, column3)
SELECT-request;

Lad os skrive en forespørgsel, der tilføjer alle brugere fra medarbejdertabellen til brugertabellen:

INSERT INTO user (name, created_time)
   SELECT employee.name, employee.join_date
   FROM employee;

Vi har forskellige data i medarbejdertabellen, men fra dem vælger vi kun to felter - navn og ankomsttid til virksomheden.

Brugertabellen kræver også, at du angiver brugerniveau - niveau. Medarbejdere har ikke et niveau i medarbejdertabellen, så vi bruger det faktum, at brugertabellen har en standardværdi for niveaufeltet. Vi angiver bare ikke niveauet, og SQL vil indstille standardværdien.

Antag, at vi ikke er tilfredse med standardværdien, og vi vil have niveauet til at være 99, og erstatte user.created_time med dagens dato, så kan vi skrive dette:

INSERT INTO user (name, level, created_time)
   SELECT employee.name, 99, CURDATE()
   FROM employee;

Der er meget mere, der kunne gøres, men jeg tror, ​​det er tilstrækkeligt for nu. Du kan læse mere på den officielle MySQL-side.

Kommentarer
  • Populær
  • Ny
  • Gammel
Du skal være logget ind for at skrive en kommentar
Denne side har ingen kommentarer endnu