Запрос SQL на добавление и удаление записей
В этой статье мы разберём, пожалуй, одни из самых важных SQL-запросов. Это запросы на добавление и удаление записей из таблицы базы данных. Поскольку, ОЧЕНЬ часто приходится добавлять новые записи в таблицу, причём делать это в автоматическом режиме, то данный материал обязателен к изучению.
Для начала SQL-запрос на добавление новой записи в таблицу:
INSERT INTO users (login, pass) values(‘TestUser’, ‘123456’)
При добавлении записи вначале идёт команда «INSERT INTO«, затем название таблицы, в которую мы вставляем запись. Далее идёт в круглых скобках названия полей, которые мы хотим заполнить. А затем в круглых скобках после слова «values» начинаем перечислять значения тех полей, которые мы выбрали. После выполнения этого запроса в нашей таблице появится новая запись.
Иногда требуется обновить запись в таблице, для этого существует следующий SQL-запрос:
UPDATE users SET login = ‘TestUser2′, pass=’1234560′ WHERE login=’TestUser’
Данный запрос является более сложным, так как он имеет конструкцию «WHERE«, но о ней чуть ниже. Вначале идёт команда «UPDATE«, затем имя таблицы, а после «SET» мы описываем значения всех полей, которые мы хотим изменить. Было бы всё просто, но встаёт вопрос: «А какую именно запись следует обновлять?«. Для этого существует «WHERE«. В данном случае мы обновляем запись, поле «login» у которой имеет значение «TestUser«. Обратите внимание, что если таких записей будет несколько, то обновятся абсолютно все! Это очень важно понимать, иначе Вы рискуете потерять свою таблицу.
Давайте немного ещё поговорим о «WHERE«. Помимо простых проверок на равенство существуют так же и неравенства, а также логические операции: AND и OR.
UPDATE users SET login = ‘TestUser2′, pass=’1234560’ WHERE id < 15 AND login='TestUser'
Данный SQL-запрос обновит те записи, id которых меньше 15 И поле «login» имеет значение «TestUser«. Надеюсь, Вы разобрались с конструкцией «WHERE«, потому что это очень важно. Именно «WHERE» используется при выборке записей из таблиц, а это самая частоиспользуемая задача при работе с базами данных.
И, напоследок, простой SQL-запрос на удаление записей из таблицы:
DELETE FROM users WHERE login=’TestUser2′
После команды «DELETE FROM» идёт имя таблицы, в которой требуется удалить записи. Дальше описываем конструкцию «WHERE». Если запись будет соответствовать описанным условиям, то она будет удалена. Опять же обратите внимание, в зависимости от количества записей, удовлетворяющих условию после «WHERE«, может удалиться любое их количество.
Вот Вы и узнали, как добавлять, обновлять и удалять записи из таблицы. А в следующей статье я Вас познакомлю с тем, как делать выборку записей из таблицы, а это является, пожалуй, самым важным при работе с базами данных.

