#вопросы_с_собеседований
Какие есть SQL-операторы для составления условий?
-WHERE - используется для фильтрации строк в таблице на основе заданного условия. Например:
- LIKE - используется для поиска строк, которые соответствуют заданному шаблону.
- BETWEEN - используется для выборки строк, значения которых находятся в заданном диапазоне.
- IN - используется для указания множества значений. Он возвращает результат, когда значение соответствует одному из заданных значений.
- IS NULL - оператор IS NULL используется для выборки строк с нулевым значением.
- AND - используется для объединения двух или более условий. Он возвращает результат только тогда, когда оба условия истинны.
- OR - используется для объединения двух или более условий. Он возвращает результат, когда хотя бы одно из условий истинно.
- NOT - используется для инвертирования значения условия. Он возвращает результат, когда условие ложно.
Какие есть SQL-операторы для составления условий?
-WHERE - используется для фильтрации строк в таблице на основе заданного условия. Например:
- LIKE - используется для поиска строк, которые соответствуют заданному шаблону.
- BETWEEN - используется для выборки строк, значения которых находятся в заданном диапазоне.
- IN - используется для указания множества значений. Он возвращает результат, когда значение соответствует одному из заданных значений.
- IS NULL - оператор IS NULL используется для выборки строк с нулевым значением.
- AND - используется для объединения двух или более условий. Он возвращает результат только тогда, когда оба условия истинны.
- OR - используется для объединения двух или более условий. Он возвращает результат, когда хотя бы одно из условий истинно.
- NOT - используется для инвертирования значения условия. Он возвращает результат, когда условие ложно.
👍11🔥1
MySQL: SQRT
Функция SQRT используется для вычисления квадратного корня из числа.
Синтаксис функции выглядит следующим образом:
SQRT(X) - Здесь X - это число, из которого нужно извлечь квадратный корень.
Функция SQRT может использоваться для вычисления квадратного корня из любого числа, в том числе отрицательного.
Применение функции SQRT
Функция SQRT может быть полезна во многих случаях. Например, вы можете использовать ее для вычисления расстояния между двумя точками на плоскости. Для этого нужно вычислить квадрат разности координат по каждой оси, затем сложить эти значения и извлечь квадратный корень из полученной суммы.
Функция SQRT используется для вычисления квадратного корня из числа.
Синтаксис функции выглядит следующим образом:
SQRT(X) - Здесь X - это число, из которого нужно извлечь квадратный корень.
Функция SQRT может использоваться для вычисления квадратного корня из любого числа, в том числе отрицательного.
Применение функции SQRT
Функция SQRT может быть полезна во многих случаях. Например, вы можете использовать ее для вычисления расстояния между двумя точками на плоскости. Для этого нужно вычислить квадрат разности координат по каждой оси, затем сложить эти значения и извлечь квадратный корень из полученной суммы.
👍1🔥1
#вопросы_с_собеседований
Для каких числовых типов недопустимо использовать операции сложения/вычитания?
В SQL некоторые числовые типы не могут быть использованы в операциях сложения и вычитания. Это связано с тем, что эти типы не имеют определенного порядка, поэтому невозможно выполнить арифметические операции с ними.
Типы, для которых недопустимо использовать операции сложения/вычитания в SQL:
- Тип BIT - битовый тип данных, который может принимать только два значения: 0 и 1. Этот тип не поддерживает арифметические операции.
- Тип DATE - тип даты, который также не имеет определенного порядка и не может быть использован в операциях сложения/вычитания.
- Тип TIME - тип времени, который также не имеет определенного порядка и не может быть использован в операциях сложения/вычитания.
- Тип DATETIMEOFFSET - тип даты и времени с информацией о смещении относительно UTC. Этот тип также не имеет определенного порядка и не поддерживает арифметические операции.
Если вы попытаетесь выполнить операцию сложения/вычитания с одним из этих типов, SQL вернет ошибку.
Некоторые другие числовые типы, такие как FLOAT и REAL, могут быть использованы в операциях сложения/вычитания, но могут иметь проблемы с точностью из-за специфики их хранения в памяти компьютера.
Для каких числовых типов недопустимо использовать операции сложения/вычитания?
В SQL некоторые числовые типы не могут быть использованы в операциях сложения и вычитания. Это связано с тем, что эти типы не имеют определенного порядка, поэтому невозможно выполнить арифметические операции с ними.
Типы, для которых недопустимо использовать операции сложения/вычитания в SQL:
- Тип BIT - битовый тип данных, который может принимать только два значения: 0 и 1. Этот тип не поддерживает арифметические операции.
- Тип DATE - тип даты, который также не имеет определенного порядка и не может быть использован в операциях сложения/вычитания.
- Тип TIME - тип времени, который также не имеет определенного порядка и не может быть использован в операциях сложения/вычитания.
- Тип DATETIMEOFFSET - тип даты и времени с информацией о смещении относительно UTC. Этот тип также не имеет определенного порядка и не поддерживает арифметические операции.
Если вы попытаетесь выполнить операцию сложения/вычитания с одним из этих типов, SQL вернет ошибку.
Некоторые другие числовые типы, такие как FLOAT и REAL, могут быть использованы в операциях сложения/вычитания, но могут иметь проблемы с точностью из-за специфики их хранения в памяти компьютера.
👍1🔥1😱1
Какие СУБД вас интересуют?
Anonymous Poll
35%
MySQL
24%
Microsoft SQL Server
70%
PostgreSQL
26%
Oracle
8%
Другое
3%
Посмотреть ответы
👍9
Использование CASE WHEN в сочетании с JOIN
Комбинирование оператора CASE WHEN и JOIN может быть полезно для выполнения более сложных запросов.
Например, у нас есть две таблицы: "orders" и "customers". Таблица "orders" содержит информацию о заказах, включая идентификатор клиента. Таблица "customers" содержит информацию о клиентах, включая их идентификаторы.
1. Чтобы получить список всех заказов и имен клиентов, которые сделали эти заказы, мы можем использовать первый запрос с фото.
2. Однако, если мы хотим добавить условие, чтобы отобразить только заказы, сделанные клиентами, чьи имена начинаются с буквы "A", мы можем использовать оператор CASE WHEN для выполнения этого условия.
Таким образом, использование оператора CASE WHEN в сочетании с JOIN может быть полезно при выполнении сложных запросов, которые требуют условной логики и объединения данных из нескольких таблиц.
Комбинирование оператора CASE WHEN и JOIN может быть полезно для выполнения более сложных запросов.
Например, у нас есть две таблицы: "orders" и "customers". Таблица "orders" содержит информацию о заказах, включая идентификатор клиента. Таблица "customers" содержит информацию о клиентах, включая их идентификаторы.
1. Чтобы получить список всех заказов и имен клиентов, которые сделали эти заказы, мы можем использовать первый запрос с фото.
2. Однако, если мы хотим добавить условие, чтобы отобразить только заказы, сделанные клиентами, чьи имена начинаются с буквы "A", мы можем использовать оператор CASE WHEN для выполнения этого условия.
Таким образом, использование оператора CASE WHEN в сочетании с JOIN может быть полезно при выполнении сложных запросов, которые требуют условной логики и объединения данных из нескольких таблиц.
👍8❤3
#вопросы_с_собеседований
Расскажите о видах индексов
Индексы - это структуры данных, которые ускоряют выполнение запросов к базе данных. Они содержат отображение значений столбцов таблицы на соответствующие строки, что позволяет быстро находить нужные данные.
1. Кластерный индекс - определяется для каждой таблицы только один. Он определяет порядок расположения строк в таблице на основе значений одного или нескольких столбцов.
2. Некластерный индекс - это индекс, который не определяет порядок строк в таблице, а существует отдельно от таблицы. Он представляет собой отображение значений одного или нескольких столбцов на соответствующие строки.
3. Уникальный индекс - уникальный индекс который гарантирует уникальность значений в столбцах, на которые он определен. На таблицу можно определить несколько уникальных индексов.
4. Полнотекстовый индекс - полнотекстовый индекс позволяет быстро искать текстовые данные, основываясь на их содержании. Он может быть определен только на столбцах типа VARCHAR, NVARCHAR и TEXT.
5. XML-индекс - используется для ускорения запросов, связанных с XML-данными. Он может быть определен только на столбцах типа XML.
Расскажите о видах индексов
Индексы - это структуры данных, которые ускоряют выполнение запросов к базе данных. Они содержат отображение значений столбцов таблицы на соответствующие строки, что позволяет быстро находить нужные данные.
1. Кластерный индекс - определяется для каждой таблицы только один. Он определяет порядок расположения строк в таблице на основе значений одного или нескольких столбцов.
2. Некластерный индекс - это индекс, который не определяет порядок строк в таблице, а существует отдельно от таблицы. Он представляет собой отображение значений одного или нескольких столбцов на соответствующие строки.
3. Уникальный индекс - уникальный индекс который гарантирует уникальность значений в столбцах, на которые он определен. На таблицу можно определить несколько уникальных индексов.
4. Полнотекстовый индекс - полнотекстовый индекс позволяет быстро искать текстовые данные, основываясь на их содержании. Он может быть определен только на столбцах типа VARCHAR, NVARCHAR и TEXT.
5. XML-индекс - используется для ускорения запросов, связанных с XML-данными. Он может быть определен только на столбцах типа XML.
👍7❤1
Какая команда открывает транзакцию?
Anonymous Quiz
18%
COMMIT
9%
ROLLBACK
13%
CREATE
50%
BEGIN
9%
Узнать ответ
👍6😱1
Функция CAST
Функция CAST() в MySQL преобразует значение в указанный тип данных. Это очень полезная функция, которая может помочь в решении различных задач. Например, она может быть использована для преобразования значения в DATE, DATETIME, DECIMAL, TIME, CHAR, NCHAR, SIGNED, UNSIGNED, BINARY.
Рассмотрим примеры использования функции CAST(). Предположим, у нас есть таблица с именем "products", которая содержит столбец "price". Если мы хотим преобразовать значения в столбце "price" в тип данных DECIMAL, мы можем воспользоваться функцией CAST() следующим образом:
SELECT CAST(price AS DECIMAL) FROM products;
Таким образом, мы получим значения в столбце "price", преобразованные в тип данных DECIMAL.
Функция CAST() в MySQL преобразует значение в указанный тип данных. Это очень полезная функция, которая может помочь в решении различных задач. Например, она может быть использована для преобразования значения в DATE, DATETIME, DECIMAL, TIME, CHAR, NCHAR, SIGNED, UNSIGNED, BINARY.
Рассмотрим примеры использования функции CAST(). Предположим, у нас есть таблица с именем "products", которая содержит столбец "price". Если мы хотим преобразовать значения в столбце "price" в тип данных DECIMAL, мы можем воспользоваться функцией CAST() следующим образом:
SELECT CAST(price AS DECIMAL) FROM products;
Таким образом, мы получим значения в столбце "price", преобразованные в тип данных DECIMAL.
👍6
Как узнать размер файла с помощью SQL?
Вы можете узнать размер файла, используя функцию DATALENGTH. Эта функция возвращает длину выражения в байтах.
Замените [имя_столбца_с_файлом] на имя столбца, содержащего файл, [имя_таблицы] на имя таблицы, содержащей файл, а [условие] на условие выборки файлов.
Например, если у вас есть таблица Файлы с столбцом Содержимое_файла, и вы хотите узнать размер файла с id 1, обращаемся ко второй части фото.
Вы можете узнать размер файла, используя функцию DATALENGTH. Эта функция возвращает длину выражения в байтах.
Замените [имя_столбца_с_файлом] на имя столбца, содержащего файл, [имя_таблицы] на имя таблицы, содержащей файл, а [условие] на условие выборки файлов.
Например, если у вас есть таблица Файлы с столбцом Содержимое_файла, и вы хотите узнать размер файла с id 1, обращаемся ко второй части фото.
👍4
Крутой Python-пакет на базе ИИ для автоматической генерации SQL-запросов
Фреймворк Vanna позволяет создавать сложные SQL-запросы всего за несколько секунд. Не нужно тратить время на написание этих запросов вручную! Просто задавайте вопросы, и Vanna сама сгенерирует необходимые запросы.
Vanna - это не просто еще один инструмент автоматизации. Она может похвастаться высокой точностью на самых сложных наборах данных, обеспечивая безопасность и конфиденциальность вашей информации. Более того, Vanna обладает самообучающейся способностью, что означает, что ваши запросы будут становиться все более точными по мере использования.
Фреймворк Vanna позволяет создавать сложные SQL-запросы всего за несколько секунд. Не нужно тратить время на написание этих запросов вручную! Просто задавайте вопросы, и Vanna сама сгенерирует необходимые запросы.
Vanna - это не просто еще один инструмент автоматизации. Она может похвастаться высокой точностью на самых сложных наборах данных, обеспечивая безопасность и конфиденциальность вашей информации. Более того, Vanna обладает самообучающейся способностью, что означает, что ваши запросы будут становиться все более точными по мере использования.
👍5🔥2
Отличия MySQL от PostgreSQL. Выбираем что лучше, PostgreSQL или MySQL
В данной статье мы сравним PostgreSQL и MySQL по различным параметрам и запишем их в сравнительную таблицу.
Перейти к статье
В данной статье мы сравним PostgreSQL и MySQL по различным параметрам и запишем их в сравнительную таблицу.
Перейти к статье
👍5🔥1
Пейджинг данных CTE
Пейджинг данных – это процесс разбиения большого объема данных на меньшие части или страницы. Это может быть полезно при работе с большими таблицами, когда нужно извлечь данные только для определенной страницы.
CTE – это временная таблица, которая создается внутри запроса и может быть использована в других частях этого же запроса. CTE часто используется для реализации рекурсивных запросов или для улучшения читаемости и поддерживаемости запросов.
WITH Orders_CTE AS (
SELECT OrderID, CustomerID, OrderDate,
ROW_NUMBER() OVER (ORDER BY OrderDate) AS RowNumber
FROM Orders
)
SELECT OrderID, CustomerID, OrderDate
FROM Orders_CTE
WHERE RowNumber BETWEEN {start} AND {end}
- {start} – начальный номер строки
- {end} – конечный номер строки
Пейджинг данных – это процесс разбиения большого объема данных на меньшие части или страницы. Это может быть полезно при работе с большими таблицами, когда нужно извлечь данные только для определенной страницы.
CTE – это временная таблица, которая создается внутри запроса и может быть использована в других частях этого же запроса. CTE часто используется для реализации рекурсивных запросов или для улучшения читаемости и поддерживаемости запросов.
WITH Orders_CTE AS (
SELECT OrderID, CustomerID, OrderDate,
ROW_NUMBER() OVER (ORDER BY OrderDate) AS RowNumber
FROM Orders
)
SELECT OrderID, CustomerID, OrderDate
FROM Orders_CTE
WHERE RowNumber BETWEEN {start} AND {end}
- {start} – начальный номер строки
- {end} – конечный номер строки
👍9🔥1
Задача повышенной сложности
В базе данных есть таблица "orders" с полями "id" (уникальный идентификатор заказа), "customer_id" (уникальный идентификатор клиента, который сделал заказ), "total_price" (общая стоимость заказа) и "created_at" (дата создания заказа). Необходимо найти все заказы, сделанные клиентом, сумма которых превышает среднюю сумму заказов всех клиентов. Результат должен быть отсортирован по дате создания заказа в порядке убывания.
Решение:
SELECT orders.id , orders.total_price, orders.created_at
FROM orders
WHERE orders.customer_id IN (
SELECT customer_id
FROM orders
GROUP BY customer_id
HAVING AVG(total_price) < (
SELECT AVG(total_price)
FROM orders
)
)
ORDER BY orders.created_at DESC;
В базе данных есть таблица "orders" с полями "id" (уникальный идентификатор заказа), "customer_id" (уникальный идентификатор клиента, который сделал заказ), "total_price" (общая стоимость заказа) и "created_at" (дата создания заказа). Необходимо найти все заказы, сделанные клиентом, сумма которых превышает среднюю сумму заказов всех клиентов. Результат должен быть отсортирован по дате создания заказа в порядке убывания.
Решение:
FROM orders
WHERE orders.customer_id IN (
SELECT customer_id
FROM orders
GROUP BY customer_id
HAVING AVG(total_price) < (
SELECT AVG(total_price)
FROM orders
)
)
ORDER BY orders.created_at DESC;
👍7❤3🔥2
Table Hints в T-SQL
Табличные хинты относятся только к таблицам и представлениям, для которых они указаны. Такие хинты предназначены для определения способа блокировки, указания конкретного индекса, способа обработки данных в таблицах, например, сканирование или поиск.
Некоторые хинты для таблиц:
- INDEX – оптимизатор запросов будет использовать указанный индекс при обработке запроса;
- FORCESEEK – оптимизатор запросов будет использовать только операцию поиска в индексе в качестве пути доступа к данным;
- FORCESCAN – оптимизатор запросов будет использовать только операцию сканирования в индексе в качестве пути доступа к данным;
- ROWLOCK – блокировки строк применяются вместо блокировки страниц или таблиц;
- HOLDLOCK – накладывает дополнительные ограничения на совмещаемую блокировку, удерживая ее до завершения транзакции. Хинт HOLDLOCK равнозначен хинту SERIALIZABLE;
- NOLOCK – разрешает «грязное чтение». Хинт NOLOCK равнозначен хинту READUNCOMMITTED;
- NOEXPAND – указывает, что индексированное представление не расширяется для доступа к базовым таблицам. Такое представление обрабатывается так же, как и таблица с кластеризованным индексом.
Хинты для таблиц указываются в предложении FROM с помощью ключевого слова WITH после названия таблицы или представления.
Табличные хинты относятся только к таблицам и представлениям, для которых они указаны. Такие хинты предназначены для определения способа блокировки, указания конкретного индекса, способа обработки данных в таблицах, например, сканирование или поиск.
Некоторые хинты для таблиц:
- INDEX – оптимизатор запросов будет использовать указанный индекс при обработке запроса;
- FORCESEEK – оптимизатор запросов будет использовать только операцию поиска в индексе в качестве пути доступа к данным;
- FORCESCAN – оптимизатор запросов будет использовать только операцию сканирования в индексе в качестве пути доступа к данным;
- ROWLOCK – блокировки строк применяются вместо блокировки страниц или таблиц;
- HOLDLOCK – накладывает дополнительные ограничения на совмещаемую блокировку, удерживая ее до завершения транзакции. Хинт HOLDLOCK равнозначен хинту SERIALIZABLE;
- NOLOCK – разрешает «грязное чтение». Хинт NOLOCK равнозначен хинту READUNCOMMITTED;
- NOEXPAND – указывает, что индексированное представление не расширяется для доступа к базовым таблицам. Такое представление обрабатывается так же, как и таблица с кластеризованным индексом.
Хинты для таблиц указываются в предложении FROM с помощью ключевого слова WITH после названия таблицы или представления.
👍7
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