SQL - Базовый SQL

Язык запросов к базе довольно лаконичен, как и количество основных операций, которые клиент может сделать с базой. Таких операций - 4. Это получение (SELECT), удаление (DELETE), обновление (UPDATE) и добавление данных (INSERT).

Перед тем, как что-то сделать в SQL попробуйте сформулировать на русском языке полное предложение с командой, которую вы хотите дать серверу. Если вам это удалось - то останется все это “перевести” на английский и записать для выполнения :). Не пренебрегайте этим правилом, если вам удалось полностью устно сформулировать задачу - она практически решена.

SELECT

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

SELECT [имя_поля] FROM имя_таблицы

Если дословно: ВЫБРАТЬ поле ИЗ таблицы. Имена полей необходимо указывать через запятую или использовать * для вывода всех полей. В примерах, не забывайте указывать префикс таблиц, если он у вас есть. Вот и вся сложность.

Пример:
Пример:
SELECT type, title FROM node

Самые любопытные смогли догадаться, что этот запрос покажет все заголовки материалов, вместе с
типом этих материала.

WHERE

WHERE поле условие значение

Получение данных полей таблиц не составляет большого труда, достаточно знать имена полей(какие в них хранятся логические данные) и таблицы. Но есть одно но - в большинстве случаев нужны не все записи, а записи, удовлетворяющие определённому условию. Тут на помощь нам приходит выражение WHERE:

SELECT [имя_поля] FROM имя_таблицы WHERE поле условие значение

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

Пример:
SELECT name, mail FROM users WHERE uid = 1

Данных “хакерским” запросом можно получить имя и email пользователя №1 системы, ограничив количество просматриваемых записей только записью, у которой uid = 1 т.е. супер-пользователя сайта.

Выражение WHERE довольно мощное и позволяет создавать очень сложные фильтры, и применять различные условия в зависимости от типа данных поля. Основные условия это:

  • знаки сравнения >, <, =, >=(больше или равно), <=(меньше или равно), <> или != (не равно).
  • оператор LIKE (шаблон) для строк. В шаблоне: % - любое количество, _ - 1 символ
  • AND, OR, NOT, XOR стандартные функции И, ИЛИ, НЕ, ОДИН ИЗ. Используйте ( ), для избежания двусмысленностей
  • IN (список_значений) аналог множественного OR

Примеры:
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

ORDER BY [BINARY] имя_поля [DESC]

Выражение в запросе позволяет отсортировать выводимые строки по заданным полям. При этом оно не влияет на получаемый результат, а только упорядочивает его вывод. Если используется выражение WHERE, то ORDER BY должно быть после него.
Необязательное BINARY позволяет осуществлять сортировку строковых данных с учётом регистра, а DESC изменить порядок сортировки на обратный.

Пример:
SELECT name FROM users WHERE status = 1 ORDER BY access DESC;

Вывод только ников пользователей, отсортированных по времени их последнего входа на сайт.

LIMIT

LIMIT количество, смещение  или  LIMIT число или LIMIT число OFFSET смещение

Данное выражение MySQL, в дополнение к WHERE позволяет ограничить количество выводимых SELECT строк заданным количеством. Если указано смещение, то заданное количество строк будет пропущено при начале отсчёта вывода.

Пример:
SELECT name FROM users WHERE status = 1 ORDER BY access DESC LIMIT 5;

Вывод только 5 ников пользователей, отсортированных по времени их последнего входа на сайт.

DELETE

В отличии от команды SELECT, следующие команды приводят к изменениям данных в таблицах. Поэтому будьте внимательны к правильности их ввода. Команда DELETE используется для удаления одной или нескольких строк в таблице. Синтаксис команды прост:

DELETE FROM имя_таблиц;

Имена столбцов не используются, поскольку применяется для удаления целых строк а не значений из строк. Зачастую имеет смысл удалить только часть строк, по заданным критериям, поэтому в команде SELECT можно использовать инструкции WHERE, ORDER BY и LIMIT.

Пример:
DELETE FROM users WHERE (name like '%sex%') OR (mail like '%sex%');

Используя данную команду, мы почистим таблицу пользователей от тех, кто содержит в любой части поля ника или email последовательность ‘sex’

Если вам нужно выполнить полную очистку(удаление) всех данных в таблице - воспользуйтесь командой:

TRUNCATE TABLE имя_таблицы

При этом структура таблицы разрушается и заново создаётся. При этом все данные удаляются.

UPDATE

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

UPDATE имя_таблицы SET имя_поля = значение

Как и в предыдущей команде, тут можно использовать инструкции WHERE, ORDER BY и LIMIT, чтобы ограничить количество и диапазон затрагиваемых строк.

Пример:
UPDATE users SET status = 0 WHERE (name like '%sex%') OR (mail like '%sex%');

В любимом нашем примере мы вместо удаления, снимем флаг активности для отфильтрованных пользователей.

INSERT

Инструкция используется для добавления новых данных в таблицу.

INSETR INTO имя_таблицы VALUES (значения1), (значения2),...

Значения должны быть все (по числу полей в таблице), записаны через запятую, и их порядок должен соответствовать порядку следования столбцов в таблице. Альтернативный синтаксис:

INSETR INTO имя_таблицы (имена_полей) VALUES (значения1), (значения2),...

В данном случае порядок значений для полей должен соответствовать перечисленному порядку. Пропущенные поля будут заполнены значениями по умолчанию. И ещё один тип синтаксиса:

INSETR INTO имя_таблицы SET имя_поля = значение,

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

Пример:
INSERT INTO role VALUES (3,"Суперадмин"),(4,"Модератор");

Данным запросом была добавлены новые роли с именем Суперадмин и Модератор.

Обратите внимание:

  • Использование * приводит к выводу полей, которые зачастую не нужны, а нагрузка на сервер значительно возрастает, для получения данных по ним. Старайтесь избегать использования * в рабочих запросах.
  • Имена полей вы можете использовать несколько раз,что бывает полезно вкупе с синонимами.
  • Всегда старайтесь ограничить запрос только минимально реально необходимыми данными, не создавая излишнюю нагрузку на сервер и канал связи.
  • Прежде чем выполнить команду DELETE или UPDATE проверьте, используя SELECT, правильно ли вы накладываете фильтр на данные.

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

Предложения, замечания, пожелания - комментарии. Все вопросы задаём на форум

Комментарии (1)