![]()
Создано 16.01.2011 17:44:14
Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!
Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.
Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления
Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.
Порекомендуйте эту статью друзьям:
Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):
- Кнопка:
Она выглядит вот так: - Текстовая ссылка:
Она выглядит вот так: Как создать свой сайт - BB-код ссылки для форумов (например, можете поставить её в подписи):
Комментарии ( 36 ):
Trust 03.11.2011 17:58:11
А как сделать апдейт таблицы так чтобы когда человек открыл форму на сайте то у него отображалась уже внесенная информация, в общем как вконтакте. хочет человек отредактировать даные о себе то там пишутся уже существующие данные. Ну или анологично phpmyadmin у !
Admin 03.11.2011 18:00:13
Для этого узнаётся сначала пользователь (допустим, из сессии или GET-параметра). Дальше на основании id пользователя или его логина делается выборка соответствующей записи. В результате получается массив со всеми данными пользователя, которые затем просто подставляются в форму.
Trust 06.11.2011 09:34:43
$result = mysql_query(«INSERT INTO information (deiatelnost) VALUES (‘$deiatelnost’) WHERE login=’$login’ «) Когда я делаю запрос с указанием сессионного логина, мне выдает такую ошибку: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘WHERE login=’мой логин» at line 1
Admin 06.11.2011 13:27:47
Попробуйте вместо «мой логин» подставить «mylogin».
Trust 06.11.2011 13:48:55
«мой логин» — это ошибка. а вообще там стоит не «мой логин» а мой логин на английском!
Admin 06.11.2011 13:54:21
$result = mysql_query(«INSERT INTO `information` (`deiatelnost`) VALUES (‘$deiatelnost’) WHERE `login`=’$login'») Попробуйте такой запрос с обратными кавычками.
Trust 06.11.2011 17:17:44
РАзницы нет. Но я попробовал ошибка вообще не на счет синтаксических ошибок. я вообще таких запросов раньше не писал. поэтому не знаю. да вообще с высоконагружеными системами не работал..=(
Admin 06.11.2011 17:26:24
Запрос правильный на 100%. Единственное, что, возможно, переменная $login некорректная приходит. Но это уже Вам лучше знать. Если с ней всё хорошо, то тогда проблема в структуре таблицы (названия таблицы и её полей, типы полей, допустимые значения и прочее).
Trust 11.11.2011 12:14:57
Спасибо большое! Все работает , разобрались=) Теперь очень прошу вас описать функцию Cron , как запускать этот скрипт через крн. было бы идеально посвятить этому целую тему=))) И еще хоть убейте, не могу найти вашу статью про аудио/видео проигрыватели на сайте. прошу ссылку=) Спасибо за помощь вам, вы мне во многом уже помогли=)))
Admin 11.11.2011 13:44:00
Про cron постараюсь в скором времени написать. Про аудио: http://myrusakov.ru/html-add-audio.html И про видео: http://myrusakov.ru/html-video.html Ещё на сайте есть поиск, где эти статьи элементарно найти, введя «аудио» и «видео».
Trust 12.11.2011 10:53:08
Про Cron буду ждать вашей сатьи, так как я не могу с ней разобратся, а она мне очень необходима для онлайн пользователей=)
Trust 17.11.2011 16:37:53
Михаил! Опять столкнулся с проблемой. пишу запрос на добавление информации зарегестрированным пользователем именно его записи к нему в строку. $res = mysql_query(«INSERT INTO information (deiatelnost) VALUES (‘$deiatelnost’) WHERE login=’$login'»); Этим запросом просто не хочет добавлять запись . а вот если я ввожу тот же запрос но уже без login=»$login» то все добавляется но соответственно без логина, и уже следовательно вытащить эти данные для конкретного пользователя просто нет возможности. что делаю не так? Могу скинуть на почту полный код action. спасибо заранее=)
Admin 17.11.2011 17:56:05
Постараюсь объяснить, что Вы хотите: «Я хочу добавить запись в существующую запись». Вам не кажется, что это странно? Если Вам нужно обновлять запись, то используйте команду UPDATE.
Trust 17.11.2011 20:01:43
так в том то и дело, что я создал чистый столбец дабы разгрузить все остальные(заранее), и там человек который авторизирован под своим логином может добавить новую запись о себе именно ДОБАВИТЬ, ну а после того как добавил он будет апдейтить себя соответственно, Вопрос в том что сейчас запись не добавляется если я ставлю login=’$login’ =(( А если этой записи нет но добавляет инфу, но она соответственно не относится к этому пользователю так как вытащить ее можно для любого другого пользователя авторизированного на сайте. Что не так с запросом?
Admin 17.11.2011 23:06:07
Для таких случаев в таблице делают поле user_id, в котором содержится id того пользователя, который добавил данную запись. Всё, что я писал ранее, остаётся в силе. Вы требуете от MySQL абсурд, который он выполнить не сможет.
#3 — Добавление и обновление записей в БД

В ходе урока вы познакомитесь с операторами Insert, а также Update. Эти операторы позволяют добавить данные в табличку, а также обновить значения для определенных записей в таблице.
Видеоурок
Добавление данных
Добавление в SQL происходит при помощи команды Insert Into . В команде можно указать поля, а также значения, которые необходимо встроить в табличку.
Пример использования:
INSERT INTO users (name, age) VALUES('Алексей', 38);
Также можно добавлять несколько записей, просто записывая их через запятую.
Пример:
INSERT INTO users (name, age) VALUES('Алексей', 38), ('Мартин', 12);
Обновление данных
Обновление данных происходит при помощи команды Update . В ней необходимо указать условие Where , дабы обратиться лишь к тем записям, что вам нужны.
UPDATE users SET name = 'Иван' WHERE AND age = 44;
Задание к уроку
Необходимо оформить подписку на проект, чтобы получить доступ ко всем домашним заданиям
Большое задание по курсу
Вам необходимо оформить подписку на сайте, чтобы иметь доступ ко всем большим заданиям. В задание входит методика решения, а также готовый проект с ответом к заданию.
PS: подобные задания доступны при подписке от 1 месяца
Руководство по SQL. Добавление записей.
Для добавления новых записей в таблицу базы данных (далее – БД) мы используем SQL выражение INSERT INTO.
Общий вид выражения имеет следующий вид:
INSERT INTO имя_таблицы (колонка1, колонка2 . ) VALUES (значение1, значение2 . );
Пример:
Предположим, что у нас есть пустая таблица developers, которая имеет следующий вид:
mysql> desc developers; +------------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +------------+--------------+------+-----+---------+-------+ | ID | int(11) | NO | PRI | NULL | | | NAME | varchar(100) | NO | | NULL | | | SPECIALTY | varchar(100) | YES | | NULL | | | EXPERIENCE | int(11) | NO | | NULL | | | SALARY | int(11) | YES | | NULL | | +------------+--------------+------+-----+---------+-------+ 5 rows in set (0.00 sec)
Теперь попробуем добавить в нашу таблицу пять записей.
Для этого мы выполним следующие команды:
INSERT INTO developers (ID, NAME, SPECIALTY, EXPERIENCE, SALARY) VALUES (1, 'Eugene Suleimanov', 'Java', 2, 2000); INSERT INTO developers (ID, NAME, SPECIALTY, EXPERIENCE, SALARY) VALUES (2, 'Peter Romanenko', 'C++', 3, 3500); INSERT INTO developers (ID, NAME, SPECIALTY, EXPERIENCE, SALARY) VALUES (3, 'Andrei Komarov', 'JavaScript', 2, 2100); INSERT INTO developers (ID, NAME, SPECIALTY, EXPERIENCE, SALARY) VALUES (4, 'Konstantin Geiko', 'C#', 2, 2000); INSERT INTO developers (ID, NAME, SPECIALTY, EXPERIENCE, SALARY) VALUES (5, 'Asya Suleimanova', 'UI/UX', 2, 1800);
Мы также можем добавить шестую запись используя синтаксис приведённый ниже:
INSERT INTO developers VALUES (6, 'Ludmila Geiko', 'UI/UX', 2, 1800);
После поочерёдного выполнения данного запроса наша таблица будет содержать такие данные:
mysql> SELECT * FROM developers; +----+-------------------+------------+------------+--------+ | ID | NAME | SPECIALTY | EXPERIENCE | SALARY | +----+-------------------+------------+------------+--------+ | 1 | Eugene Suleimanov | Java | 2 | 2000 | | 2 | Peter Romanenko | C++ | 3 | 3500 | | 3 | Andrei Komarov | JavaScript | 2 | 2100 | | 4 | Konstantin Geiko | C# | 2 | 2000 | | 5 | Asya Suleimanova | UI/UX | 2 | 1800 | | 6 | Ludmila Geiko | UI/UX | 2 | 1800 | +----+-------------------+------------+------------+--------+ 6 rows in set (0.00 sec)
Мы также можем заполнить таблицу данными, используя таблицу, которая уже содержит данные с помощью запроса, который имеет общий вид, указанный ниже:
INSERT INTO имя_оригинальной_таблицы (колонка1, колонка2 . ) SELECT колонка1, колонка2 . FROM имя_второй_таблицы [WHERE условие];
Создадим таблицу developers_copy
CREATE TABLE developers_copy AS SELECT ID, NAME, SPECIALTY, EXPERIENCE, SALARY FROM developers;
В результате мы получим таблицу developers_copy, которая имеет следующий вид:
mysql> DESC developers_copy; +------------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +------------+--------------+------+-----+---------+-------+ | ID | int(11) | NO | | NULL | | | NAME | varchar(100) | NO | | NULL | | | SPECIALTY | varchar(100) | YES | | NULL | | | EXPERIENCE | int(11) | NO | | NULL | | | SALARY | int(11) | YES | | NULL | | +------------+--------------+------+-----+---------+-------+ 5 rows in set (0.00 sec)
Теперь вставим в эту таблицу данные из оригинальной таблицы developers:
mysql> INSERT INTO developers_copy SELECT * FROM developers WHERE ID < 4; Query OK, 3 rows affected (0.04 sec) Records: 3 Duplicates: 0 Warnings: 0
После этого наша таблица developers_copy будет содержать следующие данные:
mysql> SELECT * FROM developers_copy; +----+-------------------+------------+------------+--------+ | ID | NAME | SPECIALTY | EXPERIENCE | SALARY | +----+-------------------+------------+------------+--------+ | 1 | Eugene Suleimanov | Java | 2 | 2000 | | 2 | Peter Romanenko | C++ | 3 | 3500 | | 3 | Andrei Komarov | JavaScript | 2 | 2100 | +----+-------------------+------------+------------+--------+ 3 rows in set (0.00 sec)
На этом мы заканчиваем изучение способов добавления данных в таблицы БД.
В следующей статье мы рассмотрим способ чтения данных из существующих таблиц в БД.
Запросы SQL добавления данных (INSERT)
Добавление одной или вставка нескольких записей в таблицу БД выполняется командой INSERT. В таком запросе указываются сведения о том, в какую таблицу (в какие ее поля) какие сведения должны быть внесены. В основном виде такой запрос выглядит так:
INSERT INTO таблица(список полей) VALUES (список добавляемых значений)
Здесь, INSERT – это команда языка SQL, определяющая что запрос будет добавлять новую запись;
INTO – после этой команды указывается таблица, в которую будут добавлены данные, после указания которой в скобках перечисляются соответствующие поля этой таблицы;
VALUES – команда, после которой в скобках указываются значения, которые нужно добавить.
Например, для внесения новой записи в таблицу "Товары" (использована для примера в уроке "SQL запросы на выборку (SELECT)"), нужно будет выполнить следующий запрос:
INSERT INTO goods VALUES (5, "Вилка", 25)
В этом примере, указываются значения для всех полей таблицы в том же порядке, в котором они идут в самой таблице. Такой вариант равносилен следующему запросу, где явно указаны названия всех полей:
INSERT INTO goods (num, title, price) VALUES (5, "Вилка", 25)
Не указывать названия полей таблицы стоит только в случае, если вносимые данные будут содержать значения для всех полей том же порядке, что и таблице. Однако, чаще всего, для удобства внесения и просто для большей понятности запроса, название полей указываются. При этом можно указывать их в произвольном порядке:
INSERT INTO goods (price, title, num) VALUES (25, "Вилка", 5)
Если поле "num" таблицы содержит атрибут "auto_increment" (т.е. настроено автозаполнение новым значением, которое каждую вставку увеличивается на единицу), то можно сократить код, не указывая явно значение для этого поля:
INSERT INTO goods (title, price) VALUES ("Вилка", 25)
Так же, если какое-то поле не нужно заполнять запросом, можно не указывать его. При этом оно получит либо определенное настройками таблицы значение по умолчанию, либо нулевое значение.
Следующий запрос добавит в таблицу только запись содержащую название товара, а так же автоматически будет добавлен код товара (если поле кода товара содержит атрибут "auto_increment"):
INSERT INTO goods (title) VALUES ("Вилка")
При этом, не указанное поле "price" будет содержать нулевое значение.
При добавлении нескольких строк в БД, в запросе указывается несколько групп данных, разделенных запятой. Подробней об этом в следующей статье.
