Шпаргалка по основам SQL
Основы SQL
Найти все столбцы и строки в таблице / Find All Columns and Rows in a Table
Символ звездочки или астериск (*
) означает все столбцы.
точка с запятой (;
) завершает утверждение как точка в предложении или вопросительный знак в вопросе.
Пример:
Получение определенных столбцов информации / Retrieving Specific Columns of Information
Получение одного столбца:
Пример:
Получение нескольких столбцов:
Пример:
Псевдонимы имен столбцов / Aliasing Column Names
Пример:
Поиск нужных данных / Finding the Data You Want
Оператор равенства / Equality Operator
Найти все строки, в которых заданное значение соответствует значению столбца.
Пример:
Оператор неравенства / Inequality Operator
Найти все строки, в которых заданное значение не соответствует значению столбца.
Оператор не равно или неравенства можно записать двумя способами. !=
и <>
. Последнее less общий.
Пример:
Реляционные операторы / Relational Operators
Вы можете использовать несколько реляционных операторов:
<
less than<=
less than or equal to>
greater than>=
greater than or equal to
Они в основном используются для сравнения numeric а также date/time типов.
Пример:
Более одного условия / More Than One Condition
Вы можете сравнить несколько значений в условии WHERE
. Если вы хотите проверить, что оба условия верны, используйте ключевое слово AND
, или одно из условий верно, используйте ключевое слово OR
.
Пример:
Поиск в наборе значений / Searching in a Set of Values
Пример:
Чтобы найти все строки, которых нет в наборе значений, вы можете использовать NOT IN
.
Пример:
Поиск в диапазоне значений / Searching within a Range of Values
Пример:
Сопоставление с образцом / Pattern Matching
Размещение символа процента (%
) в любом месте строки в сочетании с LIKE
ключевым словом будет работать как подстановочный знак. Это означает, что его можно заменить любым количеством символов, включая ноль!
Пример:
Специальные ключевые слова PostgreSQL / PostgreSQL Specific Keywords
LIKE
в PostgreSQL чувствителен к регистру. Для поиска без учета регистра используйте ILIKE
.
Отсутствующие значения / Missing Values
Пример:
Чтобы отфильтровать пропущенные значения, можно использовать IS NOT NULL
.
Examples
Изменение данных с помощью SQL
Добавление строки в таблицу / Adding a Row to a Table
Вставка одной строки:
Это вставит значения в порядке следования столбцов в схеме.
Пример:
Вставка одной строки со значениями в любом порядке:
Пример:
Добавление нескольких строк в таблицу / Adding Multiple Rows to a Table
Вставка нескольких строк в один оператор:
Пример:
Обновление всех строк в таблице / Updating All Rows in a Table
Оператор обновления для всех строк:
Знак =
отличается от оператора равенства из условия WHERE
. Это assignment operator потому что вы присваиваете новое значение чему-то.
Пример:
Обновить несколько столбцов во всех строках:
Пример:
Обновление определенных строк / Updating Specific Rows
Оператор обновления для определенных строк:
Пример:
Обновите несколько столбцов для определенных строк:
Пример:
Удаление данных из всех строк таблицы / Removing Data from All Rows in a Table
Чтобы удалить все строки из таблицы:
Пример:
Удаление определенных строк / Removing Specific Rows
Чтобы удалить определенные строки из таблицы:
Пример:
Транзакции / Transactions
Отключите автофиксацию и начните транзакцию:
Или просто:
Чтобы сохранить все результаты операторов после начала транзакции на диск:
Чтобы сбросить состояние базы данных до начала транзакции:
Отчетность с помощью SQL
Упорядочивание столбцов
Сортировка по критериям одного столбца:
ASC
используется для упорядочения результатов в порядке возрастания.
DESC
используется для упорядочивания результатов в порядке убывания.
Examples:
Сортировка по критериям нескольких столбцов:
Приоритет отдается слева направо.
Examples:
Ограничение результатов
- SQLite, PostgreSQL и MySQL
Чтобы ограничить количество возвращаемых результатов, используйте LIMIT
ключевое слово.
- MS SQL
Чтобы ограничить количество возвращаемых результатов, используйте TOP
ключевое слово.
- Oracle
Чтобы ограничить количество возвращаемых результатов, используйте
ROWNUM
ключевое слово вWHERE
пункте.
Перелистывание результатов
- SQLite, PostgreSQL и MySQL
Чтобы просмотреть результаты, вы можете либо использовать OFFSET
ключевое слово в сочетании с LIMIT
ключевым словом или просто с одним LIMIT.
- MS SQL и Oracle
Чтобы просмотреть результаты, вы можете либо использовать OFFSET
ключевое слово в сочетании с FETCH
ключевым словом. Нельзя использовать с TOP
.
Определения синтаксиса
-
Keywords: Команды, выдаваемые базе данных. Данные, представленные в запросах, не изменяются.
-
Operators: Выполняет сравнения и простые манипуляции
-
Functions: Представление данных по-разному посредством более сложных манипуляций
-
Arguments и Parameters: Значения, передаваемые в функции.
Функция выглядит так:
Examples:
Объединение строк
- SQLite, PostgreSQL и Oracle
Используйте оператор конкатенации ||
.
- MS SQL
Используйте оператор конкатенации +
.
- MySQL, PostgreSQL и MS SQL
Используйте CONCAT()
функцию.
Нахождение длины строк
Чтобы получить длину значения или столбца, используйте LENGTH()
функцию.
Изменение регистра строк
Использовать UPPER()
функцию для преобразования текста в верхний регистр.
Использовать LOWER()
функцию для перевода текста в нижний регистр.
Создать выдержки с подстрокой
Чтобы создать меньшие строки из большего фрагмента текста, вы можете использовать SUBSTR()
функцию или функцию подстроки.
-
\<start> : Specifies where to start in the string
-
if
is 0 (zero), then it is treated as 1. -
if
is positive, then the function counts from the beginning of string to find the first character. -
if
is negative, then the function counts backward from the end of string.
-
-
\<finish> : length of the desired substring
OUTPUT: cdef
OUTPUT: cdef
Замена частей текста
Чтобы заменить фрагмент строки текста в большом тексте, вы можете использовать REPLACE()
функцию.
Подсчет результатов
Для подсчета строк вы можете использовать COUNT()
функцию.
Для подсчета уникальных записей используйте DISTINCT
:
Для подсчета агрегированных строк с общими значениями используйте метод GROUP BY
:
Получение итогов
Чтобы суммировать числовые столбцы, используйте SUM()
функцию.
Вычисление средних значений
Чтобы получить среднее значение числового столбца, используйте AVG()
функцию.
Нахождение максимального и минимального значений
Чтобы получить максимальное значение числового столбца, используйте MAX()
функцию.
Чтобы получить минимальное значение числового столбца, используйте MIN()
функцию.
Математические операторы
*
Умножить/
Разделять+
Добавлять-
Вычесть
Актуальные даты и время
- SQLite
Чтобы получить текущую дату, используйте: DATE("now")
Чтобы получить текущее время, используйте: TIME("now")
Чтобы получить текущую дату и время: DATETIME("NOW")
- MS SQL
Чтобы получить текущую дату, используйте: CONVERT(date, GETDATE())
Чтобы получить текущее время, используйте: CONVERT(time, GETDATE())
Чтобы получить текущую дату и время: GETDATE()
- MySQL
Чтобы получить текущую дату, используйте: CURDATE()
Чтобы получить текущее время, используйте: CURTIME()
Чтобы получить текущую дату и время: NOW()
- Oracle и PostgreSQL
Чтобы получить текущую дату, используйте: CURRENT_DATE
Чтобы получить текущее время, используйте: CURRENT_TIME
Чтобы получить текущую дату и время: CURRENT_TIMESTAMP
Вычисление дат
Смотрите сайты документации:
Форматирование дат
Смотрите сайты документации:
Запросы к реляционным базам данных
СОЕДИНЕНИЯ SQL / SQL JOINs
JOIN объединяет связанные данные из нескольких таблиц в набор результатов.
Два наиболее распространенных типа соединений:
- INNER JOIN
- OUTER JOIN
ВНУТРЕННИЕ СОЕДИНЕНИЯ / INNER JOINs
INNER JOIN возвращает строки, которые совпадают из обеих таблиц.
Пример:
INNER JOIN объединение нескольких таблиц:
Пример:
ВНЕШНИЕ СОЕДИНЕНИЯ / OUTER JOINs
Есть 3 типа OUTER JOIN:
- LEFT OUTER JOIN - СОЕДИНЯЕТ все совпадающие данные и все не совпадающие строки из таблицы left в запросе
- RIGHT OUTER JOIN - СОЕДИНЯЕТ все совпадающие данные и все не совпадающие строки из таблицы right в запросе
- FULL OUTER JOIN - СОЕДИНЯЕТ все совпадающие данные, а затем все несовпадающие строки из обеих таблиц.
Example:
Если вы хотите получить количество продуктов для каждой категории, даже для категорий без продуктов, OUTER JOIN
- лучшее решение.
Следующие два примера дадут одинаковые результаты, однако один из них будет LEFT OUTER JOIN
, а другой — RIGHT OUTER JOIN
.
Set операции / Set Operations
Операции набора объединяют данные в один набор на основе определений столбцов и данных, содержащихся в каждом столбце.
Четыре операции над множествами:
- UNION
- UNION ALL
- INTERSECT
- EXCEPT
Количество столбцов должно совпадать. Если количество столбцов не совпадает, это приведет к ошибке.
Примеры объединения / UNION Examples
Объединения возвращают все различные значения из обоих наборов данных без дубликатов.
Получите список уникальных ресторанов как в северных, так и в южных торговых центрах.
Получите список уникальных классов, преподаваемых в двух школах. Упорядочить их по имени класса.
Объединение всех / UNION ALL
Union all возвращает все значения из обоих наборов данных — с дубликатами.
Получить список всех имен для мальчиков и девочек и заказать их по имени.
Пересечения / INTERSECT
Возвращает только значения, которые есть в обоих наборах данных.
Получить список классов, предлагаемых в обеих школах.
Получите список ресторанов в обоих торговых центрах.
Исключения / EXCEPT
Возвращает данные из первого набора данных, которых нет во втором.
Получить список местных магазинов в торговом центре.
Подзапросы / Subqueries
Подзапросы — это запросы внутри запросов. Подзапрос также можно назвать внутренним запросом, а "родительский" запрос называется внешним запросом.
Существует два основных способа использования подзапроса:
- В
IN
условии - Как производная или временная таблица
Подзапрос в IN
условии должен иметь только один столбец.
Пример:
Получите список имен и адресов электронной почты пользователей, которые потратили более 100 долларов за одну транзакцию.
Получите список имен и адресов электронной почты пользователей, которые в общей сложности потратили более 1000 долларов.