SQL-де кестеге жолды қалай қосуға болады: SQL INSERT INTO операторы
SQL Тренинг мысалдармен: SQL командаларын жазу арқылы кестеге деректер қосуды қалай жүзеге асырамыз?
Мен деректерді дерекқор кестесіне қалай енгізу керек екенін қарапайым тілмен, артық сөзсіз түсіндіремін. INSERT INTO командасы оңай! Ол MySQL, PostgresQL, MS SQL, SQLite, Oracle, MariaDB және басқа SQL DBMS үшін жұмыс істейді.
SQL-дегі INSERT командасы кестеге жаңа жолдар қосу үшін пайдаланылады:
INSERT INTO tableName
(field1, field2, field3)
VALUES
(value1, value2, value3);
Бұл сөзбе-сөз: "INSERT into table tableName (мәрелерді үтірмен бөлген тізім) VALUES (мәндерді үтірмен бөлген тізім)" дегенді білдіреді.
Ескерту: мәндер мәрелермен бірдей тәртіпте болуы керек. Мәндер дұрыс мәрелерге жазылуы үшін. Сондай-ақ, мәрелердің саны мен мәндердің саны сәйкес келуі тиіс, әйтпесе қате болады.
Мысалы, егер бізде контактілер кестесі бар болса және біз жаңа жазба қосқымыз келсе, оның мәрелері атау, веб-сайт және телеграм болса, біздегі команда былай болады:
INSERT INTO contacts
(name, website, telegram)
VALUES
('Rick', 'fullstack-freelancer.ru', '@fullstackfreelancer');
Бір INSERT командасымен SQL кестесіне бірнеше жолды қалай қосуға болады?
SQL бірнеше жазбаны бір кестеге бір ғана INSERT командасымен қосуға мүмкіндік береді. Бұл көптеген деректерді жедел жүктеу қажет болғанда пайдалы болуы мүмкін. Синтаксис келесідей болады:
INSERT INTO tableName
(field1, field2, field3)
VALUES
(value1a, value2a, value3a),
(value1b, value2b, value3b),
(value1c, value2c, value3c);
Яғни, мәрелерді сол қалпында сақтаймыз, ал VALUES после желісі арқылы қосқысы келетін жазбалардың санын тізбектейміз, ал ізделетін мәндер Insert INTO командасынан кейін көрсетілген.
Егер сұраныста кестеде бар барлық мәрелерді көрсетпесек, қосылған жазбалардағы сол мәрелер әдепкі мәндерді (кесте жасалғанда орнатылған) қамтиды. Егер бұл үтірлерге міндетті болса, SQL сұранысы қате алады.
Жазбаларды қосқанда SQL-де NULL мәнін қалай енгізуге болады?
Кестеге деректер қосқанда, егер бір мәре бос қалдырғымыз келсе, сол мәре үшін NULL мәнін қолдануға болады. Мысалы, егер веб-сайт мәре бос қалдырылса, команда былай болады:
INSERT INTO contacts
(name, website, telegram)
VALUES
('Rick', NULL, '@fullstackfreelancer');
Ескерту: егер осы мәре "NOT NULL" жалаушасы (кесте жасалғанда орнатылатын) болса, SQL сұранысы қате алады.
SQL-де басқа кестеден деректерді қалай енгізуге болады?
INSERT командасы SELECT-пен біріктіріліп, бір кестедегі деректерді екінші кестеге қосу үшін мүмкін. Бұл деректерді тереңдетпей жылжып немесе көшіріп алуға мүмкіндік береді. Бір кестеден екінші кестеге деректерді қосу үшін SQL сұранысы былай көрінеді:
INSERT INTO targetTableName
(field1, field2)
SELECT
sourceTableField1, sourceTableField2
FROM
sourceTableName
WHERE
conditions;
Мысалы, егер бізде old_users кестесі болса, және біз 30 жастан асқан барлық пайдаланушыларды new_users кестесіне көшіруіміз керек болса, команда былай болады:
INSERT INTO new_users
(name, email)
SELECT
name, email
FROM
old_users
WHERE
age > 30;
Бұл дерекқорда архивтеу мен үлкен көлемдегі ақпаратты өңдеу үшін өте пайдалы.
SQL-де деректерді енгізу кезінде қатені қалай өңдеу керек
SQL стандартты уникалды (UNIQUE) мәре мәнін басқадағы кесте жазбаларында енгізгенде, жағдайларды өңдеудің әртүрлі әдістерін береді.
SQL INSERT OR IGNORE - Бірегей мәндері қайталанатын жазбаларды қоспау
Егер бірегей мәні бар жазба бұрыннан бар болса, SQL бұл әрекетті елемейді, қате болдырмау үшін. Бұл деректерді қосу қажет, бірақ қайталанған мәндерге байланысты қате пайда болмауын қалаған кезде пайдалы.
Мысал ретінде, біз жаңа пайдаланушы енгізгіміз келеді, бірақ егер мұндай мән бұрыннан бар болса, уникалды (UNIQUE - кесте жетекшісі) мән үшін - біз мысал ретінде, бұл email DE болады, жай ғана енгізу процесін өткізіп жібергіміз келеді.
SQL сұраныс тіркемесінің INSERT OR IGNORE мысалы:
INSERT OR IGNORE INTO users
(name, email)
VALUES
('Rick', 'contact@fullstack-freelancer.com');
Бұл жағдайда, егер contact@fullstack-freelancer.com электрондық пошта бар болса, INSERT OR IGNORE командасы тек бұл әрекетті елемейді және қате көтермейді. Дегенмен, егер көрсетілген электрондық пошта бар болмаса, олар users кестесіне сәтті қосылады.
SQL-де жаңа жазбаны қосу немесе бұрыннан бар жазбаны редакциялау. INSERT ON DUPLICATE KEY UPDATE
Алдыңғы мысалда біз уникалды мәре ішінде бұрыннан бар мәндермен жазбаны қосу процесін елемеудің мүмкіндігін көрдік.
SQL тек сол жазбаны редакциялауға да мүмкіндік береді, онда уникальді мән табылған.
SQL сұранысы INSERT ON DUPLICATE KEY UPDATE мысалы:
INSERT INTO users (
id,
name,
email
) VALUES (
1,
'Rick',
'contact@fullstack-freelancer.com'
) ON DUPLICATE KEY UPDATE
name = 'Rick',
email = 'contact@fullstack-freelancer.com';
Бұл код жаңа пайдаланушы қосады, егер id 1 жоқ болса, немесе жаңартады атын және электрондық поштаны, егер пайдаланушы айтылған id бойынша бар болса.