Язык запросов к базе довольно лаконичен, как и количество основных операций, которые клиент может сделать с базой. Таких операций - 4. Это получение (SELECT), удаление (DELETE), обновление (UPDATE) и добавление данных (INSERT).
Перед тем, как что-то сделать в SQL попробуйте сформулировать на русском языке полное предложение с командой, которую вы хотите дать серверу. Если вам это удалось - то останется все это “перевести” на английский и записать для выполнения :). Не пренебрегайте этим правилом, если вам удалось полностью устно сформулировать задачу - она практически решена.
Самый простая и часто употребляемая команда, которая позволяет получить от сервера практически любую информацию из таблиц. Её синтаксис прост:
SELECT [имя_поля] FROM имя_таблицы
Если дословно: ВЫБРАТЬ поле ИЗ таблицы. Имена полей необходимо указывать через запятую или использовать * для вывода всех полей. В примерах, не забывайте указывать префикс таблиц, если он у вас есть. Вот и вся сложность.
Пример:
Пример:
SELECT type, title FROM node
Самые любопытные смогли догадаться, что этот запрос покажет все заголовки материалов, вместе с
типом этих материала.
WHERE поле условие значение
Получение данных полей таблиц не составляет большого труда, достаточно знать имена полей(какие в них хранятся логические данные) и таблицы. Но есть одно но - в большинстве случаев нужны не все записи, а записи, удовлетворяющие определённому условию. Тут на помощь нам приходит выражение WHERE:
SELECT [имя_поля] FROM имя_таблицы WHERE поле условие значение
К нашему запросу мы добавили условие фильтра, позволяющего из общей массы отобрать только нужные нам данные.
Пример:
SELECT name, mail FROM users WHERE uid = 1
Данных “хакерским” запросом можно получить имя и email пользователя №1 системы, ограничив количество просматриваемых записей только записью, у которой uid = 1 т.е. супер-пользователя сайта.
Выражение WHERE довольно мощное и позволяет создавать очень сложные фильтры, и применять различные условия в зависимости от типа данных поля. Основные условия это:
Примеры:
SELECT title FROM node WHERE type IN ('page', 'forum') AND status = 1;
Выбрать заголовки материалов типов page или forum которые опубликованны. Это же выражение можно переписать в следующем виде:
SELECT title FROM node WHERE (type = 'page' OR type = 'forum') AND status = 1;
SELECT name, mail FROM users WHERE (name like '%sex%') OR (mail like '%sex%');
Позволит просмотреть записи, у которых часть ника или email содержит комбинацию символов ‘sex’.
ORDER BY [BINARY] имя_поля [DESC]
Выражение в запросе позволяет отсортировать выводимые строки по заданным полям. При этом оно не влияет на получаемый результат, а только упорядочивает его вывод. Если используется выражение WHERE, то ORDER BY должно быть после него.
Необязательное BINARY позволяет осуществлять сортировку строковых данных с учётом регистра, а DESC изменить порядок сортировки на обратный.
Пример:
SELECT name FROM users WHERE status = 1 ORDER BY access DESC;
Вывод только ников пользователей, отсортированных по времени их последнего входа на сайт.
LIMIT количество, смещение или LIMIT число или LIMIT число OFFSET смещение
Данное выражение MySQL, в дополнение к WHERE позволяет ограничить количество выводимых SELECT строк заданным количеством. Если указано смещение, то заданное количество строк будет пропущено при начале отсчёта вывода.
Пример:
SELECT name FROM users WHERE status = 1 ORDER BY access DESC LIMIT 5;
Вывод только 5 ников пользователей, отсортированных по времени их последнего входа на сайт.
В отличии от команды SELECT, следующие команды приводят к изменениям данных в таблицах. Поэтому будьте внимательны к правильности их ввода. Команда DELETE используется для удаления одной или нескольких строк в таблице. Синтаксис команды прост:
Имена столбцов не используются, поскольку применяется для удаления целых строк а не значений из строк. Зачастую имеет смысл удалить только часть строк, по заданным критериям, поэтому в команде SELECT можно использовать инструкции WHERE, ORDER BY и LIMIT.
Пример:
DELETE FROM users WHERE (name like '%sex%') OR (mail like '%sex%');
Используя данную команду, мы почистим таблицу пользователей от тех, кто содержит в любой части поля ника или email последовательность ‘sex’
Если вам нужно выполнить полную очистку(удаление) всех данных в таблице - воспользуйтесь командой:
При этом структура таблицы разрушается и заново создаётся. При этом все данные удаляются.
Данная инструкция используется для изменения данных в полях таблицы.
UPDATE имя_таблицы SET имя_поля = значение
Как и в предыдущей команде, тут можно использовать инструкции WHERE, ORDER BY и LIMIT, чтобы ограничить количество и диапазон затрагиваемых строк.
Пример:
UPDATE users SET status = 0 WHERE (name like '%sex%') OR (mail like '%sex%');
В любимом нашем примере мы вместо удаления, снимем флаг активности для отфильтрованных пользователей.
Инструкция используется для добавления новых данных в таблицу.
INSETR INTO имя_таблицы VALUES (значения1), (значения2),...
Значения должны быть все (по числу полей в таблице), записаны через запятую, и их порядок должен соответствовать порядку следования столбцов в таблице. Альтернативный синтаксис:
INSETR INTO имя_таблицы (имена_полей) VALUES (значения1), (значения2),...
В данном случае порядок значений для полей должен соответствовать перечисленному порядку. Пропущенные поля будут заполнены значениями по умолчанию. И ещё один тип синтаксиса:
INSETR INTO имя_таблицы SET имя_поля = значение, …
В данном варианте необходимо указывать, через запятую, имена полей и их значения
Пример:
INSERT INTO role VALUES (3,"Суперадмин"),(4,"Модератор");
Данным запросом была добавлены новые роли с именем Суперадмин и Модератор.
Обратите внимание:
После прочтения это материала вы должны уметь читать, удалять, изменять и добавлять данные в таблицы SQL сервера. Отдохните и мы дальше продолжим знакомство с миром SQL дальше
Предложения, замечания, пожелания - комментарии. Все вопросы задаём на форум