⚙️ MySQL разбор функции FIELD
Определение и использование
Функция FIELD() возвращает индексную позицию значения в списке значений.
Эта функция выполняет поиск без учета регистра.
Примечание: Если указанное значение не найдено в списке значений, то эта функция вернет 0. Если значение равно NULL, то эта функция вернет 0.
➡️ Читать дальше
@sqlhub
Определение и использование
Функция FIELD() возвращает индексную позицию значения в списке значений.
Эта функция выполняет поиск без учета регистра.
Примечание: Если указанное значение не найдено в списке значений, то эта функция вернет 0. Если значение равно NULL, то эта функция вернет 0.
➡️ Читать дальше
@sqlhub
💼 Руководство по архитектуре обработки запросов
Компонент Компонент SQL Server Database Engine обрабатывает запросы к различным архитектурам хранения данных, таким как локальные таблицы, секционированные таблицы и таблицы, распределенные по нескольким серверам. В следующих разделах описано, как SQL Server обрабатывает запросы и оптимизирует повторное использование запросов с помощью кэширования плана выполнения.
Режимы выполнения
Компонент SQL Server Database Engine может обрабатывать инструкции Transact-SQL в двух разных режимах:
выполнение в построчном режиме;
выполнение в пакетном режиме.
➡️ Читать дальше
@sqlhub
Компонент Компонент SQL Server Database Engine обрабатывает запросы к различным архитектурам хранения данных, таким как локальные таблицы, секционированные таблицы и таблицы, распределенные по нескольким серверам. В следующих разделах описано, как SQL Server обрабатывает запросы и оптимизирует повторное использование запросов с помощью кэширования плана выполнения.
Режимы выполнения
Компонент SQL Server Database Engine может обрабатывать инструкции Transact-SQL в двух разных режимах:
выполнение в построчном режиме;
выполнение в пакетном режиме.
➡️ Читать дальше
@sqlhub
Как сделать Case Sensitive сравнение в MySQL. Решение
Небинарные строки (CHAR, VARCHAR, TEXT) в MySQL по умолчанию не чувствительны к регистру. Поэтому запрос
Для вывода только одной записи с ‘SPG’ существуют следующие решения:
1. Приведение столбца к типу
2. Выбор чувствительного к регистру набора символов с помощью
Детальную документацию смотрите здесь.
#tips
@sqlhub
Небинарные строки (CHAR, VARCHAR, TEXT) в MySQL по умолчанию не чувствительны к регистру. Поэтому запрос
SELECT * FROM enterprise WHERE company = ‘SPG‘
выведет все три строки. Для вывода только одной записи с ‘SPG’ существуют следующие решения:
1. Приведение столбца к типу
BINARY
(т.к. тип BINARY чувствителен к регистру): SELECT * FROM enterprise WHERE BINARY company = ‘SPG‘;
2. Выбор чувствительного к регистру набора символов с помощью
COLLATE
:SELECT * FROM enterprise WHERE company COLLATE utf8mb4_0900_as_cs = ‘SPG‘;
Детальную документацию смотрите здесь.
#tips
@sqlhub
Выберите корректно составленный запрос с функцией GROUP BY:
Anonymous Quiz
4%
select count(*) from Orders GROUP seller_id;
4%
select seller_id, count(*) from Orders GROUP seller_id;
90%
select seller_id, count(*) from Orders GROUP BY seller_id;
2%
select count(*) from Orders GROUP ON seller_id;
SQL запросы быстро. Шпаргалка Часть 1.
Язык SQL очень прочно влился в жизнь бизнес-аналитиков и требования к кандидатам благодаря простоте, удобству и распространенности. Из собственного опыта могу сказать, что наиболее часто SQL используется для формирования выгрузок, витрин (с последующим построением отчетов на основе этих витрин) и администрирования баз данных. И поскольку повседневная работа аналитика неизбежно связана с выгрузками данных и витринами, навык написания SQL запросов может стать фактором, из-за которого кандидат или получит преимущество, или будет отсеян. Печальная новость в том, что не каждый может рассчитывать получить его на студенческой скамье. Хорошая новость в том, что в изучении SQL нет ничего сложного, это быстро, а синтаксис запросов прост и понятен. Особенно это касается тех, кому уже доводилось сталкиваться с более сложными языками.
Обучение SQL запросам я разделил на три части. Эта часть посвящена базовому синтаксису, который используется в 80-90% случаев. Следующие две части будут посвящены подзапросам, Join’ам и специальным операторам. Цель гайдов: быстро и на практике отработать синтаксис SQL, чтобы добавить его к арсеналу навыков.
➡️ Читать дальше
@sqlhub
Язык SQL очень прочно влился в жизнь бизнес-аналитиков и требования к кандидатам благодаря простоте, удобству и распространенности. Из собственного опыта могу сказать, что наиболее часто SQL используется для формирования выгрузок, витрин (с последующим построением отчетов на основе этих витрин) и администрирования баз данных. И поскольку повседневная работа аналитика неизбежно связана с выгрузками данных и витринами, навык написания SQL запросов может стать фактором, из-за которого кандидат или получит преимущество, или будет отсеян. Печальная новость в том, что не каждый может рассчитывать получить его на студенческой скамье. Хорошая новость в том, что в изучении SQL нет ничего сложного, это быстро, а синтаксис запросов прост и понятен. Особенно это касается тех, кому уже доводилось сталкиваться с более сложными языками.
Обучение SQL запросам я разделил на три части. Эта часть посвящена базовому синтаксису, который используется в 80-90% случаев. Следующие две части будут посвящены подзапросам, Join’ам и специальным операторам. Цель гайдов: быстро и на практике отработать синтаксис SQL, чтобы добавить его к арсеналу навыков.
➡️ Читать дальше
@sqlhub
💻 Экспериментируем с пользовательскими функциями JavaScript на Trino
Trino — это быстрый дистрибутивный механизм SQL-запросов, предназначенный для аналитики больших данных. Он позволяет подключаться ко всем данным и запрашивать их в полном объеме без необходимости копировать их в унифицированную систему хранения.
➡️ Читать дальше
⚙️ Trino
@sqlhub
Trino — это быстрый дистрибутивный механизм SQL-запросов, предназначенный для аналитики больших данных. Он позволяет подключаться ко всем данным и запрашивать их в полном объеме без необходимости копировать их в унифицированную систему хранения.
➡️ Читать дальше
⚙️ Trino
@sqlhub
📖 Алекс Кригель и др. "SQL. Библия пользователя"
Книга уникальна тем, что в каждой главе приводится сравнение реализаций тех или иных запросов на диалектах трех ведущих СУБД. Благодаря этому она представляет собой исчерпывающий и практичный справочник по языку SQL для разработчиков от новичков до профессионалов.
📕 Книга
@sqlhub
Книга уникальна тем, что в каждой главе приводится сравнение реализаций тех или иных запросов на диалектах трех ведущих СУБД. Благодаря этому она представляет собой исчерпывающий и практичный справочник по языку SQL для разработчиков от новичков до профессионалов.
📕 Книга
@sqlhub
⚙️ Хранимые процедуры SQL
Нередко операция с данными представляет набор инструкций, которые необходимо выполнить в определенной последовательности. Например, при добавлении данных покупки товара необходимо внести данные в таблицу заказов. Однако перед этим надо проверить, а есть ли покупаемый товар в наличии. Возможно, при этом понадобится проверить еще ряд дополнительных условий. То есть фактически процесс покупки товара охватывает несколько действий, которые должны выполняться в определенной последовательности. И в этом случае более оптимально будет инкапсулировать все эти действия в один объект - хранимую процедуру (stored procedure).
То есть по сути хранимые процедуры представляют набор инструкций, которые выполняются как единое целое. Тем самым хранимые процедуры позволяют упростить комплексные операции и вынести их в единый объект. Изменится процесс покупки товара, соответственно достаточно будет изменить код процедуры. То есть процедура также упрощает управление кодом.
Также хранимые процедуры позволяют ограничить доступ к данным в таблицах и тем самым уменьшить вероятность преднамеренных или неосознанных нежелательных действий в отношении этих данных.
И еще один важный аспект - производительность. Хранимые процедуры обычно выполняются быстрее, чем обычные SQL-инструкции. Все потому что код процедур компилируется один раз при первом ее запуске, а затем сохраняется в скомпилированной форме.
Для создания хранимой процедуры применяется команда CREATE PROCEDURE или CREATE PROC.
➡️ Читать дальше
@sqlhub
Нередко операция с данными представляет набор инструкций, которые необходимо выполнить в определенной последовательности. Например, при добавлении данных покупки товара необходимо внести данные в таблицу заказов. Однако перед этим надо проверить, а есть ли покупаемый товар в наличии. Возможно, при этом понадобится проверить еще ряд дополнительных условий. То есть фактически процесс покупки товара охватывает несколько действий, которые должны выполняться в определенной последовательности. И в этом случае более оптимально будет инкапсулировать все эти действия в один объект - хранимую процедуру (stored procedure).
То есть по сути хранимые процедуры представляют набор инструкций, которые выполняются как единое целое. Тем самым хранимые процедуры позволяют упростить комплексные операции и вынести их в единый объект. Изменится процесс покупки товара, соответственно достаточно будет изменить код процедуры. То есть процедура также упрощает управление кодом.
Также хранимые процедуры позволяют ограничить доступ к данным в таблицах и тем самым уменьшить вероятность преднамеренных или неосознанных нежелательных действий в отношении этих данных.
И еще один важный аспект - производительность. Хранимые процедуры обычно выполняются быстрее, чем обычные SQL-инструкции. Все потому что код процедур компилируется один раз при первом ее запуске, а затем сохраняется в скомпилированной форме.
Для создания хранимой процедуры применяется команда CREATE PROCEDURE или CREATE PROC.
➡️ Читать дальше
@sqlhub
Миграция кода с Oracle на PostgreSQL: особенности и пути обхода, средства конвертации, вспомогательные модули
Эта статья завершает цикл о миграции с СУБД Oracle на СУБД PostgreSQL. В первых двух статьях рассматривались вопросы и устоявшиеся способы переноса данных из одной СУБД в другую (часть 1, часть 2). В третьей статье представлена часть особенностей, которые нужно учесть при переводе хранимого кода с PL/SQL на PL/pgSQL. В сегодняшнем материале рассматриваются:
- Оставшаяся часть особенностей.
- Адаптация и конвертация кода .
- Выбор средств для конвертации кода.
➡️ Читать дальше
@sqlhub
Эта статья завершает цикл о миграции с СУБД Oracle на СУБД PostgreSQL. В первых двух статьях рассматривались вопросы и устоявшиеся способы переноса данных из одной СУБД в другую (часть 1, часть 2). В третьей статье представлена часть особенностей, которые нужно учесть при переводе хранимого кода с PL/SQL на PL/pgSQL. В сегодняшнем материале рассматриваются:
- Оставшаяся часть особенностей.
- Адаптация и конвертация кода .
- Выбор средств для конвертации кода.
➡️ Читать дальше
@sqlhub
🔥 Полезнейшая Подборка каналов
🦾 Machine learning
@ai_machinelearning_big_data – все о машинном обучении
@data_analysis_ml – все о анализе данных.
@machinelearning_ru – машинное обучении на русском от новичка до профессионала.
@machinelearning_interview – подготовка к собеседования Data Science
@datascienceiot – бесплатные книги Machine learning
@ArtificialIntelligencedl – канал о искусственном интеллекте
@neural – все о нейронных сетях
@machinee_learning – чат о машинном обучении
@datascienceml_jobs - работа ds, ml
🐍 Python
@pythonl – python для датасаентиста
@pro_python_code – python на русском
@python_job_interview – подготовка к Python собеседованию
@python_testit тесты на python
@pythonlbooks - книги Python
@Django_pythonl django
@python_djangojobs - работа Python
☕️ Java
@javatg - Java для програмистов
@javachats Java чат
@java_library - книги Java
@android_its Android разработка
@java_quizes - тесты Java
@Java_workit - работа Java
@progersit - шпаргалки ит
💡 Javascript / front
@javascriptv - javascript изучение
@about_javascript - javascript продвинутый
@JavaScript_testit -тесты JS
@htmlcssjavas - web
@hashdev - web разработка
🦫 Golang
@golang_interview - вопросы и ответы с собеседований по Go. Для всех уровней разработчиков.
@Golang_google - go для разработчиков
@golangtests - тесты и задачи GO
@golangl - чат Golang
@GolangJobsit - вакансии и работа GO
@golang_jobsgo - чат вакансий
@golang_books - книги Golang
@golang_speak - обсуждение задач Go
🐧 Linux
@inux_kal - чат kali linux
@inuxkalii - linux kali
@linux_read - книги linux
👷♂️ IT работа
@hr_itwork - ит-ваканнсии
🔋 SQL
@sqlhub - базы данных
@chat_sql - базы данных чат
🤡It memes
@memes_prog - ит-мемы
⚙️ Rust
@rust_code - язык программирования rust
@rust_chats - чат rust
#️⃣ c# c++
@csharp_ci - c# c++кодинг
@csharp_cplus чат
🦾 Machine learning
@ai_machinelearning_big_data – все о машинном обучении
@data_analysis_ml – все о анализе данных.
@machinelearning_ru – машинное обучении на русском от новичка до профессионала.
@machinelearning_interview – подготовка к собеседования Data Science
@datascienceiot – бесплатные книги Machine learning
@ArtificialIntelligencedl – канал о искусственном интеллекте
@neural – все о нейронных сетях
@machinee_learning – чат о машинном обучении
@datascienceml_jobs - работа ds, ml
🐍 Python
@pythonl – python для датасаентиста
@pro_python_code – python на русском
@python_job_interview – подготовка к Python собеседованию
@python_testit тесты на python
@pythonlbooks - книги Python
@Django_pythonl django
@python_djangojobs - работа Python
☕️ Java
@javatg - Java для програмистов
@javachats Java чат
@java_library - книги Java
@android_its Android разработка
@java_quizes - тесты Java
@Java_workit - работа Java
@progersit - шпаргалки ит
💡 Javascript / front
@javascriptv - javascript изучение
@about_javascript - javascript продвинутый
@JavaScript_testit -тесты JS
@htmlcssjavas - web
@hashdev - web разработка
🦫 Golang
@golang_interview - вопросы и ответы с собеседований по Go. Для всех уровней разработчиков.
@Golang_google - go для разработчиков
@golangtests - тесты и задачи GO
@golangl - чат Golang
@GolangJobsit - вакансии и работа GO
@golang_jobsgo - чат вакансий
@golang_books - книги Golang
@golang_speak - обсуждение задач Go
🐧 Linux
@inux_kal - чат kali linux
@inuxkalii - linux kali
@linux_read - книги linux
👷♂️ IT работа
@hr_itwork - ит-ваканнсии
🔋 SQL
@sqlhub - базы данных
@chat_sql - базы данных чат
🤡It memes
@memes_prog - ит-мемы
⚙️ Rust
@rust_code - язык программирования rust
@rust_chats - чат rust
#️⃣ c# c++
@csharp_ci - c# c++кодинг
@csharp_cplus чат
💡 Оператор PIVOT
Несколько статей будут посвящены тому как в SQL Server реализован оператор PIVOT и UNPIVOT. Начнем с оператора PIVOT. Оператор PIVOT берет нормализованную таблицу и преобразует ее в другой вид, в котором столбцы результирующей таблицы получаются из значений исходной таблицы. Например, предположим, что мы хотим хранить данные о суммарной выручке от продаж за год по каждому из сотрудников.
➡️ Читать дальше
@sqlhub
Несколько статей будут посвящены тому как в SQL Server реализован оператор PIVOT и UNPIVOT. Начнем с оператора PIVOT. Оператор PIVOT берет нормализованную таблицу и преобразует ее в другой вид, в котором столбцы результирующей таблицы получаются из значений исходной таблицы. Например, предположим, что мы хотим хранить данные о суммарной выручке от продаж за год по каждому из сотрудников.
➡️ Читать дальше
@sqlhub
Поменять местами соседние записи
В таблице seat хранятся имена учеников и сведениях об их местах в классе.
Напишите MySQL запрос, который поменяет местами соседних учеников.
Если количество учеников нечётное — последнего ученика никуда пересаживать не надо.
Исходная таблица:
id student
1 Abbot
2 Doris
3 Emerson
4 Green
5 Jeames
Что должно получиться:
id student
1 Doris
2 Abbot
3 Green
4 Emerson
5 Jeames
Решение
SELECT
CASE
WHEN ((SELECT MAX(id) FROM seat)%2 = 1) AND id = (SELECT MAX(id) FROM seat) THEN id
WHEN id%2 = 1 THEN id + 1
ELSE id - 1
END AS id, student
FROM seat
ORDER BY id;
@sqlhub
В таблице seat хранятся имена учеников и сведениях об их местах в классе.
Напишите MySQL запрос, который поменяет местами соседних учеников.
Если количество учеников нечётное — последнего ученика никуда пересаживать не надо.
Исходная таблица:
id student
1 Abbot
2 Doris
3 Emerson
4 Green
5 Jeames
Что должно получиться:
id student
1 Doris
2 Abbot
3 Green
4 Emerson
5 Jeames
Решение
SELECT
CASE
WHEN ((SELECT MAX(id) FROM seat)%2 = 1) AND id = (SELECT MAX(id) FROM seat) THEN id
WHEN id%2 = 1 THEN id + 1
ELSE id - 1
END AS id, student
FROM seat
ORDER BY id;
@sqlhub
Трюк дня. Возвратить 0 для функции
Перепишите запрос так, чтобы он возвратил 0, если для функции SUM не найдено ни одного значения, кроме
И возвратил сумму, если значения найдены.
#tips
SUM
если не найдено ни одного значения в MySQL Перепишите запрос так, чтобы он возвратил 0, если для функции SUM не найдено ни одного значения, кроме
NULLs
. И возвратил сумму, если значения найдены.
SELECT SUM (column_1)
FROM table
WHERE column_2 = ‘Test‘;
Решение будет вечером. #tips
В чем разница между функциями
Единственная разница между функциями
В таких случаях
Тогда как
Например, рассмотрим набор
Для такого набора RANK() вернет
@sqlhub
RANK()
и DENSE_RANK()
? Единственная разница между функциями
RANK()
и DENSE_RANK()
заключается в случаях, когда несколько значений в наборе имеют одинаковый ранг. В таких случаях
RANK()
будет назначать непоследовательные «ранги» значениям в наборе.Тогда как
DENSE_RANK()
будет назначать последовательные ранги значениям в наборе.Например, рассмотрим набор
{25, 25, 50, 75, 75, 100}
. Для такого набора RANK() вернет
{1, 1, 3, 4, 4, 6}
(обратите внимание, что значения 2 и 5 пропущены), тогда как DENSE_RANK()
вернет {1, 1, 2, 3, 3, 4}
.
#вопросы #собеседование@sqlhub
Функция overlay (Databricks SQL)
Заменяет input на replace, который начинается с pos и имеет длину len.
Синтаксис
Копировать
overlay(input, replace, pos[, len])
Копировать
overlay(input PLACING replace FROM pos [FOR len])
Аргументы
input: выражение STRING или BINARY.
replace: выражение того же типа, что и input.
pos: выражение INTEGER.
len: необязательное выражение INTEGER.
Возвращаемое значение
Тип результата соответствует типу input.
Если pos имеет отрицательное значение, отсчет положения начинается с конца. len должно быть иметь значение не меньше 0. len задает длину фрагмента в input, который будет заменен. По умолчанию len имеет значение, совпадающее с длиной replace.
Примеры
SQL
@sqlhub
Заменяет input на replace, который начинается с pos и имеет длину len.
Синтаксис
Копировать
overlay(input, replace, pos[, len])
Копировать
overlay(input PLACING replace FROM pos [FOR len])
Аргументы
input: выражение STRING или BINARY.
replace: выражение того же типа, что и input.
pos: выражение INTEGER.
len: необязательное выражение INTEGER.
Возвращаемое значение
Тип результата соответствует типу input.
Если pos имеет отрицательное значение, отсчет положения начинается с конца. len должно быть иметь значение не меньше 0. len задает длину фрагмента в input, который будет заменен. По умолчанию len имеет значение, совпадающее с длиной replace.
Примеры
SQL
> SELECT overlay('Spark SQL', 'ANSI ', 7, 0);
Spark ANSI SQL
> SELECT overlay('Spark SQL' PLACING '_' FROM 6);
Spark_SQL
> SELECT overlay('Spark SQL' PLACING 'CORE' FROM 7);
Spark CORE
> SELECT overlay('Spark SQL' PLACING 'ANSI ' FROM 7 FOR 0);
Spark ANSI SQL
> SELECT overlay('Spark SQL' PLACING 'tructured' FROM 2 FOR 4);
Structured SQL
> SELECT overlay(encode('Spark SQL', 'utf-8') PLACING encode('_', 'utf-8') FROM 6);
[53 70 61 72 6B 5F 53 51 4C]
@sqlhub
PostgreSQL. Основы языка SQL
В пособии рассматриваются следующие темы:
- Введение в базы данных и SQL
- Создание рабочей среды
- Основные операции с таблицами
- Типы данных СУБД PostgreSQL
- Основы языка определения данных
- Запросы
- Изменение данных
- Индексы
- Транзакции
- Повышение производительности
📓 Книга
@sqlhub
В пособии рассматриваются следующие темы:
- Введение в базы данных и SQL
- Создание рабочей среды
- Основные операции с таблицами
- Типы данных СУБД PostgreSQL
- Основы языка определения данных
- Запросы
- Изменение данных
- Индексы
- Транзакции
- Повышение производительности
📓 Книга
@sqlhub
🏄♀️ 5 примеров атаки SQL-инъекций и их предотвращение
Эта атака позволяет хакерам выполнять вредоносные действия в онлайн-свойствах, где проверка входных данных немного ниже среднего.
Согласно отчету Positive Technology, SQL-инъекция по-прежнему остается одной из основных лазеек в мире.
➡️ Читать дальше
@sqlhub
Эта атака позволяет хакерам выполнять вредоносные действия в онлайн-свойствах, где проверка входных данных немного ниже среднего.
Согласно отчету Positive Technology, SQL-инъекция по-прежнему остается одной из основных лазеек в мире.
➡️ Читать дальше
@sqlhub