Оператор INSERT INTO VALUES().
Разбрахме How да създаваме таблици, нека сега разгледаме подробно How да добавяме данни към table с помощта на SQL заявка.
Всъщност е много лесно да се направи това, но има няколко нюанса. Най-простият вариант за вмъкване на данни в table изисква указване на две неща:
- имена на колони
- стойности на колони (данни)
Имената на колоните трябва да бъдат посочени, тъй като много често колоните имат стойности по подразбиране, които не са посочени при вмъкване на данни. И обикновено всяка table има поне една такава колона, например id на ред.
Общата форма на заявката за вмъкване на данни в table изглежда така:
INSERT INTO table (column1, column2, column3) VALUES
(value1, value2, value3),
(value1, value2, value3),
(value1, value2, value3);
Например, ако искате да вмъкнете нов запис в потребителската table, ето How ще изглежда заявката:
INSERT INTO user (name, level, created_time) VALUES
('Rabinovich', 5, ‘2022-06-06’);
Оператор INSERT INTO SELECT
Друг общ сценарий за вмъкване на данни в table е те да бъдат взети от друга table, схема or дори СУБД.
За да направите това, има друг формат на заявка INSERT INTO, в който instead of частта VALUES можете да посочите заявка за избор на данни.
Общата форма на такова искане е:
INSERT INTO table (column1, column2, column3)
SELECT-request;
Нека напишем заявка, която ще добави всички потребители от tableта на служителите към tableта на потребителите:
INSERT INTO user (name, created_time)
SELECT employee.name, employee.join_date
FROM employee;
Имаме различни данни в tableта на служителите, но от тях избираме само две полета - име и час на пристигане във фирмата.
Освен това потребителската table изисква да посочите потребителското ниво - ниво. Служителите нямат ниво в tableта на служителите, така че ще използваме факта, че tableта с потребители има стойност по подразбиране за полето за ниво. Ние просто не указваме нивото и SQL ще зададе стойността по подразбиране.
Да предположим, че не сме доволни от стойността по подразбиране и искаме нивото да е 99 и да заменим user.created_time с днешната дата, тогава можем да напишем това:
INSERT INTO user (name, level, created_time)
SELECT employee.name, 99, CURDATE()
FROM employee;
Има още много неща, които могат да се направят, но мисля, че това ще е достатъчно за сега. Можете да прочетете повече на официалната page на MySQL.
GO TO FULL VERSION