Вход

Основные операции SQL

Основные операции SQL

Ни один крупных сайт не обходится без базы данных. Вывод статей, заголовков, ключевых слов — всё это осуществляется из базы данных. В этой статье мы рассмотрим основные операции SQL.

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

Основные операции SQL:

  • SELECT (выборка) — берёт данные из соответствующей таблицы (таблиц) базы данных.
    Выбор всех полей из таблицы (* не рекомендуется к использованию, влияет на общее время выполнения запроса):

    1
    
    SELECT * FROM имя таблицы;

    Выбор определённых полей из таблицы:

    1
    
    SELECT id, title, content FROM имя таблицы;
  • UPDATE
    1
    
    UPDATE `имя таблицы` SET name='Ivan' WHERE id=1
  • INSERT — добавление значений в таблицу
    1
    2
    
    -- NULL заполняем в обязательное к заполнению поле
    INSERT INTO имя таблицы (id, name, surname) VALUES(2, 'IVAN', NULL);
  • DELETE
    1
    
    DELETE FROM `имя таблицы` WHERE id = 1;
  • TRUNCATE (Очистка всей таблицы)

    1
    
    TRUNCATE TABLE TABLE_NAME

 

Операторы

Можно изменить порядок полей в выборке и тогда результат также будет в другой последовательности:

1
SELECT content, id, title FROM имя таблицы;

Оператор DISTINCT убирает повторяющиеся значения в выборке:

1
SELECT DISTINCT title FROM имя таблицы;

Оператор WHERE добавляет ограничение на выборку:

1
SELECT title FROM имя таблицы WHERE id > 2;

Операторы сравнения:

Правило. Порядок при сравнении: цифры, латинские буквы в верхнем регистре, латинские буквы в нижнем регистре, кириллические символы! (использование не рекомендуется)

1
2
-- такая запись также является верной, смотри правило выше
SELECT title FROM имя таблицы WHERE title > 'текст';
  • Оператор =
  • Оператор >
  • Оператор <
  • Оператор >=
  • Оператор <=
  • Оператор <> или != (неравенство)

Все перечисленные операции могут быть объединены: AND, OR, NOT (изменение результата с true на false и наоборот)

Арифметические операции:

В языке sql могут быть использованы (), +, -, *, /.

Специальные операторы

Оператор IN — перечисление значений:

1
2
SELECT name FROM имя таблицы WHERE id = 2 OR id = 5 OR id = 8;
SELECT name FROM имя таблицы WHERE id IN(2, 5, 8); -- сокращённая запись используя IN

Оператор BETWEEN — диапазон значений:

1
2
3
4
5
-- выбор всех значений где id от 2 до 5
SELECT name FROM имя таблицы WHERE id BETWEEN 2 AND 5;
 
-- выбор всех полей где name находится в диапазоне от буквы A и до K
SELECT * FROM имя таблицы WHERE name BETWEEN 'A' AND 'K';

Оператор IS NULL — выбор поля без значения:
NULL — это поле без значения (пустое поле).

1
2
3
4
5
-- выбор всех полей где поле name не имеет значения (равно NULL)
SELECT * FROM имя таблицы WHERE name IS NULL;
 
-- выбор всех полей где поле name не NULL
SELECT * FROM имя таблицы WHERE name IS NOT NULL;

Оператор LIKE — поиск по таблицам, используется для коротких полей (например VARCHAR):

1
2
3
4
5
6
7
8
-- Символ % указывает любую последовательность символов
SELECT img FROM имя таблицы WHERE img LIKE '%.jpg';
 
-- Символ _ указывает наличие любого ОДНОГО символа
SELECT img FROM имя таблицы WHERE img LIKE '_.jpg';
 
-- Экранирование символов \
SELECT * FROM имя таблицы WHERE name = '\'';

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

1
2
3
4
-- text,title поля с текстовым индексом
-- AGAINST - полнотекстовый режим поиска (полное совпадение слова), короткие слова исключаются из поиска
 
SELECT * FROM page WHERE MATCH (text,title) AGAINST ('поисковое слово');

Агрегатные функции

  • COUNT() — количество значений или количество строк
    1
    2
    3
    4
    5
    6
    7
    8
    
    -- Не считает NULL
    SELECT COUNT(name) FROM `имя таблицы`;
     
    -- подсчёт количества рядов
    SELECT COUNT(*) FROM `имя таблицы`;
     
    -- подсчёт значений, не учитывая повторения
    SELECT COUNT(DISTINCT name) FROM `имя таблицы`;
  • SUMM() — суммирует значения полей
    1
    
    SELECT SUMM(price) FROM `имя таблицы`;
  • AVG() — среднее значение
    1
    
    SELECT AVG(price) FROM `имя таблицы`;
  • MIN() — минимальный элемент
    1
    
    SELECT MIN(price) FROM `имя таблицы`;
  • MAX() — максимальный элемент
    1
    
    SELECT MAX(price) FROM `имя таблицы`;
  • GROUP BY — используется для объединения результатов выборки по одному или нескольким столбцам.
    1
    2
    3
    
    -- сгруппировать результаты по полю name.
    -- при повторении значений в поле name будут показаны первые попавшиеся и отсортированы, причём другие значений повторяющихся полей также будут в памяти.
    SELECT name, MAX(price) FROM `имя таблицы` GROUP BY name;
  • HAVING() — сортировка групп
    1
    2
    
    -- сгруппировать результаты с учётом условия: максимальная цена больше 100
    SELECT name, MAX(price) FROM `имя таблицы` GROUP BY name HAVING MAX(price) > 100;

Сортировки

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

  • ORDER BY ASC — сортировка по возрастанию.

    ASC можно не писать, подставляется по умолчанию.

    1
    
    SELECT * FROM `имя таблицы` ORDER BY id ASC;
  • ORDER BY DESC — сортировка по убыванию
    1
    
    SELECT * FROM `имя таблицы` ORDER BY id DESC;

Пример сортировки сразу по нескольким полям:

1
2
-- прямая сортировка для поля id и обратная для поля name
SELECT * FROM `имя таблицы` ORDER BY id, name DESC;

Ограничение выборки LIMIT

1
2
3
4
5
6
-- вывод первых 10 записей
SELECT * FROM `имя таблицы` LIMIT 10;
 
-- первое значение с какой записи начинать (отсчёт с нуля)
-- второе значение - сколько взять записей
SELECT * FROM `имя таблицы` LIMIT 10, 20;

Псевдонимы MySQL

Это именование некоторого выражения каким-то своим именем и оперирование уже с этим именем. Псевдонимы используются исключительно для удобства.

1
2
3
4
SELECT name AS new_name FROM `имя таблицы`;
 
-- пример для агрегатных функций
SELECT COUNT(*) AS COUNT FROM `имя таблицы`;

Для сокращения имён таблиц используется следующая запись:

1
SELECT u.name, o.price FROM users u, orders o WHERE o.user_id = u.id;

29 декабря 2017 /

27224 Views /

7 комментариев
Ilya Web developer
Author

«Всегда пишите код так, будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете.»Martin Golding