AND, OR и NOT Операторы
Предложение WHERE можно комбинировать с операторами AND, OR и NOT.
Операторы AND и OR используются для фильтрации записей на основе более одного условия:
- Оператор AND отображает запись, если все условия разделены AND являются TRUE.
- Оператор OR отображает запись, если любое из условий, разделенных OR является TRUE.
- Оператор NOT отображает запись, если условие является NOT TRUE.
Демонстрационная база данных
Здесь показана полная таблица "Customers" ("Клиенты") из образца базы данных Northwind
Опираясь на таблицу, примеры по каждому оператору и их комбинированию находятся в фото!
Предложение WHERE можно комбинировать с операторами AND, OR и NOT.
Операторы AND и OR используются для фильтрации записей на основе более одного условия:
- Оператор AND отображает запись, если все условия разделены AND являются TRUE.
- Оператор OR отображает запись, если любое из условий, разделенных OR является TRUE.
- Оператор NOT отображает запись, если условие является NOT TRUE.
Демонстрационная база данных
Здесь показана полная таблица "Customers" ("Клиенты") из образца базы данных Northwind
Опираясь на таблицу, примеры по каждому оператору и их комбинированию находятся в фото!
👍2🔥1
SQL SELECT TOP
Выражение SELECT TOP используется для определения количества записей при выборке.
SQL SELECT TOP полезен для больших таблиц с тысячами записей. Возврат большого количества записей может повлиять на производительность.
Не все системы баз данных поддерживают предложение SELECT TOP. MySQL поддерживает предложение LIMIT для выбора ограниченного количества записей, тогда как Oracle использует FETCH FIRST n ROWS ONLY и ROWNUM.
Все виды синтаксисов - здесь
В таблице приведена выборка из таблицы "Customers" базы данных Northwind
В фото разбираем такие примеры, как:
1 фото - SQL TOP, LIMIT и FETCH FIRST
2 фото - SQL TOP PERCENT
3 фото - Использование выражения WHERE
Выражение SELECT TOP используется для определения количества записей при выборке.
SQL SELECT TOP полезен для больших таблиц с тысячами записей. Возврат большого количества записей может повлиять на производительность.
Не все системы баз данных поддерживают предложение SELECT TOP. MySQL поддерживает предложение LIMIT для выбора ограниченного количества записей, тогда как Oracle использует FETCH FIRST n ROWS ONLY и ROWNUM.
Все виды синтаксисов - здесь
В таблице приведена выборка из таблицы "Customers" базы данных Northwind
В фото разбираем такие примеры, как:
1 фото - SQL TOP, LIMIT и FETCH FIRST
2 фото - SQL TOP PERCENT
3 фото - Использование выражения WHERE
👍2
Почему данный код выведет ошибку?
SELECT id, name, CONCAT ('EU:', city) AS city_m
FROM customers
WHERE city_m = 'EU:Oslo';
Код выдаст ошибку, так как в данном случае alias нельзя использовать в операторе WHERE.
Порядок выполнения упомянутого SELECT запроса следующий:
1. FROM
2. WHERE
3. SELECT
Соответственно при выполнении команды WHERE, alias, задаваемый в SELECT еще неизвестен.
Для PostgreSQL или MySQL данную проблему можно решить, например, следующим образом:
```WITH ct AS (
SELECT id, name, CONCAT ('EU:', city) AS city_m
FROM customers
)
SELECT ct.*
FROM ct
WHERE ct.city_m = 'EU:Oslo';
SELECT id, name, CONCAT ('EU:', city) AS city_m
FROM customers
WHERE city_m = 'EU:Oslo';
Код выдаст ошибку, так как в данном случае alias нельзя использовать в операторе WHERE.
Порядок выполнения упомянутого SELECT запроса следующий:
1. FROM
2. WHERE
3. SELECT
Соответственно при выполнении команды WHERE, alias, задаваемый в SELECT еще неизвестен.
Для PostgreSQL или MySQL данную проблему можно решить, например, следующим образом:
```WITH ct AS (
SELECT id, name, CONCAT ('EU:', city) AS city_m
FROM customers
)
SELECT ct.*
FROM ct
WHERE ct.city_m = 'EU:Oslo';
👍10❤1
#вопросы_с_собеседований
Имеет ли значение порядок колонок в составном индексе?
Да, порядок колонок в составном индексе имеет значение.
Рассмотрим пример:
У нас есть таблица orders с колонками order_id, customer_id, order_date, product_id и quantity. Нам необходимо создать составной индекс для ускорения поиска заказов по customer_id и order_date.
Мы можем создать два индекса:
1. Индекс по (customer_id, order_date)
2. Индекс по (order_date, customer_id)
В первом случае, запросы с условием WHERE customer_id = ? AND order_date = ? будут выполняться быстрее, так как эти колонки находятся в порядке, указанном в индексе.
Во втором случае, запросы с условием WHERE order_date = ? AND customer_id = ? будут выполняться медленнее, так как порядок колонок не соответствует порядку в индексе.
Таким образом, порядок колонок в составном индексе имеет значение и должен соответствовать порядку, в котором используются колонки в запросах.
Имеет ли значение порядок колонок в составном индексе?
Да, порядок колонок в составном индексе имеет значение.
Рассмотрим пример:
У нас есть таблица orders с колонками order_id, customer_id, order_date, product_id и quantity. Нам необходимо создать составной индекс для ускорения поиска заказов по customer_id и order_date.
Мы можем создать два индекса:
1. Индекс по (customer_id, order_date)
2. Индекс по (order_date, customer_id)
В первом случае, запросы с условием WHERE customer_id = ? AND order_date = ? будут выполняться быстрее, так как эти колонки находятся в порядке, указанном в индексе.
Во втором случае, запросы с условием WHERE order_date = ? AND customer_id = ? будут выполняться медленнее, так как порядок колонок не соответствует порядку в индексе.
Таким образом, порядок колонок в составном индексе имеет значение и должен соответствовать порядку, в котором используются колонки в запросах.
👍9🔥1😱1
Какой запрос PostgreSQL возвратит ряд целых чисел от 5 до 10 включительно.
Anonymous Quiz
15%
GENERATE numbers (5, 10);
17%
GENERATE series [5, 10];
27%
SELECT generate_int (5, 10);
14%
SELECT generate_series (5, 10);
8%
Ничего из перечисленного
19%
Посмотреть ответ
👍4🔥2
Пейджинг данных OFFSET…FECTCH
Пейджинг данных – это процесс разбиения большого объема данных на меньшие части или страницы. Это может быть полезно при работе с большими таблицами, когда нужно извлечь данные только для определенной страницы.
Оператор OFFSET…FETCH был добавлен в SQL Server 2012 и позволяет выбирать данные с определенной позиции. Он имеет следующий синтаксис:
SELECT {columns}
FROM {table}
ORDER BY {column}
OFFSET {offset} ROWS
FETCH NEXT {fetch} ROWS ONLY
- {columns} – список столбцов для извлечения данных
- {table} – имя таблицы
- {column} – столбец для сортировки
- {offset} – количество строк для пропуска
- {fetch} – количество строк для выборки
Пейджинг данных – это процесс разбиения большого объема данных на меньшие части или страницы. Это может быть полезно при работе с большими таблицами, когда нужно извлечь данные только для определенной страницы.
Оператор OFFSET…FETCH был добавлен в SQL Server 2012 и позволяет выбирать данные с определенной позиции. Он имеет следующий синтаксис:
SELECT {columns}
FROM {table}
ORDER BY {column}
OFFSET {offset} ROWS
FETCH NEXT {fetch} ROWS ONLY
- {columns} – список столбцов для извлечения данных
- {table} – имя таблицы
- {column} – столбец для сортировки
- {offset} – количество строк для пропуска
- {fetch} – количество строк для выборки
👍4
С помощью какого ключевого слова отменяется транзакция?
Anonymous Quiz
5%
EXIT
17%
DECLINE
6%
RESET
64%
ROLLBACK
8%
Узнать ответ
👍8
Стоимостной подход в SQL
Стоимостной подход - это один из методов оптимизации запросов в SQL. Он основывается на том, что оптимальный план запроса может быть выбран путем оценки стоимости каждого возможного плана и выбора того, который имеет наименьшую стоимость.
Для выполнения данного запроса в SQL сервере может быть несколько возможных планов, например:
1. Сначала выполнить выборку из таблицы customers, затем из orders. Далее объединить результаты с помощью оператора JOIN по customer_id.
2. Сначала выполнить выборку из таблицы orders, затем из customers. Далее объединить результаты с помощью оператора JOIN по customer_id.
3. Использовать индексы на таблицах для выполнения быстрой выборки.
Для выбора наилучшего плана выполнения запроса SQL-сервер оценивает стоимость каждого плана, исходя из статистики таблиц, наличия индексов и других факторов.
Например, если таблица customers содержит много строк и немного соответствующих строк в таблице orders, то выборка из таблицы customers должна быть выполнена первой, чтобы уменьшить количество строк, которые нужно объединять с таблицей orders. Таким образом, стоимостной подход позволяет выбирать наиболее эффективный план выполнения запроса, что ускоряет работу SQL-сервера и сокращает время выполнения запросов.
Стоимостной подход - это один из методов оптимизации запросов в SQL. Он основывается на том, что оптимальный план запроса может быть выбран путем оценки стоимости каждого возможного плана и выбора того, который имеет наименьшую стоимость.
Для выполнения данного запроса в SQL сервере может быть несколько возможных планов, например:
1. Сначала выполнить выборку из таблицы customers, затем из orders. Далее объединить результаты с помощью оператора JOIN по customer_id.
2. Сначала выполнить выборку из таблицы orders, затем из customers. Далее объединить результаты с помощью оператора JOIN по customer_id.
3. Использовать индексы на таблицах для выполнения быстрой выборки.
Для выбора наилучшего плана выполнения запроса SQL-сервер оценивает стоимость каждого плана, исходя из статистики таблиц, наличия индексов и других факторов.
Например, если таблица customers содержит много строк и немного соответствующих строк в таблице orders, то выборка из таблицы customers должна быть выполнена первой, чтобы уменьшить количество строк, которые нужно объединять с таблицей orders. Таким образом, стоимостной подход позволяет выбирать наиболее эффективный план выполнения запроса, что ускоряет работу SQL-сервера и сокращает время выполнения запросов.
👍8❤1🔥1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11❤4
#вопросы_с_собеседований
SQL-запрос для поиска n-й по величине зарплаты/платежа или 3-й по величине зарплаты/платежа
Чтобы найти n-ую самую высокую зарплату, вы можете использовать подзапрос с функцией DENSE_RANK() для вычисления ранга каждой зарплаты, а затем отфильтровать результаты, чтобы включить только строку с рейтингом, равным n.
Вы также можете использовать условия LIMIT и OFFSET , чтобы найти n-ую самую высокую зарплату.
SQL-запрос для поиска n-й по величине зарплаты/платежа или 3-й по величине зарплаты/платежа
Чтобы найти n-ую самую высокую зарплату, вы можете использовать подзапрос с функцией DENSE_RANK() для вычисления ранга каждой зарплаты, а затем отфильтровать результаты, чтобы включить только строку с рейтингом, равным n.
Вы также можете использовать условия LIMIT и OFFSET , чтобы найти n-ую самую высокую зарплату.
👍6🔥2