Возможно ли использование одновременно двух агрегирующих функций? Пример:
select min(price), max(price) from Orders;
select min(price), max(price) from Orders;
Anonymous Quiz
15%
Да, но данный запрос составлен неверно, надо так: select * from Orders where price IN (min, max);
57%
Да, в результате мы получим минимальную и максимальную стоимости
14%
Да, в результате мы получим стоимости, отсортированные от минимальной к максимальной
14%
Нет, две функции использовать одновременно нельзя
👍8
Функция OLD_PASSWORD и PASSWORD
OLD_PASSWORD - используется для шифрования паролей в MySQL.
Функция использует алгоритм, который был использован в более ранних версиях MySQL. Как правило, эту функцию используют для обеспечения совместимости с более старыми приложениями, которые могут не поддерживать более современные алгоритмы шифрования.
PASSWORD - используется для шифрования пароля пользователя. Она принимает единственный аргумент - строку, которую нужно зашифровать.
Шифрованный результат представляет собой строку из 41 символа, которую можно сохранить в базе данных в качестве зашифрованного пароля.
OLD_PASSWORD - используется для шифрования паролей в MySQL.
Функция использует алгоритм, который был использован в более ранних версиях MySQL. Как правило, эту функцию используют для обеспечения совместимости с более старыми приложениями, которые могут не поддерживать более современные алгоритмы шифрования.
PASSWORD - используется для шифрования пароля пользователя. Она принимает единственный аргумент - строку, которую нужно зашифровать.
Шифрованный результат представляет собой строку из 41 символа, которую можно сохранить в базе данных в качестве зашифрованного пароля.
👍3🔥1
#вопросы_с_собеседований
Как распарсить строку в SQL?
Часто возникает необходимость распарсить строку в SQL запросе, чтобы получить отдельные элементы. Существует несколько способов это сделать.
1. Использование функции SUBSTRING
Для извлечения отдельных элементов из строки можно использовать функцию SUBSTRING.
2. Использование функции CHARINDEX
Для извлечения подстроки из строки можно использовать функцию CHARINDEX.
3. Использование функции PARSENAME
Для извлечения отдельных элементов из строки, разделенных определенным символом, можно использовать функцию PARSENAME.
Как распарсить строку в SQL?
Часто возникает необходимость распарсить строку в SQL запросе, чтобы получить отдельные элементы. Существует несколько способов это сделать.
1. Использование функции SUBSTRING
Для извлечения отдельных элементов из строки можно использовать функцию SUBSTRING.
2. Использование функции CHARINDEX
Для извлечения подстроки из строки можно использовать функцию CHARINDEX.
3. Использование функции PARSENAME
Для извлечения отдельных элементов из строки, разделенных определенным символом, можно использовать функцию PARSENAME.
👍11❤1
DROP VIEW
- это оператор языка SQL, который используется для удаления (удаления) представления базы данных. Представление - это виртуальная таблица, которая не имеет физического существования в базе данных, но может быть использована для упрощения запросов к базе данных.
Чтобы удалить представление, используйте оператор DROP VIEW, за которым следует имя представления, которое нужно удалить. Пример:
DROP VIEW имя_представления;
имя_представления - то, что нужно удалить.
Использование DROP VIEW может быть полезно, если вам больше не нужно определенное представление, и вы хотите освободить место в базе данных. Однако, прежде чем удалить представление, убедитесь, что оно больше не нужно для вашей работы с базой данных.
- это оператор языка SQL, который используется для удаления (удаления) представления базы данных. Представление - это виртуальная таблица, которая не имеет физического существования в базе данных, но может быть использована для упрощения запросов к базе данных.
Чтобы удалить представление, используйте оператор DROP VIEW, за которым следует имя представления, которое нужно удалить. Пример:
DROP VIEW имя_представления;
имя_представления - то, что нужно удалить.
Использование DROP VIEW может быть полезно, если вам больше не нужно определенное представление, и вы хотите освободить место в базе данных. Однако, прежде чем удалить представление, убедитесь, что оно больше не нужно для вашей работы с базой данных.
👍7
MySQL ускорение SQL запросов
Ускорение SQL запросов в MySQL может быть достигнуто следующими способами:
1. Индексы: использование индексов может ускорить поиск и сортировку данных в ваших таблицах.
2. Оптимизация структуры таблиц: важно убедиться, что структура таблиц оптимизирована для выполнения запросов.
3. Оптимизация запросов: проверьте ваши запросы на оптимизацию, убедитесь, что вы используете правильные операторы JOIN и индексы для улучшения производительности.
4. Кэширование данных: использование кэширования данных может ускорить выполнение повторяющихся запросов.
5. Использование представлений: использование представлений может упростить запросы и улучшить их читаемость.
6. Ограничение размера выборки: используйте оператор LIMIT, чтобы выбрать только необходимые данные, это уменьшит время выполнения запроса.
7. Минимизация дубликатов данных: дубликаты данных могут увеличить размер таблицы и уменьшить производительность запросов. Удаляйте дубликаты данных или используйте оптимизированные структуры данных, такие как нормализованные таблицы.
8. Оптимизация памяти: оптимизируйте использование памяти вашей базы данных, чтобы уменьшить время обработки запросов.
9. Мониторинг производительности: важен для определения причин низкой производительности и для поиска способов ее улучшения. Он включает в себя слежение за показателями, такими как загруженность процессора, использование памяти, время ответа на запросы и т. д.
10. Использование индексов: используйте индексы, чтобы ускорить поиск данных в таблице. Обеспечьте, чтобы ваши индексы были актуальными и эффективными.
Ускорение SQL запросов в MySQL может быть достигнуто следующими способами:
1. Индексы: использование индексов может ускорить поиск и сортировку данных в ваших таблицах.
2. Оптимизация структуры таблиц: важно убедиться, что структура таблиц оптимизирована для выполнения запросов.
3. Оптимизация запросов: проверьте ваши запросы на оптимизацию, убедитесь, что вы используете правильные операторы JOIN и индексы для улучшения производительности.
4. Кэширование данных: использование кэширования данных может ускорить выполнение повторяющихся запросов.
5. Использование представлений: использование представлений может упростить запросы и улучшить их читаемость.
6. Ограничение размера выборки: используйте оператор LIMIT, чтобы выбрать только необходимые данные, это уменьшит время выполнения запроса.
7. Минимизация дубликатов данных: дубликаты данных могут увеличить размер таблицы и уменьшить производительность запросов. Удаляйте дубликаты данных или используйте оптимизированные структуры данных, такие как нормализованные таблицы.
8. Оптимизация памяти: оптимизируйте использование памяти вашей базы данных, чтобы уменьшить время обработки запросов.
9. Мониторинг производительности: важен для определения причин низкой производительности и для поиска способов ее улучшения. Он включает в себя слежение за показателями, такими как загруженность процессора, использование памяти, время ответа на запросы и т. д.
10. Использование индексов: используйте индексы, чтобы ускорить поиск данных в таблице. Обеспечьте, чтобы ваши индексы были актуальными и эффективными.
👍5🔥1
Join Hints в T-SQL
Хинт (hint) – это указание оптимизатору запросов, которое переопределяет его поведение по умолчанию на время выполнения SQL инструкции.
С помощью Join Hints мы можем влиять на выбор алгоритма физического соединения таблиц.
Существуют следующие хинты:
LOOP – указывает, что соединение будет выполнено с помощью алгоритма Nested Loops (вложенные циклы);
HASH – указывает, что соединение будет выполнено с помощью алгоритма Hash Match (хэш-соединение);
MERGE – указывает, что соединение будет выполнено с помощью алгоритма Merge (соединение слиянием);
REMOTE – указывает, что соединение будет выполнено на стороне правой таблицы, если она расположена удаленно. Обычно это используется, когда таблица слева является локальной, а таблица справа удаленной и в ней гораздо больше строк, чем в левой таблице.
Правила:
1. Если правая таблица является локальной, соединение выполняется локально;
2. Если обе таблицы являются удаленными, но из разных источников данных, REMOTE вызывает выполнение соединения на стороне правой таблицы;
3. Если обе таблицы являются удаленными таблицами из одного источника данных, REMOTE не требуется;
4. Аргумент REMOTE может быть использован только при операциях INNER JOIN.
Хинт (hint) – это указание оптимизатору запросов, которое переопределяет его поведение по умолчанию на время выполнения SQL инструкции.
С помощью Join Hints мы можем влиять на выбор алгоритма физического соединения таблиц.
Существуют следующие хинты:
LOOP – указывает, что соединение будет выполнено с помощью алгоритма Nested Loops (вложенные циклы);
HASH – указывает, что соединение будет выполнено с помощью алгоритма Hash Match (хэш-соединение);
MERGE – указывает, что соединение будет выполнено с помощью алгоритма Merge (соединение слиянием);
REMOTE – указывает, что соединение будет выполнено на стороне правой таблицы, если она расположена удаленно. Обычно это используется, когда таблица слева является локальной, а таблица справа удаленной и в ней гораздо больше строк, чем в левой таблице.
Правила:
1. Если правая таблица является локальной, соединение выполняется локально;
2. Если обе таблицы являются удаленными, но из разных источников данных, REMOTE вызывает выполнение соединения на стороне правой таблицы;
3. Если обе таблицы являются удаленными таблицами из одного источника данных, REMOTE не требуется;
4. Аргумент REMOTE может быть использован только при операциях INNER JOIN.
👍5
#вопросы_с_собеседований
Почему стоит пользоваться PDO для работы с базой данных?
Безопасность
PDO предоставляет встроенные механизмы защиты от SQL-инъекций, которые являются одним из наиболее распространенных способов взлома веб-приложений. Использование подготовленных запросов в PDO позволяет избежать SQL-инъекций и значительно повысить безопасность вашего приложения.
Поддержка нескольких типов баз данных
PDO обеспечивает унифицированный API для работы с различными типами баз данных, такими как MySQL, PostgreSQL, SQLite и др. Это означает, что вы можете использовать один и тот же код для работы с разными базами данных без необходимости переписывать его для каждой отдельной базы данных.
Повторное использование кода
PDO позволяет повторно использовать код благодаря использованию параметров. Вы можете создать один раз запрос, а затем использовать его многократно с разными параметрами. Это гораздо удобнее, чем писать отдельные запросы для каждого случая.
Почему стоит пользоваться PDO для работы с базой данных?
Безопасность
PDO предоставляет встроенные механизмы защиты от SQL-инъекций, которые являются одним из наиболее распространенных способов взлома веб-приложений. Использование подготовленных запросов в PDO позволяет избежать SQL-инъекций и значительно повысить безопасность вашего приложения.
Поддержка нескольких типов баз данных
PDO обеспечивает унифицированный API для работы с различными типами баз данных, такими как MySQL, PostgreSQL, SQLite и др. Это означает, что вы можете использовать один и тот же код для работы с разными базами данных без необходимости переписывать его для каждой отдельной базы данных.
Повторное использование кода
PDO позволяет повторно использовать код благодаря использованию параметров. Вы можете создать один раз запрос, а затем использовать его многократно с разными параметрами. Это гораздо удобнее, чем писать отдельные запросы для каждого случая.
👍3
Правое соединение в SQL Server
Правое соединение в SQL Server (также известное как RIGHT JOIN) используется для объединения двух таблиц вместе, чтобы получить все строки из правой таблицы и соответствующие строки из левой таблицы. Если нет совпадений, то возвращается значение NULL вместо результатов.
Однако, правое соединение может быть менее эффективным, чем другие типы соединений, такие как внутреннее соединение или левое соединение. Поэтому, перед использованием правого соединения, следует тщательно обдумать свои требования и сделать выбор наиболее подходящего типа соединения.
Правое соединение в SQL Server (также известное как RIGHT JOIN) используется для объединения двух таблиц вместе, чтобы получить все строки из правой таблицы и соответствующие строки из левой таблицы. Если нет совпадений, то возвращается значение NULL вместо результатов.
Однако, правое соединение может быть менее эффективным, чем другие типы соединений, такие как внутреннее соединение или левое соединение. Поэтому, перед использованием правого соединения, следует тщательно обдумать свои требования и сделать выбор наиболее подходящего типа соединения.
👍3
Индекс SP-GIST
Индекс SP-GIST - это тип индекса, используемый в PostgreSQL для улучшения производительности поиска в геоданных и других многомерных данных.
Индекс SP-GIST разбивает пространство данных на маленькие области, называемые "ячейками", и строит по ним дерево. Каждая ячейка может содержать несколько объектов, и запросы на поиск объектов могут быть выполнены путем просмотра только тех ячеек, где могут находиться искомые объекты.
Создание индекса может быть выполнено с помощью оператора CREATE INDEX. Также индекс может быть использован для выполнения запросов на поиск объектов в многомерных данных.
Индекс SP-GIST - это тип индекса, используемый в PostgreSQL для улучшения производительности поиска в геоданных и других многомерных данных.
Индекс SP-GIST разбивает пространство данных на маленькие области, называемые "ячейками", и строит по ним дерево. Каждая ячейка может содержать несколько объектов, и запросы на поиск объектов могут быть выполнены путем просмотра только тех ячеек, где могут находиться искомые объекты.
Создание индекса может быть выполнено с помощью оператора CREATE INDEX. Также индекс может быть использован для выполнения запросов на поиск объектов в многомерных данных.
👍3
Дана следующая таблица:
A)
| OrderID | CustomerID | OrderDate | TotalAmount |
|---------|------------|------------|-------------|
| 1 | 1001 | 2022-05-01 | 150.00 |
| 2 | 1002 | 2022-06-15 | 250.00 |
| 3 | 1001 | 2022-07-20 | 100.00 |
| 4 | 1003 | 2022-08-10 | 300.00 |
| 5 | 1002 | 2022-09-05 | 200.00 |
Какой из следующих SQL запросов отберет заказы, сделанные покупателем с ID равным 1001?A)
SELECT * FROM Orders WHERE CustomerID = 1001
B) SELECT * FROM Orders WHERE CustomerID = '1001'
C) SELECT * FROM Orders WHERE CustomerID = '1001' ORDER BY OrderDate DESC
D) SELECT * FROM Orders WHERE CustomerID = 1001 AND TotalAmount > 200.00❤1👍1
👍6
Возможности SQLite
Частичные индексы (Partial Indexes)
При построении индекса можно указать условие попадания строки в индекс, к примеру, одна из колонок не пустая, а другая равна заданному значению.
Индексы на выражение (Indexes On Expressions)
Если в запросах к таблице часто используется выражение, то можно построить индекс по нему. Однако следует иметь в виду, что пока оптимизатор не очень гибок и перестановка столбцов в выражении приведет к отказу от использования индекса.
Вычисляемые колонки (Generated Columns)
Если данные столбца представляют собой результат вычисления выражения по другим столбцам, то можно создать виртуальный столбец. Есть два вида: VIRTUAL (вычисляется каждый раз при чтении таблицы и не занимает места) и STORED (вычисляется при записи данных в таблицу и место занимает). Разумеется записывать данные в такие столбцы напрямую нельзя.
R-Tree индекс
Индекс предназначен для быстрого поиска в диапазоне значений/вложенности объектов, т.е. задачи типичной для гео-систем, когда объекты-прямоугольники заданы своей позицией и размером и требуется найти все объекты, которые пересекаются с текущим. Данный индекс реализован в виде виртуальной таблицы (см. ниже) и это индекс только по своей сути. Для поддержки R-Tree индекса требуется собрать SQLite с флагом SQLITE_ENABLE_RTREE (по умолчанию не установлен).
Частичные индексы (Partial Indexes)
При построении индекса можно указать условие попадания строки в индекс, к примеру, одна из колонок не пустая, а другая равна заданному значению.
Индексы на выражение (Indexes On Expressions)
Если в запросах к таблице часто используется выражение, то можно построить индекс по нему. Однако следует иметь в виду, что пока оптимизатор не очень гибок и перестановка столбцов в выражении приведет к отказу от использования индекса.
Вычисляемые колонки (Generated Columns)
Если данные столбца представляют собой результат вычисления выражения по другим столбцам, то можно создать виртуальный столбец. Есть два вида: VIRTUAL (вычисляется каждый раз при чтении таблицы и не занимает места) и STORED (вычисляется при записи данных в таблицу и место занимает). Разумеется записывать данные в такие столбцы напрямую нельзя.
R-Tree индекс
Индекс предназначен для быстрого поиска в диапазоне значений/вложенности объектов, т.е. задачи типичной для гео-систем, когда объекты-прямоугольники заданы своей позицией и размером и требуется найти все объекты, которые пересекаются с текущим. Данный индекс реализован в виде виртуальной таблицы (см. ниже) и это индекс только по своей сути. Для поддержки R-Tree индекса требуется собрать SQLite с флагом SQLITE_ENABLE_RTREE (по умолчанию не установлен).
👍2