SQL, манипуляция данными. Часть 1.
БД можно представить трехмерной фигурой из двухмерных слоев-таблиц, наподобие листов Excel. Сами слои состоят из ячеек. В ячейках - числа или строки.
SQL - язык гибкого взаимодействия с этой фигурой.
Пример простых взаимодействий с БД - выборка данных (SELECT) и вставка (INSERT). К слову, капслок в операторах - не более чем условность для простоты разделения операторов и оперндов. Сам я её соблюдаю, но и в lowercase все работает.
Сейчас рассмотрим выборку.
#SQL
БД можно представить трехмерной фигурой из двухмерных слоев-таблиц, наподобие листов Excel. Сами слои состоят из ячеек. В ячейках - числа или строки.
SQL - язык гибкого взаимодействия с этой фигурой.
Пример простых взаимодействий с БД - выборка данных (SELECT) и вставка (INSERT). К слову, капслок в операторах - не более чем условность для простоты разделения операторов и оперндов. Сам я её соблюдаю, но и в lowercase все работает.
Сейчас рассмотрим выборку.
#SQL
SQL, манипуляция данными. Часть 2.
Возьмем пример выборки:
SELECT login, post_count FROM wp_logs WHERE post_count NOT BETWEEN 5 AND 9;
- SELECT: оператор, указывающий, что операция будет по выборке (а не вставке и др.).
- login, post_count: названия столбцов таблицы, которыми будет ограничена выборка.
- WHERE: условный ограничитель по значениям в таблице. В примере ограничены значения для столбца post_count.
- NOT BETWEEN: комбинация операторов NOT и BETWEEN. Без отрицательной частицы BETWEEN выбирает данные внутри множества, с ней - вне неё:
1) BETWEEN 5 AND 10 = {5...10}
2) NOT BETWEEN 5 AND 10: {∞...5} и {10...∞}
- AND: просто "И". Аналог && в си-подобных языках.
#SQL
Возьмем пример выборки:
SELECT login, post_count FROM wp_logs WHERE post_count NOT BETWEEN 5 AND 9;
- SELECT: оператор, указывающий, что операция будет по выборке (а не вставке и др.).
- login, post_count: названия столбцов таблицы, которыми будет ограничена выборка.
- WHERE: условный ограничитель по значениям в таблице. В примере ограничены значения для столбца post_count.
- NOT BETWEEN: комбинация операторов NOT и BETWEEN. Без отрицательной частицы BETWEEN выбирает данные внутри множества, с ней - вне неё:
1) BETWEEN 5 AND 10 = {5...10}
2) NOT BETWEEN 5 AND 10: {∞...5} и {10...∞}
- AND: просто "И". Аналог && в си-подобных языках.
#SQL
SQL, манипуляция данными. Часть 3.
Числовые операторы SQL:
- стандартные нумерические операторы. != и т.п.
- (NOT) BETWEEN ... AND ... .
- (NOT) IN (...). В скобках листинг значений для выборки, в том числе отрицательной.
Строковые операторы:
=: точное совпадение, аналог ===.
!= или <>: отрицательное точное совпадение.
(NOT) LIKE: нечувствительное к регистру совпадение.
%: аналог *. в регулярных выражениях. Иначе говоря - выборка неорганиченного множества символов до или после операнда. Используется только с LIKE.
_ (нижнее подчеркивание): аналог *, или указатель одного любого символа. Только с LIKE.
[]: диапазон символов или последовательность.
[^]: исключающий диапазон.
(NOT) IN: то же, что с числами, но для строк.
Строковые аргументы обязательно обязательно заключаются в двойные кавычки: "mozilla".
#SQL
Числовые операторы SQL:
- стандартные нумерические операторы. != и т.п.
- (NOT) BETWEEN ... AND ... .
- (NOT) IN (...). В скобках листинг значений для выборки, в том числе отрицательной.
Строковые операторы:
=: точное совпадение, аналог ===.
!= или <>: отрицательное точное совпадение.
(NOT) LIKE: нечувствительное к регистру совпадение.
%: аналог *. в регулярных выражениях. Иначе говоря - выборка неорганиченного множества символов до или после операнда. Используется только с LIKE.
_ (нижнее подчеркивание): аналог *, или указатель одного любого символа. Только с LIKE.
[]: диапазон символов или последовательность.
[^]: исключающий диапазон.
(NOT) IN: то же, что с числами, но для строк.
Строковые аргументы обязательно обязательно заключаются в двойные кавычки: "mozilla".
#SQL
SQL, манипуляция данными. Часть 4.
Сортировка выборки.
Для сортировки используют операторы: DISTINCT, GROUP BY, ORDER BY, LIMIT, OFFSET и некоторые другие. Рассмотрим их отдельно.
- DISTINCT:
полностью удаляет любые дубликаты. Используется после ключевого оператора SELECT.
- ORDER BY:
упорядочивает выборку по столбцу, принимая опциональные условия ASC/DESC (по-восходящему / по нисходящему). Пример: ORDER BY column DESC отсортирует строки от 4 к 1.
- LIMIT и OFFSET:
LIMIT задает лимит строк с совпадениями в выборке.
OFFSET устанавливает точку отсчета: например, OFFSET 5 значает "вывести совпадения, начиная с шестого". Почему с шестого? Пятый входит в ограничение.
Эта пара употребляется после всех прочих операторов.
#SQL
Сортировка выборки.
Для сортировки используют операторы: DISTINCT, GROUP BY, ORDER BY, LIMIT, OFFSET и некоторые другие. Рассмотрим их отдельно.
- DISTINCT:
полностью удаляет любые дубликаты. Используется после ключевого оператора SELECT.
- ORDER BY:
упорядочивает выборку по столбцу, принимая опциональные условия ASC/DESC (по-восходящему / по нисходящему). Пример: ORDER BY column DESC отсортирует строки от 4 к 1.
- LIMIT и OFFSET:
LIMIT задает лимит строк с совпадениями в выборке.
OFFSET устанавливает точку отсчета: например, OFFSET 5 значает "вывести совпадения, начиная с шестого". Почему с шестого? Пятый входит в ограничение.
Эта пара употребляется после всех прочих операторов.
#SQL
SQL, манипуляция данными. Часть 5: нормализация
Если грубо и вкратце, то нормализация БД - разбитие данных по разным таблицам, чтобы сократить дублирование информации. БД становится меньше, работать с данными - проще.
Допустим, есть данные об авторах и их книгах. Если хранить все в одной таблице, очевидно, что имена авторов будут дублироваться относительно их книг:
ПЛиО 1 | Мартин
ПЛиО 2 | Мартин
Подробное руководство по JS | Флэнеган
Вместо этого можно составить две таблицы - авторов и книг по жанрам.
При нормализации строки в разбитых таблицах объединяют ключом - например, числовым ID.
Чтобы работать с данными из нескольких таблиц, их нужно объединять. Для этого используют оператор JOIN. Джойнинг используется не только так, поэтому уместно перед JOIN использовать оператор INNER.
Чтобы указать, по каким столбцам с ключами определять совпадения, используют оператор ON.
Пример объединяющего запроса:
SELECT *
FROM authors
INNER JOIN fantasy
ON authors.id = fantasy.book_id
#SQL
Если грубо и вкратце, то нормализация БД - разбитие данных по разным таблицам, чтобы сократить дублирование информации. БД становится меньше, работать с данными - проще.
Допустим, есть данные об авторах и их книгах. Если хранить все в одной таблице, очевидно, что имена авторов будут дублироваться относительно их книг:
ПЛиО 1 | Мартин
ПЛиО 2 | Мартин
Подробное руководство по JS | Флэнеган
Вместо этого можно составить две таблицы - авторов и книг по жанрам.
При нормализации строки в разбитых таблицах объединяют ключом - например, числовым ID.
Чтобы работать с данными из нескольких таблиц, их нужно объединять. Для этого используют оператор JOIN. Джойнинг используется не только так, поэтому уместно перед JOIN использовать оператор INNER.
Чтобы указать, по каким столбцам с ключами определять совпадения, используют оператор ON.
Пример объединяющего запроса:
SELECT *
FROM authors
INNER JOIN fantasy
ON authors.id = fantasy.book_id
#SQL