Запрос 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", может удалиться любое их количество.
Вот Вы и узнали, как добавлять, обновлять и удалять записи из таблицы. А в следующей статье я Вас познакомлю с тем, как делать выборку записей из таблицы, а это является, пожалуй, самым важным при работе с базами данных.
Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!
Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.
Если Вы не хотите пропустить новые материалы на сайте,то Вы можете подписаться на обновления: Подписаться на обновления
Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.
Порекомендуйте эту статью друзьям:
Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):
Она выглядит вот так:
Комментарии ( 35 ):
А как сделать апдейт таблицы так чтобы когда человек открыл форму на сайте то у него отображалась уже внесенная информация, в общем как вконтакте. хочет человек отредактировать даные о себе то там пишутся уже существующие данные. Ну или анологично phpmyadmin у !
Для этого узнаётся сначала пользователь (допустим, из сессии или GET-параметра). Дальше на основании id пользователя или его логина делается выборка соответствующей записи. В результате получается массив со всеми данными пользователя, которые затем просто подставляются в форму.
$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
Попробуйте вместо "мой логин" подставить "mylogin".
"мой логин" - это ошибка. а вообще там стоит не "мой логин" а мой логин на английском!
$result = mysql_query("INSERT INTO `information` (`deiatelnost`) VALUES ('$deiatelnost') WHERE `login`='$login'") Попробуйте такой запрос с обратными кавычками.
РАзницы нет. Но я попробовал ошибка вообще не на счет синтаксических ошибок. я вообще таких запросов раньше не писал. поэтому не знаю. да вообще с высоконагружеными системами не работал..=(
Запрос правильный на 100%. Единственное, что, возможно, переменная $login некорректная приходит. Но это уже Вам лучше знать. Если с ней всё хорошо, то тогда проблема в структуре таблицы (названия таблицы и её полей, типы полей, допустимые значения и прочее).
Спасибо большое! Все работает , разобрались=) Теперь очень прошу вас описать функцию Cron , как запускать этот скрипт через крн. было бы идеально посвятить этому целую тему=))) И еще хоть убейте, не могу найти вашу статью про аудио/видео проигрыватели на сайте. прошу ссылку=) Спасибо за помощь вам, вы мне во многом уже помогли=)))
Про cron постараюсь в скором времени написать. Про аудио: http://myrusakov.ru/html-add-audio.html И про видео: http://myrusakov.ru/html-video.html Ещё на сайте есть поиск, где эти статьи элементарно найти, введя "аудио" и "видео".
Про Cron буду ждать вашей сатьи, так как я не могу с ней разобратся, а она мне очень необходима для онлайн пользователей=)
Михаил! Опять столкнулся с проблемой. пишу запрос на добавление информации зарегестрированным пользователем именно его записи к нему в строку. $res = mysql_query("INSERT INTO information (deiatelnost) VALUES ('$deiatelnost') WHERE login='$login'"); Этим запросом просто не хочет добавлять запись . а вот если я ввожу тот же запрос но уже без login="$login" то все добавляется но соответственно без логина, и уже следовательно вытащить эти данные для конкретного пользователя просто нет возможности. что делаю не так? Могу скинуть на почту полный код action. спасибо заранее=)
Постараюсь объяснить, что Вы хотите: "Я хочу добавить запись в существующую запись". Вам не кажется, что это странно? Если Вам нужно обновлять запись, то используйте команду UPDATE.
так в том то и дело, что я создал чистый столбец дабы разгрузить все остальные(заранее), и там человек который авторизирован под своим логином может добавить новую запись о себе именно ДОБАВИТЬ, ну а после того как добавил он будет апдейтить себя соответственно, Вопрос в том что сейчас запись не добавляется если я ставлю login='$login' =(( А если этой записи нет но добавляет инфу, но она соответственно не относится к этому пользователю так как вытащить ее можно для любого другого пользователя авторизированного на сайте. Что не так с запросом?
Для таких случаев в таблице делают поле user_id, в котором содержится id того пользователя, который добавил данную запись. Всё, что я писал ранее, остаётся в силе. Вы требуете от MySQL абсурд, который он выполнить не сможет.