Основные операции 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 /
30097 Views /
7 комментариев