MySQL запросы для начинающих — часть четвертая

Это уже четвертая часть из серии статей по SQL запросам к базам данных MySQL для начинающих. В предыдущих статьях рассматривались в основном «безопасные» команды для выборки записей и их значений из таблиц базы данных, а в этой, четвертой части, новичкам предлагается познакомиться с командами и примерами SQL запросов, которые позволяют вносить различные изменения в базе данных, включая удаление записей из таблиц. Основными и часто используемыми из них являются INSERT, UPDATE и DELETE.

MySQL запросы для начинающих — часть четвертая

INSERT — добавление строк в таблицу

Для добавления новых записей (строк) в таблицу базы данных используется оператор (команда) INSERT.

INSERT INTO clients (name,city,age) VALUES('Иван','Москва',35);

Этот SQL запрос добавляет в таблицу clients новую строку со значениями для полей name, city и age. Во избежание проблем и появления ошибок при добавлении новых строк в таблицу значения столбцов, перечисленных в группе VALUES(…), должны соответствовать типам полей, в которые эти значения добавляются. Другие поля, которые не указаны в запросе, будут заполнены значениями по умолчанию, которые были установлены при создании таблиц.

Если вы попытаетесь добавить в числовое поле какое-то значение, которое будет превышать допустимый диапазон, то в таблицу добавится число, усеченное до конечной точки соответствующего диапазона. Если же попытаться добавить в числовое поле например такое значение, как «123 abc», то в таблицу добавится только «123», т.е. не-числовая часть попросту будет обрезана. В случае попытки занесения в числовой столбец обычного текста (не числа), как «раз два три», в соответствующий столбец будет добавлено значение «0».

При добавлении строк в поля таких типов, как CHAR, VARCHAR, TEXT, BLOB, следует иметь ввиду, что все строки, превышающие допустимую длину для столбцов таких типов, будут обрезаны до максимальной длины, указанной в свойствах соответствующих столбцов.

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

В операторе INSERT к значениям столбцов можно применять выражения (expressions), например математические, такие как умножение, вычитание, деление и так далее:

INSERT INTO clients (data1,data2) VALUES(25,data1*4);
INSERT INTO clients (data1,data2) VALUES(79,data1-7);

Но важно учитывать, что применять выражения можно только к тем столбцам таблицы, которые были раньше внесены в список значений в SQL запросе. Поэтому такой запрос, как в следующем примере, приведет к ошибке:

INSERT INTO clients (data1,data2) VALUES(data2*4,25);

UPDATE — обновление значений столбцов

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

UPDATE clients SET region="RF" WHERE city="Moscow";

Показанный запрос изменит в таблице clients исходные значения всех полей region на «RF» при условии, что поле city будет иметь значение «Moscow». Значения остальных полей останутся прежними. Если выражение WHERE в запросе отсутствует, то изменения коснутся абсолютно всех строк таблицы.

Для того, чтобы к примеру в таблице изменить только 3 записи, нужно использовать LIMIT:

UPDATE clients SET region="RF" WHERE city="Moscow" LIMIT 3;

Обычно в SQL запросах LIMIT используют совместно с выражением ORDER BY, чтобы произвести обновления только в упорядоченных записях:

UPDATE clients SET region="RF" WHERE city="Moscow" ORDER BY `id` LIMIT 3;

После удачного выполнения запрос с оператором UPDATE возвращает количество строк таблицы, в которые были внесены изменения.

DELETE — удаление строк из таблицы

Команда DELETE является наиболее «опасной» по сравнению со всеми, перечисленными ранее в этой и предыдущих статьях (SELECT, INSERT, UPDATE), так как с ее помощью выполняется безвозвратное удаление строк из указанной таблицы или нескольких таблиц базы данных. Поэтому использовать ее нужно крайне аккуратно.

Вот пример, когда удаляются ВСЕ строки из таблицы table1:

DELETE FROM table1

Однако можно ограничить количество удаляемых записей используя LIMIT и выражения WHERE. В следующем примере будут удалены 3 строки, подпадающие под условие, указанное в выражении WHERE:

DELETE FROM `clients` WHERE `age` < 21 ORDER BY `age` LIMIT 3

В выше приведенном примере задействовано еще и упорядочивание оператором ORDER BY по столбцу «age», чтобы не удалить строки, ранее сохраненные в таблице в случайном порядке.

Вот еще один пример, когда SQL запрос удалит из таблицы только 5 самых старых записей. Записи при этом будут упорядочены по «timestamp» (время и дата):

DELETE FROM `clients` WHERE name='Ivan' ORDER BY timestamp LIMIT 5

или то же самое, но для двух таблиц `clients` и `salers`:

DELETE FROM `clients`,`salers` WHERE name='Ivan' ORDER BY timestamp LIMIT 5


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

Метки: DELETE, INSERT, mysql, UPDATE, база данных, запросы

Поделитесь материалом с другими, воспользуйтесь этими кнопками:
Получать обновления и новые материалы блога по E-mail

9 комментариев к “MySQL запросы для начинающих — часть четвертая”

  1. Immunit:

    Спасибо автору, прочитал все 4 части!

  2. Dofollow Ruslan:

    Опасные команды описаны :) Главное, чтобы новички не начали с ними упражняться, не сделав резервные копии. А то осознание сути команды drop database обычно приходит после успешного ее выполнения :)

  3. Макс:

    На самом деле действительно лучше некоторые вещи для новичков было не показывать. Хотя в принципе это не секрет и всё есть в сети. =) Поэтому возможно каждый будет учиться на своих ошибках.

  4. лэп:

    Когда я столкнулся с MYSQL, мне неведома была команда INSERT INTO table (…) SELECT (…), очень жалко, что в уроках для начинающих такая конструкция не описывается, и пока я ее узнал я понаписал много лишних строк кода.

  5. Илья:

    Люблю SQL за его офегенную гибкость, No-sql — враг мой навеки:) Есть один сайтик хороший, правда на буржуйском, там есть классные справочники по mysql и не только _http://www.wowebook.in/

  6. Иван:

    Очень даже не плохая статья для начинающего, ждем продолжения.

  7. Sergey:

    На самом деле действительно лучше некоторые вещи для новичков было не показывать. Хотя в принципе это не секрет и всё есть в сети. =) Поэтому возможно каждый будет учиться на своих ошибках.

  8. Позитив в массы:

    Согласен с Sergey. Статьи будут действительно полезный новичкам и не только :)

  9. Андрей:

    Лучший научится на своих ошибках иногда)

Оставить комментарий к Immunit

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

Ссылки на Ваш сайт получат статус DoFollow после третьего комментария.

Для вставки кода в комментарии можно использовать BB-коды:
[text] [/text], [php] [/php], [html] [/html]

Подписаться на обновления блога 4remind.ru по RSS
Новости блога в социальных сетях

4remind.ru - персональный блог вебмастера



Наверх
Наверх