Использование MySQL: insert into

Создание базы - задача простая, но ответственная. Необходимо учитывать множество факторов. Заметный прогресс в аппаратно-программном обеспечении информационных технологий не дает оснований пренебрегать вероятностью технической неисправности, несанкционированного доступа, нарушения структуры таблиц, добавления неправильных данных.

Компьютер - не человек, и любой, даже самый «умный», алгоритм по-прежнему далек от идей естественного интеллекта: без помощи программиста он мало на что способен. Однако, в отличие от человека, программа может стабильно и корректно исполнять свою миссию, главное - правильно ее написать.

Концепция MySQL: insert into

Внешне громоздкие формы синтаксиса SQL очень просты в использовании. Практика написания запросов буквами в верхнем регистре еще сохраняется, но постепенно замещается более лаконичным использованием обоих регистров. В связи с этим важно не забывать: однажды упомянутое имя поля в одном регистре в том же запросе, если используется вновь, обязано быть в том же варианте написания.

Характерная черта операции MySQL insert into, как и многого, что связано с интернет-программированием: «не будет исполнено то, что не понято». Неправильно составленный запрос на пополнение базы данных будет просто проигнорирован, и далеко не всегда это можно заметить сразу.

Факт добавления записи необходимо контролировать, как и доступ к базе данных в целом. Каждое поле должно быть заполнено значением соответствующего типа. При этом не всегда обязательно указывать поля таблицы-результата. Не всегда нужно передавать конкретные значения: конструкция MySQL insert into select позволяет получить набор добавляемых записей из другой таблицы или запроса.

Запрос должен быть синтаксически и логически корректен. Применение любого варианта конструкции MySQL query insert into values должно учитывать кодировку скрипта, в которой находится, кодировку таблицы базы данных и, собственно, добавляемой информации.

Классическое добавление записи

Любая таблица MySQL - последовательность записей, каждая из которых имеет некоторое количество полей. Добавить записи можно из другой таблицы. Достаточно в запросе указать в select что и откуда, а в into - куда. Символ "*" говорит, что запрос обращается ко всем полям каждой записи.

В результате обращения к этой функции содержимое таблицы $cSrcTable полностью запишется в таблицу $cDstTable, из которой предварительно будут удалены все записи.

Добавление одной записи

Конструкция MySQL insert into values позволяет добавлять записи по одной, указывая конкретные поля и соответствующие им конкретные значения.

Этот запрос может быть разбит на три запроса, в каждом из которых одному списку полей (`code_back`, `owner_code`, ...) будет соответствовать одна строка данных ('~', '{$cSChip}', '{$SChip_s}', ...), ('~', '{$cPetr}', '{$cPetr_s}', ...) или ('~', '{$cTest}', '{$cTest_s}', ...), но так проще. Например в данном случае добавлен базовый набор пользователей: администратор, диспетчер и тестировщик.

Добавление записей через собственный интерфейс

Принцип работы с MySQL реализован через форму запросов. Это удобно в режиме командной строки и в том же виде реализовано в различных языках программирования. На языке PHP, в частности, используется строка запроса - обычная последовательность символов, содержимое которой заполняется в процессе работы алгоритма. Затем текст сформированного запроса поступает в функцию mysqli_query() и выполняется.

Какую форму работы с базой данных выбрать - решать в конкретном случае разработчику, но во всех случаях удобнее всего представить задачу в части ее операций чтения/записи информации из/в базу данных в виде собственного интерфеса. Эта идея может быть реализована в виде набора функций или отдельного объекта.

В таком варианте непосредственно операции добавления записей будут скрыты, а процесс будет состоять в последовательном вызове собственных фунций. Например, scfAddUser('Ivanov', 'Ivan') приведет к запросу MySQL insert into `all_users` ('last_name', 'first_name', 'status') values ('Ivanov', 'Ivan', 'new'). Такой вариант существенно экономит код и делает его значительно более читаемым и осмысленным.

Существенное отличие собственного интерфейса от непосредственного использования операций работы с базой данных в их первозданном виде состоит в том, что вынесенные в отдельный файл все операции добавления, изменения и удаления записей могут быть контролируемы и изменяемы без модификации использующего их кода. Это более безопасно и эффективно.

Собственный интерфейс от объекта данных

Если не принимать в расчет простые переменные, то современная программа представляет собой совокупность объектов. Чем квалифицированнее решена задача, тем эффективнее спроектированная система объектов и их взаимодействие друг с другом.

Очевидно, операции записи и чтения данных принимают другой контекст: объект может сохранить себя в базе данных, может восстановить себя из базы данных, проверить свое состояние, передать содержимое другому объекту и т.д.

Такой подход переносит центр тяжести с непосредственного кодирования запросов MySQL insert into в интерфейс: scfAddObject('contens', ...), который используется каждым объектом по-своему.

Объект даты будет иметь метод myDate->Save() и выполнит обращение scfAddObject('04.12.2016'), а объект пользователя currUser->Save() сделает scfAddObject('Ivanov - login'), ... при этом каждый вызов scfAddObject() будет приводить к конструированию своего варианта запроса MySQL insert into.

Комментарии