INSERT INTO VALUES() na pahayag

Naisip namin kung paano lumikha ng mga talahanayan, tingnan natin ngayon ang isang detalyadong pagtingin sa kung paano magdagdag ng data sa isang talahanayan gamit ang isang query sa SQL.

Sa katunayan, napakasimpleng gawin ito, ngunit may ilang mga nuances. Ang pinakasimpleng opsyon para sa pagpasok ng data sa isang talahanayan ay nangangailangan ng pagtukoy ng dalawang bagay:

  • mga pangalan ng column
  • mga halaga ng hanay (data)

Dapat tukuyin ang mga pangalan ng column, dahil kadalasan ang mga column ay may mga default na value na hindi tinukoy kapag naglalagay ng data. At kadalasan ang bawat talahanayan ay may kahit isang ganoong column, halimbawa row id.

Ang pangkalahatang anyo ng query para sa pagpasok ng data sa isang talahanayan ay ganito ang hitsura:

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

Halimbawa, kung gusto mong magpasok ng bagong tala sa talahanayan ng user, ganito ang magiging hitsura ng query:

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

INSERT INTO SELECT statement

Ang isa pang karaniwang senaryo para sa pagpasok ng data sa isang talahanayan ay ang pagkuha nito mula sa isa pang talahanayan, schema, o kahit isang DBMS.

Para magawa ito, may isa pang INSERT INTO query format, kung saan, sa halip na ang VALUES na bahagi, maaari kang tumukoy ng query para pumili ng data.

Ang pangkalahatang anyo ng naturang kahilingan ay:

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

Sumulat tayo ng query na magdaragdag ng lahat ng mga user mula sa talahanayan ng empleyado hanggang sa talahanayan ng gumagamit:

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

Mayroon kaming iba't ibang data sa talahanayan ng empleyado, ngunit mula sa kanila ay pumili lamang kami ng dalawang patlang - ang pangalan at oras ng pagdating sa kumpanya.

Gayundin, hinihiling sa iyo ng talahanayan ng gumagamit na tukuyin ang antas ng gumagamit - antas. Ang mga empleyado ay walang antas sa talahanayan ng empleyado, kaya gagamitin namin ang katotohanan na ang talahanayan ng user ay may default na halaga para sa field ng antas. Hindi lang namin tinukoy ang antas at itatakda ng SQL ang default na halaga.

Ipagpalagay na hindi kami nasiyahan sa default na halaga, at gusto naming maging 99 ang antas, at palitan ang user.created_time ng petsa ngayon, pagkatapos ay maaari naming isulat ito:

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

Marami pa ang maaaring gawin, ngunit sa tingin ko ito ay sapat na sa ngayon. Maaari kang magbasa nang higit pa sa opisyal na pahina ng MySQL.